单片微机原理与接口技术 课后习题答案 宋跃 电子工业出版社_第1页
单片微机原理与接口技术 课后习题答案 宋跃 电子工业出版社_第2页
单片微机原理与接口技术 课后习题答案 宋跃 电子工业出版社_第3页
单片微机原理与接口技术 课后习题答案 宋跃 电子工业出版社_第4页
单片微机原理与接口技术 课后习题答案 宋跃 电子工业出版社_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

声明:此答案仅供参考,部分地方有出入,并非标准答案 第 1 章 思考题及习题参考答案 1 写出下列二进制数的原码、反码和补码(设字长为 8 位)。 (1)001011 (2)100110 (3)-001011 (4)-111111 答: (1)原码:00001011 反码:00001011 补码:00001011 (2)原码:00100110 反码:00100110 补码:00100110 (3)原码:10001011 反码:11110100 补码:11110101 (4)原码:10111111 反码:11000000 补码:11000001 2 已知 X 和 Y,试计算下列各题的X+Y补和X-Y补(设字长为 8 位)。 (1) X=1011 Y=0011 (2) X=1011 Y=0111 (3) X=1000 Y=1100 答: (1)X 补码=00001011 Y 补码=00000011 Y补码=11111101 X+Y补=00001110 X-Y补=00001000 (2)X 补码=00001011 Y 补码=00000111 Y补码=11111001 X+Y补=00010010 X-Y补=00000100 (3)X 补码=00001000 Y 补码=00001100 Y补码=11110100 X+Y补=00010100 X-Y补=11111100 3 微型计算机由那几部分构成? 答:微型计算机由微处理器、存储器和 I/O 接口电路构成。各部分通过地址总线(AB)、 数据总线(DB)和控制总线(CB)相连。 4 8086 的寻址范围有多大?其物理地址是如何形成? 答:8086 有 20 根地址总线,它可以直接寻址的存储器单元数为 1M 字节,其地址区域为 00000HFFFFFH。 物理地址是由段地址与偏移地址共同决定的,物理地址=段地址16+偏移地址其中段地址 通常来自于段寄存器 CS ,物理地址来自于 IP。 5 什么叫单片机?它有何特点? 答:单片机就是在一块硅片上集成了 CPU、RAM、ROM、定时器/计数器和多种 I/O 口(如 并行、串行及 A/D 变换器等)的一个完整的数字处理系统。单片机主要特点有:品种多样,型 号繁多;存储容量大;频率高,速度快;控制功能强,集成度高;功耗低;配套应用软件多。 第 3 页 共 49 页 第 2 章 思考题及习题参考答案: 2.1.说明 ROM、EPROM、EEPROM 和 FLASH 之间的主要区别 解:ROM 为只读存储器,在一般情况下只能读出所存信息,而不能重新写入。信息的 写入是通过工厂的制造环节或采用特殊的编程方法进行的,一旦写入,就能长期保存。 EPROM 芯片一般允许用户多次编程和擦除。擦除时,通过向芯片窗口照射紫外光的方 法来进行。 EEPROM,也称 E2PROM。该类芯片允许用户多次编程和擦除。擦除时,可 采用加电方法在线进行。FLASH 是一种新型的大容量、速度快、电可擦除可编程只读 存储器。 2.2.EPROM、PROM、动态 RAM、静态 RAM 等存储器中,哪几类是可以随时读写的? 解:动态 RAM、静态 RAM 这几类是可以随时读写的。 2.3 某 ROM 芯片中有 12 根地址输入端和 8 个数据输出端,该芯片的存储容量是多少位? 解:芯片的存储容量是 4K*8 位。 2.4.说明动态 RAM 和静态 RAM 的主要区别,使用时应如何选用? 解:静态(static)RAM,即 SRAM。它以触发器为基本存储单元,所以只要不掉电,其 所存信息就不会丢失。该类芯片的集成度不如动态 RAM,功耗也比动态 RAM 高,但它的速 度比动态 RAM 快,也不需要刷新电路。在构成小容量的存储系统时一般选用 SRAM。在微型 计算机中普遍用 SRAM 构成高速缓冲存储器。 动态(Dynamic)RAM,即 DRAM。一般用 MOS 型半导体存储器件构成,最简单的存储形式 以单个 M0S 管为基本单元,以极间的分布电容是否持有电荷作为信息的存储手段,其结构 简单,集成度高。但是,如果不及时进行刷新,极间电容中的电荷会在很短时间内自然泄 漏,致使信息丢失。所以,必须为它配备专门的刷新电路。动态 RAM 芯片的集成度高、价 格低廉,所以多用在存储容量较大的系统中。目前,微型计算机中的主存几乎都是使用动 态 RAM。 2.5.说明 NOR FLASH 与 NAND FLASH 的主要区别,使用时应如何选用? 解:NOR Flash 具有以下特点: (1) 程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随 机读取,允许系统直接从 Flash 中读取代码执行,而无需先将代码下载至 RAM 中再执行; (2) 可以单字节或单字编程,但不能单字节擦除,必须以块为单位或对整片执行擦 除操作,在对存储器进行重新编程之前需要对块或整片进行预编程和擦除操作。 但是 NOR Flash 的擦除和编程速度较慢,块尺寸又较大,因此擦除和编程操作所花费 的时间很长,在纯数据存储和文件存储的应用中,NOR 技术显得力不从心。 NAND Flash 具有以下特点: (1) 以页为单位进行读和编程操作,1 页为 256 或 512B(字节);以块为单位进行 擦除操作,1 块为 4K、8K 或 16KB。具有快编程和快擦除的功能,其块擦除时间是 2ms;而 NOR 技术的块擦除时间达到几百 ms。(2) 数据、地址采用同一总线,实现串行读取。随 机读取速度慢且不能按字节随机编程。(3) 芯片尺寸小,引脚少,是位成本(bit cost) 最低的固态存储器,将很快突破每兆字节 1 美元的价格限制。(4) 芯片包含有失效块, 其数目最大可达到 335 块(取决于存储器密度)。失效块不会影响有效块的性能,但设计 者需要将失效块在地址映射表中屏蔽起来。 NOR Flash 具有可靠性高、随机读取速度快的优势,在擦除和编程操作较少而直接执 行代码的场合,尤其是纯代码存储的应用中广泛使用,如 PC 的 BIOS 固件、移动电话、硬 盘驱动器的控制存储器等。 NAND Flash 结构的闪速存储器适合于纯数据存储和文件存储,主要作为 SmartMedia 卡、CompactFlash 卡、PCMCIA ATA 卡、固态盘的存储介质,并正成为闪速磁盘技术的核心。 2.6.现有 2K8 位的 RAM 芯片若干片,若用线选法组成存储器,有效的寻址范围最大是多 少 KB?若用 3-8 译码器来产生片选信号,则有效的寻址范围最大又是多少?若要将寻址范 围扩展到 64KB,应选用什么样的译码器来产生片选信号? 解:以 8086 为例,8086 有 20 条地址线,用 11 条地址线寻址一片 2K8 位的 RAM,余下的 9 条地址线做线选法的线,故可以并联 9 个芯片,故寻址最大范围是 20KB,若用 3-8 译码 器来产生片选信号,9 条地址线可以控制 3 个 3-8 译码器这样就可以控制 24 个芯片最大范 围是 50KB. 若要将寻址范围扩展到 64KB 可选用 4-16 地址译码器来产生片选信号。 2.7.什么是地址重叠区?它对存储器扩展有什么影响? 解:基本地址和前面全译码连接的地址范围是相同的,但两者还是有区别的。区别在于全 译码连接时各芯片的地址是唯一的,而部分译码连接时各芯片地址不是唯一的,也就是可 以由若干个地址都选中同一芯片的同一单元,既所谓的地址重叠区。由于存在的地址重叠, 影响了地址区的有效使用,也限制了存储器的扩展。因此,在选用部分译码时,也要尽可 能多选一些高位地址线来作为译码器的输入。 2.8 如图 2-22 若用 1K8 位片子来扩展 3K8 位 RAM,试核算各片的地址范围为多少? 图 2-22 1K8 位片子扩展的 3K8 位 RAM 系统 解:A 15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址 G1 A B C 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 片 1:A000H 第 5 页 共 49 页 1 0 1 0 0 0 11 1 1 1 1 1 1 1 1 片 1:A3FFH A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址 G1 A B C 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 片 2:B000H 1 0 1 1 0 0 11 1 1 1 1 1 1 1 1 片 2:B3FFH A15 A14 A13 A12 A11 A10 A9 A8 A7A6A5A4 A3A2A1A0 地址 G1 A B C 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 片 3:B400H 1 0 1 1 0 1 11 1 1 1 1 1 1 1 1 片 3:B7FFH 所以各片地址范围为: 片 1:A000H-A3FFH, 片 2:B000H-B3FFH, 片 3:B400H-B7FFH 2.9. 现有 8K8 位 RAM 多片,1 片 3-8 译码器,要构成容量为 16K8 位的存储器,请用 线译码、部分译码、全译码 3 种方式分别设计,画出连接图,并指出寻址范围。 解: 线译码法: 寻址范围:2000H5FFFH 部分译码寻址范围:0000H3FFFH 全译码:寻址范围:0000HFFFFH 2.10.如何检查扩展的 RAM 工作是否正常?试编一个简单的 RAM 检查程序,要求此程序能记 录有多少个 RAM 单元工作有错?且能记录出错的单元地址。 解: TEST_CONST EQU 5AH TEST_RAM EQU 03H ORG 0000H LJMP INITIAL ORG 0050H INITIAL: MOV R0,#253 MOV R1,#3H TEST_ALL_RAM: MOV R2,#0FFH TEST_ONE_RAM: MOV A, R2 MOV R1,A CLR A 第 7 页 共 49 页 MOV A,R1 CJNE A,2H, ERROR_DISPLAY DJNZ R2, TEST_ONE_RAM INC R1 DJNZ R0, TEST_ALL_RAM OK_DISPLAY: MOV P1, #11111110B WAIT1: SJMP WAIT1 ERROR_DISPLAY: MOV A, R1 MOV P1,A WAIT2: SJMP WAIT2 END 第 3 章 思考题及习题参考答案 1. 80C51 单片机的 P0P3 口在通用 I/O 口时操作要注意哪些?P0P3 口不做通用 I/O 口时 是什么功能?在使用上有何特点? P0P3 驱动能力如何? 答:(1)作为通用 I/O 口时,P0P3 都是准双向口,输入引脚信息时都必须先向其锁存器 写“1” ,作为输出口时 P0 口需结上拉电阻。 (2)P0 可以作为地址/数据总线;P2 口可以作为地址线的高 8 位;P3 口是双功能口, 每条口线还具有不同的第二功能。 (3)P0 口的驱动能力为 8 个 TTL 负载,而其它口仅可驱动 4 个 TTL 负载。 2、MCS-51单片机运行出错或程序进入死循环,如何摆脱困境? 答:通过复位电路复位 3、单片机的复位(RST)操作有几种方法,复位功能的主要作用是什么? 答:单片机的复位操作方式有:1、上电复位;2、手动复位。 复位功能的主要作用是:复位时,PC 初始化为 0000H,使 MCS-51 单片机从 0000H 开始 执行程 4、简述程序状态寄存器 PSW 寄存器中各位的含义。 答:程序状态字寄存器 PSW,8 位。其各位的意义为: CY:进位、借位标志。有进位、借位时 CY=1,否则 CY=0; AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位) ; F0:用户标志位,由用户自己定义; RS1、RS0:当前工作寄存器组选择位,共有四组:00、01、10、11; OV:溢出标志位。有溢出时 OV=1,否则 OV=0; P:奇偶标志位。存于累加器 ACC 中的运算结果有奇数个 1 时 P=1,否则 P=0. 5、80C51 单片机的当前工作寄存器组如何选择? 答:由特殊功能寄存器中的程序状态寄存器 PSW 的 RS1、RS0 来决定,当 RS1、RS0 为 00 时, 选择 0 组;为 01 时,选择 1 组;为 10 时选择 2 组,为 11 时选择 3 组。 6. 80C51 单片机的控制总线信号有哪些?各信号的作用如何? 答:80C51 单片机的控制总线信号有以下 4 个,各信号的作用为: RST/VPD: 复位信号输入引脚/备用电源输入引脚; ALE/PROG: 地址锁存允许信号输出引脚/编程脉冲输入引脚; EA/Vpp : 内外存储器选择引脚/片内 EPROM(或 FlashROM)编程电压输入引脚; PSEN:外部程序存储器选通信号输出引脚。 7、8051 单片机中 EA 引脚的作用是什么? 答:访问内部或外部程序存储器的选择端当 EA 接高电平的时候程序从内部 ROM 开始执行, 当 EA 为低电平的时候,从外部 ROM 开始执行 8、 程序计数器 PC 的作用是什么? 答:程序计数器 PC 是一个 16 位的计数器,他总是存放着下一个要取的指令的 16 位存 储单元地址。用来存放下一条指令的地址用来存放下一条指令的地址的。当执行一条指令 时,首先需要根据 PC 中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为 “取指令”。与此同时,PC 中的地址或自动加 1 或由转移指针给出下一条指今的地址。此 后经过分析指令,执行指令。完成第一条指令的执行,而后根据 PC 取出第二条指令的地址, 如此循环,执行每一条指令 第 9 页 共 49 页 9、堆栈有哪些功能?堆栈指示器( SP)的作用是什么?在程序设计时,为什么要对 SP重 新赋值? 答:堆栈在中端过程中用来保护现场数据,复位后SP=7H,而堆栈一般设置在通用ROM区 (30H-7FH),在系统初始化时候要从新设置。 10、内部 RAM低 128单元划分为哪 3个主要部分?说明各部分的使用特点。 答:80C51 内部 128B 的数据 RAM 区,包括有工作寄存器组区、可直接位寻址区和数据缓 冲区。各区域的特性如下: (1) 00H1FH 为工作寄存器组区,共分 4 组,每组占用 8 个 RAM 字节单元,每个单 元作为一个工作寄存器,每组的 8 个单元分别定义为 8 个工作寄存器 R0R7。 当前工作寄存器组的选择是由程序状态字 PSW 的 RS1、RS0 两位来确定。如果 实际应用中并不需要使用工作寄存器或不需要使用 4 组工作寄存器,不使用的 工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用 Ri 的 寄存器间接寻址来访问。 (2) 20H2FH 为可位寻址区域,这 16 个字节的每一位都有一个地址,编址为 00H7FH。 当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。 (3)30H7FH 为堆栈、数据缓冲区。 11、简述 MCS-51 单片机存储区的划分。 答:MCS-51 单片机的存储器从物理结构上分为:片内和片外数据存储器,片内和片外 程序存储器。 2)从逻辑上分别可划分为:片内统一寻址的 64K 程序存储器空间(0000H-FFFFH); 64KB 的片外数据存储器空间(0000H-FFFFH);256B 的片内数据存储器空间(00H- FFH)。 12、MCS-51 基本型单片机的中断入口地址各为多少。 答:外部中断 0 中断入口地址 0003H 定时/计数器 0 中断入口地址 000BH 外部中断 1 中断入口地址 0013H 定时/计数器 1 中断入口地址 001BH 串行接口 中断入口地址 0023H 13、什么是指令周期、机器周期和时钟周期? 答:指令周期:指令的执行时间;机器周期:CPU 完成一个最简单的指令所需要的时间; 时钟周期:晶振信号周期就是时钟周期。 14、已知一 MCS51 单片机系统使用 6MHZ 的外部晶体振荡器,计算:该单片机系统的状态周 期与机器周期各为多少? 解:由于晶振为 6MHz,所以机器周期为 2us,因为一个机器周期由 6 个状态周期组成,所 以状态周期 1/3us 15、8031 单片机需要外接程序存储器,实际上它还有多少条 I/O 线可以用?当使用外部存 储器时,还剩下多少条 I/O 线可用? 答:8031 系统必须外接程序促成器,原则上说,P0 和 P2 口要用作数据和地址总线,所以 只有 P1 和 P3 口可用作 I/O 口,共 16 条 I/O 线。在使用外部存储器时,除了占用 P0 和 P2 口外,还需要用 P3 口 RD(P3.7)和 WR(P3.6)两条控制线,所以这种情况下就只剩下 14 条 I/O 线可用了。 第 4 章 思考题及习题参考答案 1. 寻址方式是什么? 答:寻址方式是寻找操作数或操作数地址的方式。 2. 89C51 指令系统有哪几种寻址方式? 答:89C51 的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、 基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。 3、访问特殊功能寄存器 SFR 可以采用哪些寻址方式? 答:直接寻址和位寻址方式。 4、访问 RAM 单元可以采用哪些寻址方式?访问外部 RAM 单元有哪些指令? 答:直接寻址、寄存器间接寻址和位寻址方式。 访问外部 RAM 单元的指令有 4 条: MOVX A,DPTR MOVX A,Ri MOVX DPTR,A MOVX Ri,A 5、访问外部程序存储器可以采用哪些寻址方式?访问外部程序存储器有哪些指令? 答:立即寻址、变址寻址和相对寻址方式。 访问外部程序存储器的指令有 2 条 MOVC A,A+DPTR MOVC A,A+PC 6、试写出完成以下每种操作的指令序列。 (1)将 R0 的内容传送到片内 RAM 20H; (2)将 R1 的内容传送到 R0; (3)内部 RAM 单元 10H 的内容传送到外部 RAM 单元 1000H; (4)外部 RAM 单元 1000H 的内容传送到 R5; (5)外部 ROM 单元 1000H 的内容传送到 R5; (6)外部 RAM 单元 2000H 的内容传送到外部 RAM 单元 2001H。 答:(1)MOV 20H,R0 (2) MOV A,R1 MOV R0,A (3)MOV A,10H MOV DPTR,#1000H MOVX DPTR,A (4)MOV DPTR,#1000H MOVX A,A+DPTR MOV R5,A (5) MOV DPTR,#1000H 第 11 页 共 49 页 MOV A,#00H MOVC A,A+DPTR MOV R5,A (6) MOV DPTR,#2000H MOVX A,DPTR INC DPTR MOVX DPTR,A 7. 设内部 RAM (30H)=60H, (60H)=10H, (10H)=20H, (R1)=22H,(P1)=0AH, 分析以下程序 执行后(30H)=?, (60H)= ?, (10H)= ?,(A)= ?,(B)= ?,(P2)= ?每条指令的机 器码为多少? MOV R0, 30H MOV A, R0 MOV R1, A MOV B, R1 MOV R1, P1 MOV P2, P1 MOV 10H, 90H 答: MOV R0, 30H ; (R0)= 30H , 78 30 MOV A, R0 ; (A) =60H , E6 MOV R1, A ; (R1) =60H , F9 MOV B, R1 ; (B) = 10H , 87 F0 MOV R1, P1 ; (60H) =0AH , A7 90 MOV P2, P1 ; (P2) =0AH , 85 90 A0 MOV 10H, 90H ; (10H) =90H , 75 10 90 (30H)= 60H, (60H)= 0A H, (10H)= 90H,(A)= 60H,(B)= 10H,(P2)= 0AH 8. 设外部 RAM (2030H)=0FH, 分析以下指令执行后(DPTR)=?, (30H)=?, (2030H)=?(A)=? 每条指令的机器码为多少? MOV DPTR, 2030H MOVX A, DPTR MOV 30H, A MOV A, 3FH MOVXDPTR, A 答: MOV DPTR, 2030H ; (DPTR) = 2030H , 90 20 30 MOVX A, DPTR ; (A) =0FH , E0 MOV 30H, A ; (30H) =0FH , F5 30 MOV A, 3FH ; (A) =3FH , 74 3F MOVXDPTR, A ; (2030H)=3FH , F0 执行结果为: (DPTR)=2030H, (30H)=0FH, (2030H)=3FH ,(A)=3FH。 9、编写指令实现下列位操作。 (1)使累加器的最高 2 位清零; (2)屏蔽(清零)20H 的高 4 位; (3)将 E0H 的低 4 位取反,高 4 位不变; (4)将 P0 的低 2 位置 1。 (5)将 10H 的内容取补后存放到 20H 答:(1)CLR ACC.7 CLR ACC.6 (2) ANL 20H,#0FH (3) XRL E0H,#0FH (4)ORL P0,#03H (5) XRL 10H,#0FFH INC 10H MOV 20H,10H 10. 在外部程序存储器中, 从 1020H 单元开始依次存放 09 的平方值: 0、 1、 4、 9、 、81, 要求依据累加器 A 中的值(09)来查找所对应的平方值, 试设计程序实现。 答:MOV DPTR, 1020H MOVC A, A+DPTR 11. 设(R0)=20H, (20H)=40H, (A)=58H, 则: 执行 XCH A, R0 后 (A)=?, (20H)=? 若执行 XCHD A, R0 后 (A) =?, (20H) =? 答:执行 XCH A, R0 后 (A)=40H, (20H)=58H 若执行 XCHD A, R0 后 (A) =50H, (20H) =48H 12、试编写程序序列,完成两个 16 位数的减法:(30H)(31H)(10H)(11H) (30H) (31H)。 答:CLR C MOV A,31H SUBB A,11H MOV 31H,A MOV A,30H SUBB A,10H MOV 30H,A 13、试编写程序,将 R0 中的低 4 位数与 R1 中的高 4 位数合并成一个 8 位数,并将其存放 在 R0 中。 答:MOV A,R0 ANL A,#0FH MOV B,A MOV A,R1 ANL A,#0F0H 第 13 页 共 49 页 ORL A,B MOV R0,A 14. 设计双字节无符号数加法程序实现(R0 R1)+(R2 R3) (R4 R5), R0、 R2、 R4 存放 16 位数的高字节, R1、 R3、 R5 存放低字节,假设其和不超过 16 位。 答:MOV A, R1 ADD A, R3 MOV R5, A MOV A, R0 ADDC A, R2 MOV R4, A 15. 设计双字节无符号数相减程序实现(R0 R1)(R2 R3) (R4 R5)。R0、 R2、 R4 存 放 16 位数的高字节, R1、 R3、 R5 存放低字节, 答: MOV A, R1 CLR C SUBB A, R3 MOV R5, A MOV A, R0 SUBB A, R2 MOV R4, A 17. 设 2 个 BCD 码数存在外部 RAM 的 2000H 和内部 RAM 的 20H。设计程序实现 2 个 BCD 码 相加,其结果的十位和个位送到外部 RAM 的 2000H 单元, 结果的百位值送 F0 位。 答: MOV DPTR,#2000H MOVX A,DPTR ADD A, 20H DA A MOVX DPTR, A MOV F0H,CY 18. 设变量 X 存放在片内 10H 单元中, 函数 Y 存放在片内 20H 单元。 编写程序实现如下函 数功能。 80H X0 Y= 50 X=0 FFH X0 则转移到 POSI MOV A, 0FFH ; 若 X0 时 A=80H COMP: MOV 20H, A ; 存函数 Y 值 SJMP $ ; 结束 19. 利用位逻辑指令, 模拟下图硬件逻辑电路功能。试编写程序实现。 答:MOV CY,P1.0 ANL CY,P1.1 CPL CY MOV F0,CY MOV CY,P1.1 ORL CY,P1.2 ANL CY,F0 CPL CY MOV F0,CY 20.若(CY)=0, (P1)=10110111B,试指出执行下列程序段后,CY、P1 口内容的变化情况。 MOV P1.2,C MOV C, P1.4 JBC P1.7 ,SS ORL C, P1.6 SS:CPL P1.3 ANL C, /P1.3 MOV P1.0,C 答:(CY)=0, (P1)=0011 1010B 第 15 页 共 49 页 第 5 章 思考题及习题参考答案 1、80C51 单片机汇编语言有何特点? 答:优点;源程序结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行 速度快、实时性强等优点。 缺点:由于它的是面向机器的语言,所以它缺乏通用性,编程复杂繁琐,但应用相当广 泛。 2、利用 80C51 单片机汇编语言进行程序设计的步骤如何? 答:(1).需要对单片机应用系统预先完成的任务进入深入的分析,明确系统的设计任务、 功能要求、技术指标。 (2).要对系统的硬件资源和人工作环境进行分析和熟悉. (3).利用数学方法或数学模型来对其进行描述,从而把一个实际问题转化成由计算机 进行处理的问题。 (4).对各种算法进行分析比较,并进行合理的优化。 3、常用的程序结构有哪几种?特点如何? 答:常用的程序结构有以下几种: (1)顺序程序结构:顺序结构是按照逻辑操作顺序,从某一条指令开始逐条顺序进行, 直到某一条指令为止;比如数据传送与交换、查表程序和查表程序的设计等;在顺序结构 中没有分支,也没有子程序,但它是组成复杂程序的基础和主干; (2)分支程序结构:它的主要特点是程序执行流程中必然包含有条件判断指令,符合 条件要求的和不符条件合要求的有不同的处理程序; (3)循环程序结构 :它在本质上只是分支程序中的一个特殊形式,它由循环初始化、 循环体、循环控制和结束部分构成;在循环次数已知情况下,采用计数循环程序,其特点 是必须在初始部分设定计数的初始值,循环控制部分依据计数器的值决定循环次数;根据 控制循环结束的条件,决定是否继续循环程序的执行。 (4)子程序:它的主要特点是,在执行过程中需要由其它的程序来调用,执行完后又 需要把执行流程返回到调用该子程序的主程序。 4、子程序调用时,参数的传递方法有哪几种? 答:在 80C51 单片机中,子程序调用时,参数的传递方法由三种: (1) 、利用累加器 A 或寄存器; (2) 、利用存储器; (3) 、利用堆栈。 5、什么是伪指令?常用的伪指令功能如何? 答:伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令有: (1)起始地址设定伪指令 ORG,该指令的功能是向汇编程序说明下面紧接的程序段或 数据段存放的起始地址; (2)汇编结束伪指令 END,该指令的功能是汇编程序遇到 END 伪指令后立即结束汇编; (3)字节数据定义伪指令 DB,该指令的功能是从标号指定的地址单元开始,在程序 存储器中定义字节数据; (4)字数据定义伪指令 DW,该指令的功能是从标号指定的地址单元开始,在程序存 储器中定义字数据; (5)空间定义伪指令 DS,该指令的功能是从标号指定的地址单元开始,在程序存储 器中保留由表达式所指定的个数存储单元作为备用空间,并都填以零值; (6)赋值伪指令 EQU,该指令的功能是将表达式的值或特定的某个汇编符号定义为一 个指定的符号名; (7)位地址符号定义伪指令 BIT,该指令的功能是将位地址赋给指定的符号名。 6:把外部 RAM 的 2000-20FFH RAM 空间置零 程序如下: ORG 000H MOV R0,#00H MOV DPTR,#2000H ;空间首地址送DPTR LOOP: MOV A,#00H MOVX DPTR,A ;清零 INC DPTR ;DPTR加1 INC R0 ;字节数加1 CJNE R0,#00H,LOOP ;连续清256个字节 LOOP1: SJMP LOOP1 END 7、录入并调试一个排序子程序,其功能为用冒泡法将内部 RAM 中从 50H 开始的十个单 字节无符号正整数,按从小到大的次序重新排列。 程序如下: 用冒泡法进行数据排序 ORG 0000H MOV R3,#50H 第 17 页 共 49 页 LOOP0: MOV A,R3 MOV R0,A ;指针送R0 MOV R7,#0AH ;长度送R7 CLR 00H ;标志位为0 MOV A,R0 LOOP1: INC R0 MOV R2,A CLR C MOV 22H,R0 CJNE A,22H,LOOP2 ;相等吗? SETB C LOOP2: MOV A,R2 JC LOOP3 ;小于或等于不交换 SETB 00H XCH A,R0 DEC R0 XCH A,R0 INC R0 ;大于交换位置 LOOP3:MOV A,R0 DJNZ R7,LOOP1 JB 00H,LOOP0 ;一次循环中有交换继续 LOOP: SJMP LOOP ;无交换退出 END 8、设被加数存放在内部 RAM 的 20H、21H 单元,加数存放在 22H、23H 单元,若要求和存放 在 24H、25H 中,试编写出 16 位数相加的程序。 答: ORG 1000H MOV R1,#21H MOV R2,#23H MOV R3,#25H CLR C LP;MOV A,R2 ADDC A,R1 MOV R3,A DEC R1 DEC R2 DEC R3 DJNE R1,#1FH,LP SJMP $ 9、编写一段程序,把外部 RAM 中 1000H1030H 单元的内容传送到内部 RAM 的 30H60H 单元 中。 答: ORG 0030H MOV R1,#49 MOV R0,#30H MOV DPTR,#1000H LOOP: MOVX A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R1,LOOP SJMP $ END 10、编写程序,实现双字节无符号数加法运算,要求(R1R0)+(R7R6)(61H60H) 。 答: MOV A,R0 ADD A,R6 MOV 60H,A MOV A,R1 ADDC A,R7 MOV 61H,A SJMP $ 11、用 R0 和 R1 作数据指针,R0 指向第一个加数,并兼作“和”的指针,R1 指向另一个加 数,字节存放到 R2 中作计数初值。 答: 主程序: 第 19 页 共 49 页 JAFA: MOV R0,#20H ;指向加数最低字节 MOV R1,#29H ;指向另一加数最低字节 MOV R2,#04H ;字节数作计数值 ACALL JASUB ;调用加法子程序 AJMP $ RTE 多字节加法子程序: JASUB: CLR C JASUB1: MOV A,R0 ;取出加数的一个字节(无符号数加数) ADDC A,R1 ;加上另一数的一个字节 MOV R0,A ;保存和数 INC R0 ;指向加数的高位 INC R1 ;指向另一加数的高位 DJNZ R2,JASUB1 ;全部加完了吗? RET 12、在内部 RAM 的 21H 单元开始存有一组单字节不带符号数,数据长度为 30H,要求找出 最大数存入 BIG 单元。 答: START: MOV R7,30H DEC R7 MOV R0,#21H MOV A,R0 LOOP:INC R0 CLR C SUBB A,R0 JNC NEXT MOV A,R0 NEXT:DJNZ R7,LOOP MOV BIG, A SJMP $ END 13、求双字节补码程序 设双字节数放在内部 RAM 的 30H 和 31H 单元(高字节在低地址) ,将其取补后存入 40H(存放高字节)和 41H(存放低字节)单元 答: START:MOV A,31H CPL A ADD A,#01H MOV 41H,A MOV A,30H CPL A JNC DONE ADD A,#01H DONE:MOV 30H,A SJMP $ 14、编程统计累加器 A 中“1”的个数。 答: MOV R1,#0 PUSH ACC LOOP1:JZ DONE CLR C RLC A JNC LOOP1 INC R1 SJMP LOOP1 DONE:POP ACC SJMP $ END 15、编程序实现 1+2+3+100? 答: 汇编代码如下: H_Byte EQU R4 ;保存结果,高 8 位 L_Byte EQU R5 ;保存结果,低 8 位 Max_Adder EQU 100 ;最大的加数 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#1 ;加数 MOV R4,#0 MOV R5,#0 START: MOV A,#Max_Adder CLR CY SUBB A,R2 JC RESULT MOV A,R2 ADD A,L_Byte 第 21 页 共 49 页 MOV L_Byte,A ;保存低位 MOV A,H_Byte ADDC A,#0 MOV H_Byte,A ;保存高位 INC R2 JMP START RESULT: SJMP $ ;只用于调试 END C 语言代码如下: #include “at89x51.h“ /由于这里只是计算结果,所以这行代码可以去掉 void main(void) unsigned char i=1; unsigned int result=0; for(i=1;i Sbit P1_0=P10; void time0(void) interrupt 1 using 1 P1_0!P1_0; TH0(65536-500)256); TL0(65536-500)256); 第 39 页 共 49 页 void main(void) MODE=0x01; TH0(65536-500)256); TL0(65536-500)256); EA=1; ET0=1; TR0=1; while (1); 第 11 章思考题及习题参考答案 1 简述单片机应用系统设计的一般方法及步骤。 解: 单片机应用系统设计的一般方法及步骤如图 11.1 所示。 (1)明确设计任务 (2)器件选择 (3)总体设计 开 始 明确任务 、 确定系统的功能与性能 选型 、 软硬件划分 硬件设计 软件设计 系统调试 清除故障 、 修改程序或硬件 固化程序 、 应用系统独立运行 完 成 修 改 修 改 图 11-1 单片机应用系统设计的过程 2 简述单片机应用系统设计中软、硬件设计原则。 解: (1)硬件电路设计 在硬件设计时,要尽量应用最新单片机,采用新技术。要注意通用性的问题,尽可能 选择典型电路,并符合单片机常规用法,为硬件系统的标准化、模块化打下良好的基础。 系统扩展与外围设备的配置水平应充分满足应用系统的 功能要求,并留有适当余地,以便进行二次开发。硬件 系统设计应尽量朝“单片” (片上系统 SOC)方向发展, 以提高系统的稳定性。工艺设计时要考虑安装、调试、 维修的方便。扩展接口的开发尽可能采用 PSD 等器件 开发。 (2)软件设计 软件设计随单片机应用系统的不同而不同。图 11.2 给 出了单片机软件设计的流程图。一般可分为以下几个方 面。 总体规划 程序设计技术: 模块程序设计、自顶向下的程 图 11.2 软件设计的流程图 第 41 页 共 49 页 序设计。 程序设计:建立数学模型、绘制程序流程图、程序的编制。 软件装配。 3 单片机应用系统软、硬件设计应注意那些问题? 解: 硬件设计: (1)存储器扩展:容量需求,在选择单片机时就考虑到单片机的内部存储器资源,如 能满足要求就不需要进行扩展,在必须扩展时注意存储器的类型、容量和接口,一般尽量 留有余地,并且尽可能减少芯片的数量。选择合适的方法、ROM 和 RAM 的形式,RAM 是否要进行掉电保护等。 (2)I/O 接口的扩展:单片机应用系统在扩展 I/O 接口时应从体积、价格、负载能力、 功能等几个方面考虑。应根据外部需要扩展电路的数量和所选单片机的内部资源(空闲地 址线的数量)选择合适的地址译码方法。 (3)输入通道的设计:输入通道设计包括开关量和模拟输入通道的设计。开关量要考 虑接口形式、电压等级、隔离方式、扩展接口等。模拟量通道的设计要与信号检测环节 (传感器、信号处理电路等)结合起来,应根据系统对速度、精度和价格等要求来选择, 同时还需要和传感器等设备的性能相匹配,要考虑传感器类型、传输信号的形式(电流还 是电压) 、线性化、补偿、光电隔离、信号处理方式等,还应考虑 A/D 转换器的选择(转 换精度、转换速度、结构、功耗等)及相关电路、扩展接口,有时还涉及软件的设计。高 精度的模数转换器价格十分昂贵,因而应尽量降低对 A/D 转换器的要求,能用软件实现的 功能尽量用软件来实现。 (4)输出通道的设计:输出通道设计包括开关量和模拟量输出通道的设计。开关量要 考虑功率、控制方式(继电器、可控硅、三极管等) 。模拟量输出要考虑 D/A 转换器的选 择(转换精度、转换速度、结构、功耗等) 、输出信号的形式(电流还是电压) 、隔离方式、 扩展接口等。 (5)人机界面的设计:人机界面的设计包括输入键盘、开关、拨码盘、启/停操作、复 位、显示器、打印、指示、报警等。输入键盘、开关、拨码盘应考虑类型、个数、参数及 相关处理(如按键的去抖处理) 。启/停、复位操作要考虑方式(自动、手动)及其切换。 显示器要考虑类型(LED,LCD) 、显示信息的种类、倍数等。此外还要考虑各种人机界面 的扩展接口。 (6)通信电路的设计:单片机应用系统往往作为现场测控设备,常与上位机或同位机 构成测控网络,需要其有数据通信的能力,通常设计为 RS-232C、RS-485 、红外收发等通 信标准。 (7)印刷电路板的设计与制作:电路原理图和印刷电路板的设计常采用专业设计软件 进行设计,如 Protel,OrCAD 等。设计印刷电路板需要有很多的技巧和经验,设计好印刷 电路板图后应送到专业化制作厂家生产,在生产出来的印刷电路板上安装好元件,则完成 硬件设计和制作。 (8)负载容限的考虑:单片机总线的负载能力是有限的。如 MCS-51 的 P0 口的负载 能力为 4mA,最多驱动 8 个 TTL 电路,P1P3 口的负载能力为 2mA,最多驱动 4 个 TTL 电路。若外接负载较多,则应采取总线驱动的方法提高系统的负载容限。常用驱动器有: 单向驱动器 74LS244,双向驱动器 74LS245 等。 (9)信号逻辑电平兼容性的考虑:在所设计的电路中,可能兼有 TTL 和 CMOS 器件, 也有非标准的信号电平,要设计相应的电平兼容和转换电路。当有 RS-232,RS-485 接口 时,还要实现电平兼容和转换。常用的集成电路有 MAX232,MAX485 等。 (10)电源系统的配置:单片机应用系统一定需要电源,要考虑电源的组数、输出功 率、抗干扰。要熟悉常用三端稳压器(78 系列、79 系列) 、精密电源 (AD580,MC1403 ,CJ313/336/385 ,W431)的应用。 (11)抗干扰的实施:采取必要的抗干扰措施是保证单片机系统正常工作的重要环节。 它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。 软件设计: (1)总体规划:软件所要完成的任务已在总体设计时规定,在具体软件设计时,要结 合硬件结构,进一步明确软件所承担的一个个任务细节,确定具体实施的方法,合理分配 资源。 (2)程序设计技术:合理的软件结构是设计一个性能优良的单片机应用系统软件的基 础。在程序设计中,应培养结构化程序设计风格,各功能程序实行模块化、子程序化。一 般有以下两种设计方法: (a)模块程序设计:模块程序设计是单片机应用中常用的一种程序设计技术。它是把 一个较长的程序分解为若干个功能相对独立的较小的程序模块,各个程序模块分别设计、 编程和调试,最后由各个调 试 好 的 模 块 组 成 一 个 大 的 程 序 。 其 优 点 是 单 个 功 能 明 确 的 程 序 模 块 的 设 计 和 调 试 比 较 方 便 , 容易完成,一个模块可以为多个程序所共享。其缺点是各个 模块的连接有时有一定难度。 (b)自顶向下的程序设计:自顶向下程序设计时,先从主程序开始设计,从属程序或 子程序用符号来代替。主程序编好后再编制各从属程序和子程序,最后完成整个系统软件 的设计。其优点是比较符合于人们的日常思维,设计、调试和连接同时按一个线索进行, 程序错误可以较早的发现。缺点是上一级的程序错误将对整个程序产生影响,一处修改可 能引起对整个程序的全面修改。 (3)程序设计:在选择好软件结构和所采用的程序设计技术后,便可着手进行程序设 计,将设计任务转化为具体的程序。 (a)建立数学模型:根据设计任务,

温馨提示

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

评论

0/150

提交评论