单片机课后习题解答_第1页
单片机课后习题解答_第2页
单片机课后习题解答_第3页
单片机课后习题解答_第4页
单片机课后习题解答_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章第二章 单片机结构及原理单片机结构及原理 1 1 MCS 51MCS 51 单片机内部包含哪些主要功能部件 它们的作用是什么 单片机内部包含哪些主要功能部件 它们的作用是什么 答 1 一个 8bit CPU 是微处理器的核心 是运算和逻辑计算的中心 2 片内震荡器及时钟电路 提供标准时钟信号 所有动作都依据此进行 3 4K ROM 程序存贮器 存贮程序及常用表格 4 128B RAM 数据存贮器 存贮一些中间变量和常数等 5 两个 16bit 定时器 计数器 完全硬件定时器 6 32 根可编程 I O 口线 标准 8 位双向 4 个 I O 接口 每一条 I O 线都能独立地作输 入或输出 7 一个可编程全双工串行口 8 五个中断源 2 2 什么是指令 什么是程序 什么是指令 什么是程序 答 指令是规定计算机执行某种操作的命令 程序是根据任务要求有序编排指令的集合 3 3 如何认识 如何认识 89S51 5289S51 52 存储器空间在物理结构上可以划分为存储器空间在物理结构上可以划分为 4 4 个空间 而在逻辑上又可以划分为个空间 而在逻辑上又可以划分为 3 3 个空间 个空间 答 89S51 52 存储器空间在物理结构上设有 个存储器空间 片内程序存储器 片外程序存 储器 片内数据存储器 片外数据存储器 在逻辑上有 个存储器地址空间 片内 片外统一的 64KB 程序存储器地址空间 片内 256 数据存储器地址空间 片外 64 的数据存储器地址空间 4 4 开机复位后 开机复位后 CPUCPU 使用的是哪组工作寄存器 他们的地址是多少 使用的是哪组工作寄存器 他们的地址是多少 CPUCPU 如何确定和改变当前工如何确定和改变当前工 作寄存器组 作寄存器组 答 开机复位后 CPU 使用的是第 0 组工作寄存器 地址为 00H 07H CPU 通过改变状态字寄存 器 PSW 中的 RS0 和 RS1 来确定工作寄存器组 5 5 什么是堆栈 堆栈有何作用 在程序设计时 有时为什么要对堆栈指针 什么是堆栈 堆栈有何作用 在程序设计时 有时为什么要对堆栈指针 SPSP 重新赋值 如果重新赋值 如果 CPUCPU 在操作中要使用两组工作寄存器 在操作中要使用两组工作寄存器 SPSP 应该多大 应该多大 答 堆栈是一个特殊的存储区 主要功能是暂时存放数据和地址 通常用来保护断点和现场 堆 栈指针 SP 复位后指向 07H 单元 00H 1FH 为工作寄存器区 20H 2FH 为位寻址区 这些单元有 其他功能 因此在程序设计时 需要对 SP 重新赋值 如果 CPU 在操作中要使用两组工作寄存器 SP 应该至少设置为 0FH 6 6 89S51 5289S51 52 的时钟周期 机器周期 指令周期是如何分配的 当振荡频率为的时钟周期 机器周期 指令周期是如何分配的 当振荡频率为 8MHz8MHz 时 一个单片时 一个单片 机周期为多少微秒 机周期为多少微秒 答 时钟周期为时钟脉冲频率的倒数 他是单片机中最基本的 最小的时间单位 机器周期是指 完成一个基本操作所需要的时间 一个机器周期由 12 个时钟周期组成 指令周期是执行一条指令 所需要的时间 由若干个机器周期组成 若 fosc 8MHz 则一个机器周期 1 8 12 s 1 5 s 7 7 89S51 5289S51 52 扩展系统中 片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生扩展系统中 片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生 总线冲突 总线冲突 答 访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间 8 8 程序状态字寄存器 程序状态字寄存器 PSWPSW 的作用是什么 常用状态标志有哪些位 作用是什么 的作用是什么 常用状态标志有哪些位 作用是什么 答 程序状态字 PSW 是 8 位寄存器 用于存放程序运行的状态信息 PSW 中各位状态通常是在指 令执行的过程中自动形成的 但也可以由用户根据需要采用传送指令加以改变 各个标志位的意 义如下 PSW 7 Cy 进位标志位 1 PSW 6 AC 辅助进位标志位 又称为半进位标志位 PSW 5 F0 用户标志位 PSW 4 PSW 3 RS1 和 RS0 寄存器组选择位 PSW 2 OV 溢出标志位 PSW 1 空缺位 此位未定义 PSW 0 P 奇偶校验位 9 9 位地址 位地址 7CH7CH 和字节地址和字节地址 7CH7CH 有何区别 位地址有何区别 位地址 7CH7CH 具体在内存中什么位置 具体在内存中什么位置 答 字节地址 7CH 是片内数据存储器中的一个地址单元 该地址单元中可以存放 8 位二进制数 位地址 7CH 是内部数据存储器中位寻址区中的一位 该地址单元中可以存放 1 位二进制数 位地 址 7CH 具体在片内数据存储器字节地址为 2FH 中的第 4 位 2FH 4 1010 89S51 5289S51 52 中中 4 4 个个 I OI O 端口的作用是什么 端口的作用是什么 89S51 5289S51 52 的片外三总线是如何分配的 的片外三总线是如何分配的 答 I O 端口是单片机与外界联系的重要通道 实现与外部设备的信息的传输 总线分配 片外 数据总线 8 根 通过 P0 口输出 片外地址总线 16 根 通过 P0 口 低 8 位 和 P2 口 高 8 位 输出 片外控制总线 PSEN ALE RD WR EA 主要通过 P3 口 1111 89S51 5289S51 52 中中 4 4 个个 I OI O 端口在结构上有何异同 端口在结构上有何异同 89S51 52 单片机的 个 I O 口在结构上是基本相同的 但又各具特点 这四个端口都是 位 双向口 每个端口都包括一个锁存器 一个输出驱动器和输入缓冲器 在无片外扩展存储器的系 统中 这四个端口的每一位都可以作为双向通用 I O 端口使用 在作为一般的通用 I O 输入时 都必须先向锁存器写入 使输出驱动场效应管 FET 截止 以免误读数据 各自特点如下 1 P0 口为双向 8 位三态 I O 口 它既可作为通用 I O 口 又可作为外部扩展时的数据总 线及低 8 位地址总线的分时复用口 作为通用 I O 口时 输出数据可以得到锁存 不需外接专用 锁存器 输入数据可以得到缓冲 增加了数据输入的可靠性 每个引脚可驱动 8 个 TTL 负载 2 P1 口为 8 位准双向 I O 口 内部具有上拉电阻 一般作通用 I O 口使用 它的每一位 都可以分别定义为输入线或输出线 作为输入时 锁存器必须置 1 每个引脚可驱动 4 个 TTL 负 载 3 P2 口为 8 位准双向 I O 口 内部具有上拉电阻 可直接连接外部 I O 设备 它与地址 总线高 8 位复用 可驱动 4 个 TTL 负载 一般作为外部扩展时的高 8 位地址总线使用 4 P3 口为 8 位准双向 I O 口 内部具有上拉电阻 它是双功能复用口 每个引脚可驱动 4 个 TTL 负载 作为通用 I O 口时 功能与 P1 口相同 常用第二功能 1212 复位的作用是什么 有几种复位方法 复位后单片机的状态如何 复位的作用是什么 有几种复位方法 复位后单片机的状态如何 答 复位是单片机的初始化操作 单片机在 RST 引脚产生两个机器周期 即 24 个时钟周期 以上 的高电平即可实现复位 主要的复位方法有上电自动复位和按键手动复位两种 按键手动复位又 分 按键电平复位和按键脉冲复位 第三章第三章 指令系统指令系统 1 1 简述下列名词术语的基本概念 指令 指令系统 程序 汇编语言指令 简述下列名词术语的基本概念 指令 指令系统 程序 汇编语言指令 答 指令 规定单片机进行某种操作的命令称为指令 指令系统 单片机能够执行的各种指令的集合 程序 一系列指令的有序集合称为程序 汇编语言指令 用助记符形式来表示机器指令 2 2 80C5180C51 单片机有哪几种寻址方式 这几种寻址方式是如何寻址的 单片机有哪几种寻址方式 这几种寻址方式是如何寻址的 答 共 7 种寻址方式 分别为 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 变址寻址 位寻址和相对寻址 寄存器寻址方式 由指令指出某一寄存器的内容做为操作数 直接寻址方式 指令中操作数直接以单元地址的形式给出 2 寄存器间接寻址方式 寄存器间接寻址方式 寄存器中存放的则是操作数的地址 即操作数 是通过寄存器间接得到的 立即寻址方式 操作数在指令中直接给出 变址寻址方式 变址寻址是为了访问程序存储器中的数据和表格 MCS 51 的变址寻址是以 DPTR 或 PC 作基址寄存器 以累加器 A 作变址寄存器 并以两者内容相加形成的 16 位地址做为操 作数地址 以达到访问数据和表格的目的 位寻址方式 指对片内 RAM 的位寻址区和某些可寻址的特殊功能寄存器进行位操作的寻址方 式 相对寻址方式 相对寻址方式是为解决程序转移而专门设置的 为转移指令所采用 3 3 要访问特殊功能寄存器和片外数据寄存器 应采用哪些寻址方式 要访问特殊功能寄存器和片外数据寄存器 应采用哪些寻址方式 答 访问特殊功能寄存器可以采用直接寻址 立即寻址 寄存器寻址和位寻址 针对可以进行位 寻址的特殊功能寄存器 方式 访问片外数据存储器可采用寄存器间接寻址方式 4 4 80C5180C51 单片机的指令系统可以分为哪几类 说明各指令的功能 单片机的指令系统可以分为哪几类 说明各指令的功能 答 51 单片机指令系统按功能可分为 5 类 1 数据传送指令 主要进行数据的传送 交换等 2 算术运算指令 主要进行基本的加减乘除运算 3 逻辑运算指令 主要实现逻辑运算与移位运算 4 控制转移指令 主要是实现对程序流程的控制 5 位操作指令 5 5 外部数据传送指令有哪几条 有和区别 外部数据传送指令有哪几条 有和区别 答 外部数据传送指令有读指令和写指令两类 每类指令的寻址范围不同 分别为 读外部存储器指令 MOVXA Ri 寻址范围为 256 字节 MOVXA DPTR 寻址范围为 64K 字节 写外部存储器指令 MOVX Ri A 寻址范围为 256 字节 MOVX DPTR A 寻址范围为 64K 字节 6 6 在 在 89S5189S51 片内片内 RAMRAM 中 已知 中 已知 30H30H 38H 38H 38H38H 40H 40H 40H40H 48H 48H 48H48H 90H 90H 请分别分 请分别分 析下段程序按序执行后的结果 析下段程序按序执行后的结果 MOVA 40H A 48H MOV R0 A R0 48H MOVP1 0FFH P1 FFH MOV R0 30H 48H 38H MOVDPTR 1246H DPTR 1246H MOV40H 38H 40H 40H MOVR0 30H R0 38H MOV90H R0 90H 38H MOV 48H 30H 48H 30H MOVA R0 A 40H MOVP2 P1 P2 38H 7 7 略 略 8 8 DADAA A 指令的作用是什么 怎样使用 指令的作用是什么 怎样使用 答 对十进制 BCD 数作加法时进行调整 当结果的低 4 位 A0 A3 9 或半进位 AC 1 则 A0 A3 6 否则不加 当结果的高 4 位 A4 A7 9 或进位 CY 1 则 A4 A7 6 否则不加 这 条指令是在进行 BCD 码加法运算时 跟在 ADD 和 ADDC 指令之后 用来对 BCD 码的加法运算 结果自动进行修正 使其仍为 BCD 码表示形式 9 9 试编程将片外数据存储器 试编程将片外数据存储器 60H60H 中的内容传送到片内中的内容传送到片内 RAM54HRAM54H 单元中 单元中 答 MOVR0 60H 3 MOVXA R0 MOV54H A 1010 试编程将寄存器 试编程将寄存器 R7R7 的内容传送到的内容传送到 R1R1 中去 中去 答 MOVA R7 MOVR1 A 1111 已知当前 已知当前 PCPC 值为值为 210H210H 请用两种方法将程序存储器 请用两种方法将程序存储器 2F0H2F0H 中的常数送入累加器中的常数送入累加器 A A 中 中 答 1 以程序计数器 PC 作为基址寄存器 MOVA 0E0H MOVCA A PC 2 以数据指针 DPTR 作为基址寄存器 MOVDPTR 02F0H MOVA 00H MOVCA A DPTR 1212 试说明下段程序中每条指令的作用 并分析当指令执行完后 试说明下段程序中每条指令的作用 并分析当指令执行完后 R0R0 中的内容是什么 中的内容是什么 MOVR0 0A7H R0 A7H 立即数送寄存器 R0 XCHA R0 A A7H 累加器 A 中的数据与 R0 中的数据进行交换 SWAPA A 7AH 累加器 A 中的高低四位进行交换 XCHA R0 R0 7AH 数据交换回 R0 1313 请用两种方法实现累加器 请用两种方法实现累加器 A A 与寄存器与寄存器 B B 的内容交换 的内容交换 答 1 MOVR0 A MOVA B MOVB R0 2 MOVR0 B XCHA R0 1414 试编程将片外 试编程将片外 RAMRAM 中中 40H40H 单元的内容与单元的内容与 R1R1 的内容交换 的内容交换 答 MOVR0 40H MOVXA R0 XCHA R1 MOVX R0 A 1515 已知 已知 A 0C9HA 0C9H B 8DHB 8DH CY 1CY 1 执行指令 ADDCA B 结果如何 A 57H CY 1 OV 1 AC 1 P 1 执行指令 SUBBA B 结果如何 A 3BH CY 0 AC 1 OV 1 1616 试编程将片外 试编程将片外 RAMRAM 中中 30H30H 和和 31H31H 单元中的内容相乘 结果存放在单元中的内容相乘 结果存放在 32H32H 低位 和 低位 和 33H33H 高位 高位 单元中 单元中 答 MOVR0 30H MOVXA R0 MOVB A INCR0 MOVXA R0 MULAB INCR0 MOVX R0 A MOVA B INCR0 MOVX R0 A 4 1717 试用 试用 3 3 种方法将累加器种方法将累加器 A A 中的无符号数乘中的无符号数乘 2 2 答 1 MOVR0 A ADD A R0 2 MOVB 2 MULAB 3 RLA 1818 分析依次执行下列指令的结果 分析依次执行下列指令的结果 MOV30H 0A4H 30H A4H MOVA 0D6H A D6H MOVR0 30H R0 30H MOVR2 47H R2 47H ANLA R2 A 46H ORLA R0 A E6H SWAPA A 6EH CPLA A 91H XRLA 0FFH A 6EH ORL30H A 30H EEH 1919 求下列指令执行后 累加器 求下列指令执行后 累加器 A A 及及 PSWPSW 中进位中进位 CYCY 奇偶位 奇偶位 P P 和溢出位和溢出位 OVOV 的值 的值 1 1 当 当 A 5BHA 5BH 时时 ADDADDA A 8CH 8CH 2 2 当 当 A 5BHA 5BH 时时 ANLANLA A 7AH 7AH 3 3 当 当 A 5BHA 5BH 时时 XRLXRLA A 7FH 7FH 4 4 当 当 A 5BHA 5BH CY 1CY 1 时时 SUBBSUBBA A 0E8H 0E8H 答 1 A E7H CY 1 P 0 OV 0 2 A 5AH P 0 3 A 24H P 0 4 A 72H CY 1 P 0 OV 0 2020 把累加器 把累加器 A A 中的低中的低 4 4 位数据送到外部数据存储器的位数据送到外部数据存储器的 2000H2000H 单元 单元 答 ANLA OFH MOVDPTR 2000H MOVX DPTR A 2121 试说明指令 试说明指令 CJNECJNE R1 R1 7AH 7AH 10H10H 的作用 若本指令地址为的作用 若本指令地址为 250H250H 其转移地址是多少 其转移地址是多少 答 指令作用 如果以 R1 内容为地址的单元中的数据等于 7AH 则程序顺序执行 否则转移后继 续执行 若本指令地址为 250H 则转移地址为 250H 03H 10H 263H 2222 将累加器 将累加器 A A 中的数据由中的数据由 0 0 递增 加到递增 加到 5050 结果在累加器 结果在累加器 A A 中 中 答 CLRA MOV R0 50 L1 INCA DJNZR0 L1 2323 试说明压栈指令和弹栈指令的作用及执行过程 试说明压栈指令和弹栈指令的作用及执行过程 答 压栈 入栈或进栈 指令的作用是将数据存入堆栈中 其执行过程是先将堆栈指针 SP 的内容 加 1 然后将直接地址单元中的数据压入 SP 指向的单元中 若数据已推入堆栈 则 SP 指向最后 推入数据所在的存储单元 即指向栈顶 弹栈 出栈 指令的作用是将数据从堆栈中取出 其执行过程为先将堆栈指针 SP 所指出单元 的内容送入直接寻址单元中 然后将 SP 的内容减 1 此时 SP 指向新的栈顶 5 2424 下述程序执行后 下述程序执行后 SP SP A A B B ORG2000H MOVSP 40H MOVA 30H LCALL250H 下条指令地址 2008H 送 41H 42H SP 42H ADDA 10H MOVB A 地址为 200AH L1 SJMPL1 ORG250H MOVDPTR 200AH PUSHDPL SP 1 43H DPL 43H PUSHDPH SP 1 44H DPH 44H RET 200AH PC 答 上述程序执行后 SP 42H A 30H B 30H 2525 发光二极管点亮规律 先是第 1 和第 8 个亮 延时一段时间后 第 2 和第 7 个亮 延时后 再是第 3 和第 6 个亮 延时后 最后是第 4 和第 5 个点亮 延时后循环 2626 若系统晶振频率为 若系统晶振频率为 6MHz6MHz 求子程序 求子程序 DELAYDELAY 的延时时间 若想加长或缩短时间 应该怎样修改 的延时时间 若想加长或缩短时间 应该怎样修改 答 DELAY MOVR2 0FAH L1 MOVR3 0FAH L2 DJNZR3 L2 DJNZ R2 L1 RET 总时间计算 T 4 s 250 4 s 4 s 250 4 s 251 008ms 估算 T 250 4 s 250 250ms 若想加长延时时间 可以增加循环次数或再加一重循环 若想减小延时时间 可以减少循环次数或较少一重循环 2727 P1P1 口连接口连接 8 8 个共阳极连接的发光二极管 是编制灯亮移位程序 个共阳极连接的发光二极管 是编制灯亮移位程序 答 MOVA 0FEH L1 MOVP1 A RLA LCALLDELAY DELAY 子程序同上题 SJMPL1 2828 试编一程序 将外部数据存储器 试编一程序 将外部数据存储器 2100H2100H 单元中的高单元中的高 4 4 位置位置 1 1 其余位清 其余位清 0 0 答 MOVDPTR 2100H MOVXA DPTR ORLA 0F0H ANLA 0F0H MOVX DPTR A 2929 试编程将片内数据存储器 试编程将片内数据存储器 40H40H 单元的第单元的第 0 0 为和第为和第 7 7 位置位置 1 1 其余取反 其余取反 答 MOVA 40H CPLA SETBACC 0 SETBACC 7 MOV40H A 6 3030 将 将 A 5A 5 与与 80H80H 位相与的结果 通过位相与的结果 通过 P1 4P1 4 输出 输出 MOVC 80H ANLC ACC 5 MOVP1 4 C 3131 请用位操作指令 求下列逻辑方程 请用位操作指令 求下列逻辑方程 1 2 3 1 2 0 0 7 1PPBACCP MOVC B 0 ORLC P2 1 ANLC ACC 0 ORLC P3 2 MOVP1 7 C 2 1 1 5 2 3 1 5 PBACCPPSW MOVC P1 3 ANLC ACC 2 MOV20H C MOVC B 5 ANLC P1 1 ORLC 20H MOVPSW 5 C 3 0 1 7 4 5 13 2PACCBPP MOVC B 4 ANLC P1 5 MOV20H C MOVC P1 0 ANLC ACC 7 ORLC 20H 下一行 MOVP2 3 C 第四章第四章 汇编语言程序设计汇编语言程序设计 1 1 编程将片内 编程将片内 40H40H 60H60H 单元中的内容送到以单元中的内容送到以 3000H3000H 为首的存储区内 为首的存储区内 答 MOVR1 40H MOVR2 21H MOVDPTR 3000H L1 MOVA R1 MOVX DPTR A INCR1 INCDPTR DJNZR2 L1 2 2 编程计算下列算式的程序 编程计算下列算式的程序 1 1 23H 45H ABH 03H 23H 45H ABH 03H MOVA 23H ADDA 45H ADDA 0ABH XCHA B 溢出处理 7 ADDCA 00H XCHA B ADDA 03H A 中为结果低位 B 中为高位 2 2 CDH 15H 38H 46H CDH 15H 38H 46H MOVA 0CDH ADDA 15H SUBBA 38H SUBBA 46H 3 3 1234H 8347H 1234H 8347H MOVA 34H ADDA 47H MOV30H A MOVA 12H ADDCA 83H MOV31 A 30H 存结果低位 31H 存结果高位 4 4 AB123H 43ADCH AB123H 43ADCH CLRC MOVA 23H SUBBA DCH MOV30H A MOVA 0B1H SUBBA 3AH MOV31H A MOVA 0AH SUBBA 04H MOV32H A 30H 为低位 32H 为高位 3 3 设有两个 设有两个 4 4 位位 BCDBCD 码 分别存放在码 分别存放在 23H23H 22H22H 单元和单元和 33H33H 32H32H 单元中 求他们的和 并送入单元中 求他们的和 并送入 43H43H 42H42H 单元中 低位在低字节 高位在高字节 单元中 低位在低字节 高位在高字节 答 MOVA 22H ADDA 32H MOV42H A MOVA 23H ADDCA 33H MOV43H A 4 4 略 略 5 5 编程计算片内 编程计算片内 RAMRAM 区区 50H50H 59H59H 单元中数的平均值 结果存放在单元中数的平均值 结果存放在 5AH5AH 中 中 答 MOVR0 8 MOVR1 50H MOVA 00H L1 ADDA R1 INCR1 DJNZR0 L1 MOVB 8 DIVAB MOV5AH A 8 6 6 编写计算下式的程序 设乘积和平方结果均小于 编写计算下式的程序 设乘积和平方结果均小于 255255 a a b b 值分别存在片外值分别存在片外 3001H3001H 和和 3002H3002H 单元中 结果存于片外单元中 结果存于片外 3000H3000H 单元中 单元中 1 ba baY 25 ba ba ba MOVDPTR 3001H MOVXA DPTR MOV30H A a 暂存 30H 单元 INCDPL MOVXA DPTR CJNEA 30H L1 是否 a b MOVA 25 SJMPSAVE L1 JNCL2 MOVB 30H MULAB SJMPSAVE L2 MOVB A MOVA 30H DIVAB SAVE MOVDPTR 3000H MOVX DPRT A 2 10 10 2 2 2 ba ba ba Y 10 10 10 2 2 2 ba ba ba MOVDPTR 3001H MOVXA DPTR MOV30H A INCDPTR MOVXA DPTR ADDA 30H MOVB A MULAB a b 2 MOV31H A CJNEA 10 L1 SJMPSAVE L1 JCL2 CLRC SUBBA 10 SJMPSAVE L2 ADDA 10 SAVE MOVDPTR 3000H MOVC DPTR A 9 7 7 设有两个长度均为 设有两个长度均为 1515 的数组 分别存放在以的数组 分别存放在以 200H200H 和和 210H210H 为首地址的存储区中 试编程求其为首地址的存储区中 试编程求其 对应项之和 结果存放到以对应项之和 结果存放到以 220H220H 为首地址的存储区中 为首地址的存储区中 答 MOVDPH 02H MOVR1 15 MOVR2 00H 数组 1 首地址低位 MOVR3 10H 数组 2 首地址低位 MOVR4 20H 和首地址低位 L1 MOVDPL R2 MOVXA DPTR MOVR1 A MOVDPL R3 MOVXA DPTR ADDA R1 MOVDPL R4 MOVX DTPR A INCR2 INCR3 INCR4 DJNZR1 L1 SJMP 8 8 设有 设有 100100 个无符号数 连续存放在以个无符号数 连续存放在以 2000H2000H 为首地址的存储区中 试编程统计正数 负数和零为首地址的存储区中 试编程统计正数 负数和零 的个数 的个数 答 MOV30H 00H 正数计数器 MOV31H 00H 负数计数器 MOV32H 00H 零计数器 MOVDPTR 2000H MOVR1 100 L4 MOVXA DPTR INCDPTR CJNEA 0 L1 INC32H SJMPL2 L1 JCL3 INC30H SJMPL2 L3 INC31H L2 DJNZR1 L4 SJMP 9 9 将片外数据存储器地址为 将片外数据存储器地址为 1000H1000H 1030H1030H 的数据块 全部搬迁到片内的数据块 全部搬迁到片内 RAMRAM 30H30H 60H60H 中 并将原中 并将原 数据块区域全部清零 数据块区域全部清零 答 MOV R0 30H MOV R2 31H MOV DPTR 1000H LP MOVX A DPTR MOV R0 A 10 AND A 00H MOVX DPTR A INC R0 INC DPTR DJNZ R2 LP SJMP 1010 试编写一子程序 是 试编写一子程序 是 R1R1 R0R0 指向的两个片外指向的两个片外 RAMRAM 连续单元中的高连续单元中的高 4 4 位二进制数 合并成一个位二进制数 合并成一个 字节 装入累加器字节 装入累加器 A A 中 已知中 已知 R0R0 指向低地址 并要求该单元高四位放在指向低地址 并要求该单元高四位放在 A A 中高四位 中高四位 答 MOVXA R1 ANLA 0F0H SWAPA MOVR2 A MOVXA R0 ANLA 0F0H ORLA R2 1111 试编程把以 试编程把以 2040H2040H 为首地址的连续为首地址的连续 5050 个单元的无符号数按降序排列 存放到以个单元的无符号数按降序排列 存放到以 3000H3000H 为首地为首地 址的存储区中 址的存储区中 答 MOVR2 50 MOVR3 20H MOVR4 40H 源地址 MOVR5 30H MOVR6 00H 目的地址 SEND MOVDPH R3 SEND 将 2040H 数据块移入 3000H 存储区 MOVDPL R4 MOVXA DPTR INCDPTR MOVR3 DPH MOVR4 DPL MOVDPH R5 MOVDPL R6 MOVX DPTR A INCDPTR MOVR5 DPH MOVR6 DPL DJNZR2 SEND MOVR2 49 重复次数 CMP1 MOVDPTR 3000H MOVR3 49 比较次数 CMP2 MOVXA DPTR MOVB A INCDPTR MOVXA DPTR CJNEA B L1 L1 JCNOMOVE MOV30H A 11 CLRC MOVA DPL SUBBA 01H MOVDPL A MOVA 30H MOVX DPTR A INCDPTR MOVA B MOVX DPTR A NOMOVE DJNZR3 CMP2 50 个数重复一遍 DJNZR2 CMP1 排序结束 LJMP 1212 试编一查表程序 从首地址为 试编一查表程序 从首地址为 2000H2000H 长度为 长度为 100100 的数据块中找出的数据块中找出 ASCIIASCII 码为码为 A A 将其地址送 将其地址送 到到 20A0H20A0H 和和 20A1H20A1H 单元中 单元中 答 MOVDPTR 2000H MOVR2 100 GO ON MOVXA DPTR CJNEA 41H IFEND MOVA DPH MOVB DPL MOVDPTR 20A0H MOVX DPTR A INCDPTR XCHA B MOVX DPTR A SJMPOVER IFEND INCDPTR DJNZR2 GO ON OVER SJMPOVER 1313 设在 设在 200H200H 204H204H 单元中 存放单元中 存放 5 5 个压缩个压缩 BCDBCD 码 编程将他们转换成码 编程将他们转换成 ASCIIASCII 码 存放到以码 存放到以 205H205H 单元为首地址的存储区 单元为首地址的存储区 答 MOVR2 05H MOVR3 02H MOVR4 00H MOVR5 02H MOVR6 05H CHLP MOVDPH R3 MOVDPL R4 MOVXA DPTR INCDPTR MOVR3 DPH MOVR4 DPL MOVB A SWAPA ANLA 0FH 12 ORLA 30H MOVDPH R5 MOVDPL R6 MOVX DPTR A INCDPTR MOVA B ANLA 0FH ORLA 30H MOVX DPTR A MOVR5 DPH MOVR6 DPL DJNZR2 CHLP 1414 有一无符号数据块长度在 有一无符号数据块长度在 30H30H 单元中 其首地址为单元中 其首地址为 31H31H 单元 求出数据块中最大值 并存入单元 求出数据块中最大值 并存入 40H40H 中 中 答 MOVR0 31H MOVR1 30H MOV40H 00H LOOP MOVA R0 CJNEA 40H L1 SJMPAGAIN L1 JNCL2 SJMPAGAIN L2 MOV40H A AGAIN INCR0 DJNZR1 LOOP SJMP 1515 略 略 1616 在以 在以 2000H2000H 为首地址的存储区内 存放为首地址的存储区内 存放 2020 个用个用 ASCIIASCII 码表示的码表示的 0 0 9 9 之间的数 试编程 将之间的数 试编程 将 它们转换成它们转换成 BCDBCD 码 并以压缩码 并以压缩 BCDBCD 码的形式存在码的形式存在 3000H3000H 3009H3009H 单元中 单元中 答 MOVR2 10 MOVR3 20H MOVR4 00H MOVR5 30H MOVR6 00H LP MOVDPH R3 MOVDPL R4 MOVXA DPTR ANLA 0FH SWAPA XCHA B INCDPTR MOVXA DPTR ANLA 0FH ORLA B INCDPTR 13 MOVR3 DPH MOVR4 DPL MOVDPH R5 MOVDPL R6 MOVX DPTR A INCDPTR MOVR5 DPH MOVR6 DPL DJNZR2 LP SJMP 1717 试编程实现下列逻辑表达式功能 设 试编程实现下列逻辑表达式功能 设 P1 7P1 7 P1 0P1 0 为为 8 8 个变量的输入端 而其中个变量的输入端 而其中 P1 7P1 7 又作为又作为 变量的输出端 变量的输出端 输入端定义 X0EQUP1 0 X1EQUP1 1 X2EQUP1 2 X3EQUP1 3 X4EQUP1 4 X5EQUP1 5 X6EQUP1 6 X7EQUP1 7 1 76543210 XXXXXXXXY MOVC X0 ANLC X1 ANLC X2 ORLC X3 MOV00H C MOVC X4 ANLC X5 ANLC X6 ORLC X7 ORLC 00H MOVP1 7 C 2 76543210 XXXXXXXXY MOVC X0 ANLC X1 CPLC MOV00H C MOVC X2 ANLC X3 ANLC X4 CPLC MOV01H C 14 MOVC X5 ANLC X6 ANLC X7 CPLC ORLC O1H CPLC ORLC 00H MOVP1 7 C 1818 略 略 1919 略 略 2020 试编写延时 试编写延时 1s1s 1min1min 1h1h 子程序 子程序 单片机时钟 fosc 12MHz 计算为近似值 1s 延时子程序 DLY 1S MOVR0 10 L3 MOVR1 200 L2 MOVR2 250 L1 DJNZR2 L1 DJNZR1 L2 DJNZR0 L3 RET 延时 1min DLY 1M MOVR3 60 L4 LCALLDLY 1S DJNZR3 L4 RET 延时 1h DLY 1H MOVR4 60 L5 LCALLDLY 1M DJNZR4 L5 RET 2121 用程序实现 用程序实现 c a2 b2c a2 b2 设 设 a a b b 均小于均小于 1010 a a 存在存在 31H31H 单元中 单元中 b b 存在存在 32H32H 单元中 单元中 c c 存存 33H33H 单元 单元 答 ORG1000H SR MOVA 31H ACALLSQR MOVR1 A MOVA 32H ACALLSQR ADDA R1 MOV33H A SJMP 求平方子程序如下 采用查平方表的方法 SQR INCA MOVCA A PC RET 15 TABLE DB 0 1 4 9 16 DB 25 36 49 64 81 END 2222 如何实现将内存单元 如何实现将内存单元 40H40H 60H60H 的数逐个对应传到片外的数逐个对应传到片外 2540H2540H 2560H2560H 单元中 单元中 答 MOVR0 40H MOVDPTR 2540H MOVR2 21H L1 MOVA R0 MOVX DPTR A INCR0 INCDPTR DJNZR2 L1 SJMP 2323 参考 参考 2121 题题 2424 参考 参考 2121 题题 2525 参考实验程序 参考实验程序 2626 参考实验程序 参考实验程序 第五章第五章 定时定时 计数器计数器 1 1 89S5189S51 单片机内部有几个定时单片机内部有几个定时 计数器 他们有哪些专用寄存器组成 计数器 他们有哪些专用寄存器组成 答 89S51 单片机内部有两个 16 位定时 计数器 为定时器 0 T0 和定时器 1 T1 在定时器 计数器的 16 位的计数器是由两个 8 位的专用寄存器 TH0 TL0 TH1 TL1 组成 2 2 89S5189S51 单片机的定时单片机的定时 计数器有哪几种工作方式 各有什么特点 计数器有哪几种工作方式 各有什么特点 答 定时器 计数器有四种工作方式 方式 0 方式 1 方式 2 方式 3 其中 方式 3 只适用于 T0 以 T0 为例 方式 0 16 位寄存器只用了 13 位 TL0 的高三位未用 由 TH0 的 8 位和 TL0 的低 5 位组成一个 13 位计数器 方式 1 和方式 0 的工作相同 唯一的差别是 TH0 和 TL0 组成 一个 16 位计数器 方式 2 把 TL0 配置成一个可以自动恢复初值的 8 位计数器 TH0 作为常数 缓冲器 TH0 由软件预置值 当 TL0 产生溢出时 一方面使溢出标志 TF0 置 1 同时把 TH0 中的 8 位数据重新装入 TL0 中 方式 3 将使 TL0 和 TH0 成为两个相互独立的 8 位计数器 TL0 利用 T0 本身的一些控制 它的操作与方式 0 和方式 1 类似 而 TH0 被规定为只用作定时器功能 对机 器周期计数 并借用了 T1 的控制位 TR1 和 TF1 在这种情况下 TH0 控制了 T1 的中断 这时 T1 还 可以设置为方式 0 2 用于任何不需要中断控制的场合 或者用作串行口的波特率发生器 3 3 定时 定时 计数器用作定时方式时 其定时时间与哪些因素有关 作为计数时 对外界计数频率有计数器用作定时方式时 其定时时间与哪些因素有关 作为计数时 对外界计数频率有 何限制 何限制 答 定时 计数器作定时时 其计数脉冲由系统振荡器产生的内部时钟信号 12 分频后提供 定时 时间与时钟频率和定时初值有关 定时 计数器作计数时 由于确认 1 次负跳变要花 2 个机器周期 即 24 个振荡周期 因此外 部输入的计数脉冲的最高频率为系统振荡器频率的 1 24 4 4 当定时器 当定时器 T0T0 用作方式用作方式 3 3 时 由于时 由于 TR1TR1 位已被位已被 T0T0 占用 如何控制定时器占用 如何控制定时器 T1T1 的开启和关闭 的开启和关闭 答 定时器 T0 用作方式 3 时 由于 TR1 位已被 T0 占用 此时通过控制位 C T 切换其定时或计数 器工作方式 当设置好工作方式时 定时器 T1 自动开始运行 若要停止 只需送入一个置定时器 T1 为方式 3 的方式字 5 5 已知 已知 89S5189S51 单片机系统时钟频率为单片机系统时钟频率为 24MHz24MHz 请利用定时器 请利用定时器 T0T0 和和 P1 2P1 2 输出矩形脉冲 矩形波高输出矩形脉冲 矩形波高 电平宽度电平宽度 50 s50 s 低电平宽度 低电平宽度 350 s350 s 答 ORG 1000H MOV TMOD 02H 设置工作方式 MOV TH0 09CH 设置定时器初值 MOV TL0 09CH 16 SETB TR0 启动定时器 LOOP SETBP1 2 P1 0 输出高电平 MOV R0 07H DEL JBC TF0 REP 定时是否到 AJMP DEL REP SETBP1 2 P1 0 输出低电平 DJNZR0 DEL AJMP LOOP END 6 6 在 在 89S5189S51 单片机中 已知时钟频率为单片机中 已知时钟频率为 12MHz12MHz 请编程使 请编程使 P1 0P1 0 和和 P1 1P1 1 分别输出周期为分别输出周期为 2ms2ms 和和 500 s500 s 的方波 的方波 答 选择方式 2 用定时器 T1 MOVTMOD 20H MOVTH1 06H MOVTL1 06H SETBTR1 L1 MOVR2 04H L2 JNBTF1 CLRTF1 CPLP1 1 DJNZR2 L2 CPLP1 0 LJMPL1 7 7 设系统时钟为 设系统时钟为 24MHz24MHz 试用定时器 试用定时器 T0T0 做外部计数器 编程实现每计到做外部计数器 编程实现每计到 10001000 个脉冲 是个脉冲 是 T1T1 开开 始始 2ms2ms 定时 定时时间到后 定时 定时时间到后 T0T0 又开始计数 循环往复 又开始计数 循环往复 答 MOVTMOD 15H T1 定时方式 1 T0 计数方式 1 L1 MOVTH0 0FCH MOVTL0 18H SETBTR0 JNBTF0 CLRTR0 CLRTF0 MOVTH1 H MOVTL1 H SETBTR1 JNBTF1 CLRTR1 CLRTF1 LJMPL1 8 8 略 略 9 9 略 略 第六章第六章 80C5180C51 的串行接口的串行接口 1 1 什么是串行异步通信 他有哪些特点 有哪几种帧格式 什么是串行异步通信 他有哪些特点 有哪几种帧格式 答 串行通信即所传输数据的各位按顺序一位一位的发送或接收 串行通信分为同步和异步两种 方式 17 在异步通信中数据或字符是一帧一帧地传送的 帧定义为一个字符的完整的通信格式 通常 也称为帧格式 它的主要特点 由于异步通信每传送一帧有固定的格式 通信双方只需按约定的帧格式来发 送和接收数据 所以硬件结构比同步通信方式简单 此外它还能利用校验位检测错误 帧格式的一般形式是先用一个起始位 0 表示字符的开始 然后是数据位 其后是奇偶校验 位 最后是停止位 用以表示字符结束 2 2 某异步通信接口按方式 某异步通信接口按方式 3 3 传送 已知其每分钟传送传送 已知其每分钟传送 36003600 个字符 计算其传送波特率 个字符 计算其传送波特率 答 设每个字符由 1 个起始位 8 个数据位 1 个可编程位和 1 个结束位组成 其传送波特率为 11b 3600 60s 660bps 3 3 80C5180C51 单片机的串行口由哪些基本功能部件组成 单片机的串行口由哪些基本功能部件组成 答 80C51 单片机的串行口基本功能部件主要有 两个数据缓冲寄存器 SBUF 一个串行口控制寄 存器 SCON 一个输入移位寄存器 4 4 80C5180C51 单片机的串行口有几种工作方式 几种帧格式 如何设置不同方式的波特率单片机的串行口有几种工作方式 几种帧格式 如何设置不同方式的波特率 答 80C51 单片机的串行口有四种工作方式 由串行口控制寄存器中的 SM0 SM1 控制 80C51 单片机的串行通信有 8 位 10 位 11 位三种帧格式 波特率设置 4 种工作方式波特率的计算方法不同 其中方式 0 和方式 2 的波特率是固定的 方式 1 和方式 3 的波特率是可变的 均由定时器 T1 的溢出率控制 具体计算如下 方式 0 波特率固定为时钟频率的 1 12 不受 SMOD 的影响 SMOD 为波特率倍增位 方式 1 的波特率 2SMOD 32 定时器 T1 的溢出率 方式 2 的波特率 2SMOD 64 fosc 方式 3 的波特率 2SMOD 32 定时器 T1 的溢出率 5 5 为什么定时器 为什么定时器 T1T1 用作串行口波特率发生器时 常采用工作方式用作串行口波特率发生器时 常采用工作方式 2 2 答 在串行通信中 收发双方对发送或接收的数据速率 即波特率 要有一定的约定 串口有四 种工作方式 其中方式 0 和方式 2 的波特率是固定的 而方式 1 和方式 3 的波特率是可变的 有 定时器 T1 的溢出率控制 定时器 T1 用作串行口波特率发生器时 因为工作方式 2 是自动重装载 方式 因而定时器 T1 作波特率发生器常采用工作方式 2 6 6 已知定时器 已知定时器 T1T1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论