单片机原理、应用与PROTEUS仿真_第1页
单片机原理、应用与PROTEUS仿真_第2页
单片机原理、应用与PROTEUS仿真_第3页
单片机原理、应用与PROTEUS仿真_第4页
单片机原理、应用与PROTEUS仿真_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理、应用与单片机原理、应用与 PROTEUS 仿真仿真习题答案习题答案王妹芳编写周灵彬审校 目目 录录第一章第一章 概概 论论.2第二章第二章 AT89C51 单片机内部结构基础单片机内部结构基础.3第三章第三章 AT89C51 指令系统指令系统.6第四章第四章 AT89C51 汇编语言程序设计汇编语言程序设计.10第五章第五章 AT89C51 输入输入/输出(输出(I/O)口及其简单应用)口及其简单应用.16第六章第六章 AT89C51 中断系统与定时器中断系统与定时器/计数器计数器.18第一章第一章 概概 论论 1. 什么是单片机、单片机系统、单片机应用系统?答:单片机:又名微控制

2、器,是将微型计算机中的中央处理器(CPU) 、随机存储器(RAM) 、只读存储器(ROM)及 I/O 口电路等主要部件,结合连接它们的总线集成在一块芯片上,即它是一块智能芯片。单片机系统:单片机本身只是一块芯片,它并不能集成计算机的全部电路,因此需要加上时钟、复位电路等,才能构成单片机最小应用系统;若最小系统资源不足时,还需扩展外围电路和外围芯片等,从而构成能满足应用要求的单片机系统。单片机应用系统:它是为实际的控制应用而设计的,该系统与控制对象结合在一起,是满足嵌入式对象要求的全部电路系统。它在单片机的基础上配置了前/后向通道接口电路、人机交互通道接口电路、串行通信接口等面向对象的接口电路。

3、另单片机系统和单片机应用系统都是软硬件结合的系统,缺一不可。2. 单片机有哪些特点?答:单片机的特点很多,主要是体积小品种多,价格便宜,可靠性高,使用灵活,还有(1)突出控制功能(2)ROM 和 RAM 分开(3)单片机资源具有广泛的通用性(4)易于扩展 ROM、RAM、定时/计数器、中断源等资源。3. 为什么说 AT89C51 单片机是 MCS-51 系列的兼容机?AT89C51 单片机有何优点?答: AT89 系列单片机是将 FLASH 存储器技术和 MCS-51 系列单片机的基本内核相结合的单片机,且管脚也与之兼容,可以直接代换,所以说 AT89C51 是 MCS-51 系列的兼容机。A

4、T89C51 单片机是 AT89 系列机的标准型单片机,它的优点主要有:内 ROM 是 FLASH 存储器,已获得广泛应用的 80C51 兼容,采用静态逻辑设计,操作频率范围宽,具有两个软件选择的节电模式等。4. AT89C51 单片机由哪些主要功能部件组成? 答:CPU,RAM,ROM,I/O 接口等。5. 面包板、电子电路实验板、PCB 板在产品开发过程中的作用?它们各有什么优缺点?答:它们都是单片机实际应用系统中的不可缺少的一部分,它们都是构成硬件系统连接的载体介质。面包板可以多次利用,可是稳定性不高;电子电路实验板的稳定性由焊接质量来决定,不可多次利用;PCB 板最为可靠,可是如果不是

5、量产,价格偏高,时间较长。6. 简述单片机应用研发过程和研发工具。答:任务分析方案论证硬件设计软件设计仿真调试实物制作与调试。研发工具:调试仿真软件 KEIL、在线仿真器、编程器或 ISP 下载器、PROTEUS 仿真平台、教学实验板等。第二章第二章 AT89C51 单片机内部结构基础单片机内部结构基础1. AT89C51 单片机内部结构主要有哪些部件组成?它们的主要功能是什么?答:AT89C51 单片机内部结构主要有:(1)中央处理器 CPU,是单片机的核心,完成运算和控制功能;(2)内部数据存储器(256 字节) ,前面 128 个单元 00H7FH 存储内部数据,后面 128 个单元 8

6、0HFFH 被专用寄存器占用,用来实现对片内各部件进行管理、控制、监视;(3)程序计数器 PC,是一个 16 位专用寄存器,其内容为下一条执行指令的地址;(4)Flash 内部程序存储器(4K) ,用于存储程序、原始数据、表格等;(5)4 个并行 I/O 口(8 位) ,实现数据的并行输入输出;(6)串行通信口,实现单片机和其他数据设备之间的串行数据传送;(7)2 个定时器/计数器(16 位) ,实现定时或计数功能;(8)中断控制系统,共 5 个中断源,分高低两个优先级;(9)一个片内振荡器和时钟电路,为单片机产生时钟脉冲序列;(10)总线,用于连接各个部件和单片机系统的扩展。2. 请将 AT

7、89C51 的 40 个引脚按 4 类(电源、时钟、控制和 I/O 引脚)分类。答:电源(2):Vss 接地端,Vcc 接 DC 正电源线;时钟(2):XTAL1,XTAL2控制(4):RST 复位输入,ALE/(/PROG)地址锁存允许/编程脉冲,/PSEN 外 ROM 读选通信号,(/ES) / VPP 内外 ROM 选择/编程电源I/O 引脚(32):P0P3 并行 8 位 I/O 口3. AT89C51 单片机引脚/EA、RST、ALE、/PSEN 的功能是什么?答:/EA 是片内外 ROM 选择端,ROM 的寻址范围为 64KB,而 AT89C51 内部只有 4KB ROM,当不够用

8、时可在外扩展 ROM。当/EA 信号为低电平时,指访问外部 ROM;当/EA为高电平时,则先访问内部 ROM,当 PC 值超过 4KB 时自动转向外部 ROM 中执行。RST 复位信号,当此引脚上的信号出现至少两个机器周期的高电平将使单片机复位。ALE 地址锁存控制信号,当系统扩展时,ALE 用于控制把 P0 口输出的低 8 位地址送入锁存器存起来,以实现低位地址和数据的分时传送。/PSEN 外部 ROM 的读选通信号,在访问外部 ROM 时,每个机器周期两次 PSEN 有效(低电平) ,但在此期间内,每当访问外部数据存储器时,这两次有效的 PSEN 将不出现。4. 什么是单片机的振荡周期、状

9、态时钟周期、机器周期和指令周期?它们之间有什么关系?答: 单片机是按一定的时序进行工作的,而时序是通过 XTAL1 和 XTAL2 引脚跨接振荡器与内部振荡电路共同产生固定频率的波形。我们把振荡频率的倒数称振荡周期。状态时钟周期是指单片机时钟信号的周期,是振荡周期的两倍,又称状态周期。一个机器周期由6 个状态组成,即机器周期等于 6 个状态时钟周期或等于 12 个振荡周期。指令周期是指单片机执行一条指令所占用的时间,根据指令的不同,可包含有 1、2、4 等机器周期的倍数。5. 当 AT89C51 单片机外接晶振为 4MHZ 时,其振荡周期、状态时钟周期、机器周期、指令周期的值各为多少?答:振荡

10、周期为 0.25s,状态时钟周期为 0.5s,机器周期为 3s,指令周期根据指令而不同可能是 3s、6s、12s 等。6. 简述 AT89C51 单片机复位条件,并说明复位后寄存器中的数值状态。答:当 RST 引脚上的复位信号保持至少两个机器周期的高电平时,即满足复位条件。 复位后程序计数器 PC 的值初始化为 0000H,这样单片机在复位后就从程序存储器ROM 的 0000H 单元开始执行程序。另外其他的寄存器内容为:ACC,B,PSW,TCON,TL0,TH0,TL1,TH1,SCON,TMOD 均为 00H,而DPTR=0000H,SP07H,P0P3=0FFH,IP=000000B,I

11、E=000000B,PCON=00000B。参考表 2-1。7. 参阅图 2-5,分析上电复位过程。答:图 2-5 中 A 是通过外部复位电容充电实现复位的,单片机上电的瞬间,电容两端的电位不会突然变化,则 RST 的电位为 Vcc(高电平) ,随着充电电流的减小,RST 引脚电位逐渐下降,而其维持高电平的时间取决于电容的充电时间,应大于两个机器周期。B 图是在 A 的基础上引入了按键复位,按下按键时 RST 为高(电阻分压) ,按键松开后 RST 逐渐降为低电平,复位结束。8. AT89C51 单片机的 ROM 空间中,这 6 个地址(0、03H、0BH、13H、1BH、23H)有什么特殊的

12、意义和用途?用户应怎样合理安排?答:他们都是特殊的地址单元,其中 0000H 是单片机复位后,系统开始取指、执行指令的地址,即单片机复位后 PC 值为 0000H;而 03H、0BH、13H、1BH、23H 是单片机 5 个中断服务子程序的入口地址。相邻中断入口地址间隔 8 个单元。当程序使用中断时,在入口地址处安放一条跳转指令,而相应的中断服务子程序从转移地址开始安放,若中断服务子程序小于等于 8 个单元可直接存在入口地址开始的 8 个单元内。若没有用到中断功能,这些单元就可以作为一般的程序存储器用。9. 画图说明 AT89C51 单片机的存储空间结构。答: PSEN000HFFFH内部RO

13、M外部ROMEA=1EA=0FFFFH1000H外部ROM 60KBROM,程序存储器(只读)0000HFFFFHRDWR00H7FHFFH80H内部数据RAM专用寄存器区外部内部RAM,数据存储器(读/写) 程序存储器 ROM 结构 内 RAM 存储器结构10. AT89C51 单片机的片内 RAM 是如何分区的,各有什么功能?答:AT89C51 单片机内 RAM,最低 32 单元(00H1FH)为工作寄存器区;工作寄存器上面的 16 个单元(20H2FH)构成固定的可位寻址存储区;用户 RAM 区(30H7FH) ,可作为数据缓冲区,用于存放各种数据和中间结果,同时没有使用的工作寄存器单元

14、和可位寻址单元都可作为数据缓冲区,同时该区也可作为堆栈区,栈底可以根据片内数据存储器的使用情况由指令设定。11. AT89C851 单片机有多少专用寄存器?分布在何地址范围?若对片内 84H 读/写将会产生什么结果?(提示:考虑 84H 为位地址、为字节地址两种情况)答:AT89C51 单片机有 21 个专用寄存器,零散分布在内部 RAM 的高 128 单元(80HFFH) 。84H 位地址为 P0.4 位,对其进行读写就是对 P0 口的第五位进行读写;而 84H 为字节地址时因为该单片机本身未对 84H 定义专用寄存器,因此不能对 84H 字节地址进行读写。12. 分别说明程序计数器 PC

15、和堆栈指针 SP 的作用?复位后 PC 和 SP 中值各为何?在程序设计时,有时为什么要对 SP 赋值?答: 程序计数器 PC 时一个 16 位的计数器,其内容为将要执行的指令的首地址,寻址范围达 64KB,PC 具有自动加 1 功能,以实现程序的顺序执行。PC 不可寻址,无法对它进行读写。堆栈指针 SP 的内容就是堆栈栈顶的存储单元地址,向堆栈中每存一个数,SP 中的值就自动加 1,每取一个数就自动减 1,SP 始终指在栈顶地址。复位后,PC=0000H,使单片机从 0000H 单元开始执行,SP=07H,这样堆栈就要从08H 开始,而 08H 属于工作寄存器区,若程序要用到这些寄存器组则要

16、将 SP 设置大些,因此堆栈最好在内部的 RAM(30H7FH)中开辟。13. 开机复位后,CPU 作用的是哪组工作寄存器?它们的地址是什么?CPU 如何确定和改变当前工作寄存器?答:开机复位后,CPU 作用的时第 0 组工作寄存器,它们的地址是内部 RAM 的00H07H,CPU 若要确定当前工作寄存器,则读出专用寄存器 PSW 的 RS1 和 RS0 内容;若要改变当前工作寄存器,则需要修改 PSW 的 RS1 和 RS0 的内容。14. 位地址 3EH 和字节地址 3EH 有何区别?位地址 3EH 具体在片内 RAM 中什么位?答:字节地址 3EH 是内 RAM 低 128 字节中的一个

17、字节存储单元。而位地址是针对可位寻址区域而言的,位寻址区占用了字节地址的 20H2FH 共 16 个字节,字节地址 20H 中的20H.020H.7 位地址是 00H08H,因此位地址 3EH 是字节地址 27H 中的第 7 位。第三章第三章 AT89C51 指令系统指令系统1. 简述下列基本概念:指令,指令系统,机器语言,汇编语言。答:指令是单片机 CPU 执行某种操作的命令。指令系统是一台计算机所能执行的指令集合。机器语言即二进制代码语言,是计算机可以直接识别。汇编语言是用助记符、字符串和数字等来表示指令的程序语。2. 简述 AT89S51 单片机的指令格式答:该单片机的指令由两部分组成,

18、即操作码和操作数。操作码用来规定指令进行什么操作,而操作数则是指令操作的对象,操作数可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号。指令格式一般为: 标号: 操作码 操作数 1,操作数 2,操作数 3 ;注释3. 简述 AT89S51 的寻址方式和所能涉及的寻址空间 答:共有 7 种寻址方式,见表 3-2。分别是:(1)寄存器寻址:寻址范围为通用寄存器组,共 4 组 32 个,但只能使用当前寄存器组,因此使用前需要通过对 PSW 种的 RS1、RS0 位的状态进行设置;(2)直接寻址:寻址范围为内部 RAM,包括低 128 位用户 RAM 区和高 128 位专用寄存器;(3)寄存

19、器间接寻址:寻址范围为内部 RAM 低 128 位,外部 RAM 64KB(低 256 单元可以使用 DPTR 和R0、R1 作为间接寻址寄存器,而其他单元只能用 DPTR 作为间接寻址寄存器) ;(4)立即寻址:直接给出立即数,不涉及寻址空间;(5)变址寻址:只对程序寄存器进行寻址;(6)相对寻址:以 PC 的内容为基值,加上指令机器代码中相对地址形成新的 PC 值转移;(7)位寻址:寻址空间包括内部 RAM 位寻址区(202FH)和专用寄存器的可寻址位。4. 要访问片外程序存储器和片外数据存储器,应采用哪些寻址方式?答:访问片外程序存储器采用变址寻址方式,片外数据存储器采用寄存器间接寻址方

20、式,且用 DPTR 可以访问 64KB,而用 R0 或者 R1 只可访问低 256 字节。5. 在 AT89S51 片内 RAM 中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请分析下面各是什么指令,说明源操作数的寻址方式及按顺序执行每条指令后的结果。答:表表 3-2 寻址方式及相应的寻址存储器范围寻址方式及相应的寻址存储器范围寻 址 方 式寻 址 存 储 器 范 围立即寻址程序存储器 ROM直接寻址片内 RAM 低 128B,特殊功能寄存器寄存器寻址工作寄存器 R0R7,A, C, DPTR,AB 寄存器间接寻址片内 RAM 低 128B,片外 RA

21、M 变址寻址程序存储器 ROM(A+DPTR,A+PC)相对寻址程序存储器 ROM (相对寻址指令的下一指令 PC 值加128127)位寻址片内 RAM 的 20H2FH 字节地址中所有的位,可位寻址的特殊功能寄存器指令指令说明源操作数寻址方式结果MOV A, 40H将内部 RAM 中 40H 内容传送到累加器 A 中(A) (40H)直接寻址(A)48HMOV R0, A再将 A 中内容传送给 R0(R0) (A)寄存器寻址(R0)=48HMOV P1, #0F0H将立即数 0F0H 送到 P1口,即 P1.4P1.7 位 1,其余为 0(P1) 0F0H立即数寻址(P1)=0F0HMOV

22、R0, 30H将 30H 中的内容,传放到以 R0 单元内容为地址的单元中(R0) (30H)直接寻址(R0)=(48H)=38HMOV DPTR, #3848H将立即数 3848 传送给DPTR 数据指针(dptr) 3848H立即数寻址(DPTR)=3848HMOV 40H, 38H将内部 RAM 中 38H 内容传送到 40H 单元中(40H) (38H)直接寻址(40H)=40HMOV R0, 30H将 30H 中的内容给 R0 寄存器(R0) (30H)直接寻址(R0)=38HMOV P0, R0将 R0 的内容传送到 P0(P0) (R0)寄存器寻址(P0)=38HMOV A, R

23、0将 R0 内容为地址的该单元内容传送给 A(A)(R0)寄存器间接寻址(A)=40HMOV P2, P1将 P1 的内容传送给 P2(P2) (P1)直接寻址(P2)=0F0H6. 指出下列指令的源操作数的寻址方式 MOV A, 65H 直接寻址MOV A, #65H 立即数寻址MOV A, R0 寄存器间接寻址MOV A, R2 寄存器寻址MOVC A, A+PC 变址寻址7. 内部 RAM 和特殊功能寄存器各用什么寻址方式?答:内部 RAM 有寄存器寻址方式、直接寻址方式和间接寻址方式; 特殊功能寄存器除 A 外只能进行直接寻址。8. 已知:(A)=5BH, (R1)=30H, (30H

24、)=0CEH, (P1)=71H, (PSW)=80H, (PC)=2000H, (205CH)=46H, (SP)=30H, (B)=78H。分别求各条指令执行后的结果(要求进行二进制运算验证)及标志位 Cy、P 的影响。(1)MOV A, R1 (A)=0CEH P=1, C 不变(2)MOV 40H, 30H (40H)=0CEH P 和 C 不变(3)MOV P1, R1 (P1)=30H P 和 C 不变(4)MOVC A, A+PC (A)=46H P=1, C 不变(5)PUSH B (31H)=78H,(SP)=31H P 和 C 不变(6)POP DPH (DPH)=0CEH

25、,(SP)=29H P 和 C 不变(7)XCHD A, R1 (A)=05EH,(30H)=CBH P=1, C 不变(8)ADD A, 30H (A)=29H P=1, C=1(9)ADDC A, P1 (A)=CDH P=1, C=0(10)SUBB A, P1 (A)=E9H P=1, C=1(11)ANL P1, #0FH (P1)=01H P 和 C 不变(12)CLR PSW.7 C=0(13)RLC A (A)=B7H P=0, C=0(14)ORL C, 90H C=1, P 不变9. 对下面一段程序加上机器码和注释,并说明程序运行后寄存器 A、R0 和内部 RAM 50H、

26、51H、52H 单元的内容。 MOV 50H,#50H 75 50 50;(50H)50H MOV A,50H E5 50;(A)(50H) MOV R0,A F8;(R0)(A)MOV A,#30H 74 30;(A)30HMOV R0,A F6;(R0) )(A)MOV A,#50H 74 50;(A)50HMOV 51H,A F5 51;(51H)(A)MOV 52H,#00H 75 52 00;(52H)00H答:运行后寄存器(A)=50H,(R0)=50H,(50H)=30H,(51)=50H,(52H)=00H10. 区别下列各指令中 20H 的含义,在每条指令后加上注释。MOV

27、A , 20H 将 20H 立即数传送给 AMOV 45H, 20H 将内部 RAM 中 20H 单元的内容传送到 45H 中MOV C, 20H.0 将内部 RAM 中 20H 单元内容的第 0 位(最低位)传送给 CMOV C, 20H 将内部 RAM 中 20H 位地址内容传送给 C11. 写出完成以下功能的指令(1)将立即数 30H 送到 R1;(2)将内 RAM30H 中的数据送到内 RAM78H 单元;(3)将立即数 30H 送到以 R0 中内容为地址的存储器中;(4)将 R2 中的内容送到P1;(5)将内 RAM60H 单元的数据送到外 RAM60H 单元;(6)将内 RAM60

28、H 单元的数据送到外 RAM1060H 单元;(7)将 ROM1000H 单元的内容送到内 RAM30H 单元;(8)使 ACC.7 置位;(9)使累加器的低 4 位清零;(10) 使 P1.2 与 CY相与,结果送 CY;(11) 立即数 45H、93H 进行逻辑与、或、异或操作;(12) 两立即数求和:1C0H45H,结果按高低 8 位存在 30H、31H 中。答案:(1)MOV R1,30H (2) MOV 78H, 30H(3)MOV R0, #30H (4)MOV P1, R2(5)MOV A,60H; MOV P2,#0; MOV R0,#60H; MOVX R0,A(6) MOV

29、 A,60H; MOV DPTR,#1060; MOVX DPTR,A(7) MOV A, #00H MOV DPTR,#1000H MOVC A, A+DPTR MOV 30H,A (8)SETB ACC.7(9) ANL A, #0F0H(10) ANL C, p1.2(11) 与: MOV A,#45H ANL A,#59H 或: MOV A,#45H ORL A,#59H异或:PMOV A,#45H XRL A,#59H(12) CLR CMOV R2,#1MOV A,#0C0H ADD A,#45HMOV 31H,AMOV A,R2ADDC A,#0MOV 30H,A12. 写出下列

30、指令执行过程中堆栈的变化设堆栈初值为 X: MOV R6, #11H (SP)=X(堆栈不变) MOV R7, #23H (SP)=X(堆栈不变) ACALL 200H (SP)=X+2 ;(X+1)=第 4 条指令的首址 PC 低 8 位 (X+2)=第 4 条指令的首址 PC 高 8 位 POP 50H (SP)=X-1 POP 51H (SP)=X-2 SJMP $ ORG 200H RET答:执行过程中,前面两条为立即寻址指令,堆栈不变;执行第三条 ACALL 指令时,首先将程序寄存器 PC 的当前值加 2,接着先后将 PC 的低八位和高八位分别进栈,(SP)= (SP)+2;然后再将

31、 PC 内容中的低 11 位用 200H 来替代,同时程序跳到第七条 ORG200H 中,接着 RET 表示子程序返回,将原先压入堆栈的 PC 值弹出,(SP) =(SP)-2;最后两条 POP指令执行后将 SP 所指地址中的内容赋给 50H,SP 减 1 后再将 SP 所指地址中的内容赋给51H,SP 内容再减 1 给 SP,最后程序结束。13. 请写出能实现下列功能的程序段:(1)一个 16 位数据,高低字节分别放在 20H 和 21H 中,试将该数乘以 2MOV A, 21H CLR C RRC AMOV 21H, AMOV A, 20HRRC AMOV 20H, A(2)16 位二进制

32、数由高位到低位放在 30H 和 31H 单元,将其内容加 1; MOV A, 31H ADD A, #01HMOV 31H, AMOV A, 30HADDC A, #00HMOV 30H, A(3)将 DPTR 中的数据减 5;CLR CMOV A, DPL SUBB A, #05H MOV DPL, A MOV A, DPH SUBB A, #00H MOV DPh, A(4)有 3 个位位变量 X,Y,Z,请编写程序实现 Y=X+YZ 的逻辑关系式。X BIT 30HY BIT 31HZ BIT 32HMOV C,YANL C,ZMOV 20H,CMOV C,XORL C,20HMOV Y

33、, C第四章第四章 AT89C51 汇编语言程序设计汇编语言程序设计1. 将一个按高低字节存放在 21H、20H 中的一个双字节乘以 2 后,再按高低次序将结果存放到 22H、21H、20H 单元ORG 0STAR: CLR CMOV 20H,#0E2H ;设低字节的数据 是 E2HMOV 21H,#0F3H;设高字节的数据是 F3HMOV A, 20HMOV B,#2HMUL ABMOV 20H,AMOV 23H,BMOV A,21HMOV B,#2HMUL ABADDC A,23HMOV 21H,AMOV 22H,BSJMP $END2.试编程,将片外 RAM 1000H1050H 单元的

34、内容置为 55H。MOV P2,#10HMOV R0,#00HMOV A,#55HMOVX R0,AMOV R0,#50HL0: MOVX R0,A DJNZ R0,L0 SJMP $END3. 试编程统计数据区长度的程序,设数据区从片内 RAM 30H 单元开始,该数据区以 0 结束,统计结果放入 2FH 中。MOV R0,#30HL0: MOV A,R0 JZ L1 INC R1 INC R0SJMP L0L1:MOV 2FH, R14. 试编写程序,将片外 RAM 2000H200FH 数据区中的数据由大到小排列起来。ORG 0L0: MOV P2,#20H MOV R0,#00H MO

35、V R7,#0FH CLR F0LOOP: MOVX A,R0 MOV 31H,A INC R0 MOVX A,R0 CLR C CJNE A,31H,L1L1: JC L2 DEC R0 MOVX R0,A MOV A,31H INC R0 MOVX R0,A SETB F0L2: DJNZ R7,LOOP JB F0,L0 SJMP $ END5. 若晶振频率位 6MHZ,试计算下面延时子程序的延时时间 DELAY: MOV R7, #0F6H;1 个机器周期 LP: MOV R6, #0FAH;1 个机器周期 DJNZ R6, $;2 个机器周期 DJNZ R7, LP;2 个机器周期

36、RET;2 个机器周期答: 机器周期为 2us,则有:1+(1+2250+2)246+22 us =247482 us6. 试分别编写延时 20ms 和 1s 的程序设晶振频率为 12M20ms:ORG 0MOV R1,#102L1: MOV R0,#48L2: NOP NOP DJNZ R0,L2 NOP DJNZ R1,L1NOPNOPNOPNOPNOPNOPNOPEND 1s:-ORG 0MOV R2,#50L0: MOV R1,#100L1: MOV R0,#49L2: NOP NOP DJNZ R0,L2 NOP DJNZ R1,L1DJNZ R2,L0SJMP $END7. 试编写

37、利用调用子程序的方法延时 1min 的程序。ORG 0HMOV R2,#60A0: LCALL DLY DJNZ R2,A0SJMP $DLY:MOV R2,#50L0: MOV R1,#100L1: MOV R0,#49L2: NOP NOP DJNZ R0,L2 NOP DJNZ R1,L1DJNZ R2,L0RETEND8. 用查表程序求 06 之间的整数的立方。已知整数存在 A 中,查表结果存入片内 RAM 31H 中。ORG 0MOV A, #DATAMOV DPTR,#TABMOVC A, A+DPTRMOV 30H,A SJMP $TAB: DB 0,1,8,27,64,125,

38、216END若立方数超过一个字节,在两个字节以内,由以下程序实现。若立方数超过一个字节,在两个字节以内,由以下程序实现。ORG 0000HMOV A,#5RL AMOV R0,AMOV DPTR,#TABMOVC A, A+DPTRMOV 31H,A ;高位MOV A,R0INC AMOVC A,A+DPTRMOV 30H,A ;低位SJMP $TAB: DW 0,1,8,27,64,125,216END9. 编写程序,查找在内部 RAM 的 30H50H 单元中出现 FFH 的次数,并将查找结果存入51H 单元。MOV R1,#00HMOV R0,#30HMOV R2,#21HL0: MOV

39、 A,R0 CJNE A,#0FFH,L1 INC R1L1: INC R0 DJNZ R2,L0 MOV 51H,R1SJMP $END10. 试用子程序求多项式:Y=(A+B)2+(B+C)2(要求:两数之和不能超过 16)X EQU 30H ;X 代表 AY EQU 31H ;Y 代表 BZ EQU 32H ;Z 代表 CF EQU 33H ;F 中存放计算结果 YMOV R1,XMOV R2,YLCALL L0MOV R3,AMOV R1,YMOV R2,ZLCALL L0ADD A,R3MOV F,ASjmp $L0: MOV A,R1 ADD A,R2 MOV B,A MUL AB

40、 RETend11. 已知(60H)=33H,(61H)=43H,试写出程序的功能和运行结果。ORG 0000hSS: MOV R0,#61H MOV R1,#70H ACALL CRR SWAP A MOV R1,A DEC R0 ACALL CRR XCHD A,R1 SJMP $CRR: MOV A,R0 CLR C SUBB A,#30h CJNE A,#0AH,NEQ AJMP BIGNEQ: JC CENBIG: SUBB A,#07HCEN: RET该程序的运行结果是:(60H)=33H, (61H)=43H, (70H)=C3H12. 内部 RAM 的 30H 单元开始存放着一

41、组无符号数,其数目存放在 21H 单元中。试编写程序,求出这组无符号数中的最小的数,并将其存入 20H 单元中。MOV R0,#30HMOV A,R0MOV 20H,ADEC 21HLOOP: INC R0 MOV A,R0 CJNE A,20H,L1L1: JNC L2 MOV 20H,AL2: DJNZ 21H,LOOP SJMP $END13. 写程序实现散转功能: (R2)=0 转向 RR0 (R2)=1 转向 RR1(R2)=2 转向 RR2ORG 0MOV R2,#2H ;设(R2)=2MOV DPTR,#TABMOV A,R2MOVC A,A+DPTRJMP A+DPTRTAB:

42、 DB RR0-TAB DB RR1-TAB DB RR2-TABRR0: MOV A,#1 ;RR0:将立即数 1 赋给 A SJMP ENDFRR1: MOV A,#2 ;RR1:将立即数 2 赋给 A SJMP ENDFRR2: MOV A,#3 ;RR2:将立即数 3 赋给 A SJMP ENDFENDF: SJMP $14. 试按子程序形式编程,将单字节二进制数高 4 位、低 4 位分别转换成两个字节的ASCII 码。MOV A,R0 ;将 R0 中的内容作为贝转换对象ANL A,#0FH ;取低四位MOV DPTR,#TABMOVC A,A+DPTRMOV 20H,A ;低四位转换

43、后存放于 20H 中MOV A,R0ANL A,#0F0H ;取高四位SWAP AMOVC A,A+DPTRMOV 21H,A ;高四位转换后存放于 21H 中TAB: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H第五章第五章 AT89C51 输入输入/输出(输出(I/O)口及其简单应用)口及其简单应用1. AT89C51 四个 I/O 口使用时有哪些分工和特点?试作比较,并填写下表。I/O 口相同的结构不同的结构基本功能第二功能SFR 字节地址位地址范围驱动能力P0多路选择开关输入输出数据线/低 8

44、 位地址线80H8087H强,8 个 LS TTL 输入,8 个引脚最大吸收电流26mAP1输入输出90H9097HP2多路选择开关输入输出高 8 位地址线A0HA0A7HP3都有锁存器、输入缓冲器和输出驱动器选择输出功能输入输出第二功能B0HB0B7H4 个 LS TTL输入,8 个引脚最大吸收流 15mA2. AT89C51 的 4 个 I/O 口作为输入口时,为什么要先写“1”?答:AT89C51 读操作时,为读入正确的引脚信号,必须先保证场效应管截止。因为场效应管导通,引脚电平为 0,显然,从引脚输入的任何外部信号都被场效应管强迫短路,严重时可能因有大电流流过场效应管,而将它烧坏。为保

45、证场效应管截止,必须先向锁存器写“1” ,使场效应管截止。 3.P0 口作输出口时,为什么要外加上拉电阻?答: 因为当 P0 口作数据传输作用时,输出驱动器是开漏电路,需要外加上拉电阻。4. 为什么当 P2 口作为扩展程序存储器的高 8 位地址后,就不宜作 I/O 口用?答: P2 口虽然有地址/数据的双重作用,可是在同一时间只能在一个状态下工作,如果有外部 ROM,访问的操作连续不断,P2 口作为高 8 位要不断的传送地址,因此不宜再作为数据传输用,如果是外 RAM,则根据对其读写的频繁度来决定是否将 P2 口作为数据传输。5. I/O 口直接驱动数码管显示时,选择共阴型数码管还是共阳型数码

46、管?为什么?试根据I/O 口的驱动能力及发光二极管的额定电流参数,确定图 5-9 中限流电阻的阻值。答:选择共阳型数码管,因为共阳数码管是用低电平(“0”)点亮的,而单片机输出低电平的吸收电流大;而共阴数码是用高电平(“1”)点亮的,而单片机输出高电平的驱动电流小,所以采用共阳数码管。其中图 5-9 中的电阻可以选择 300 欧姆的,因为去除数码管的 2V 左右的压降,要保证 10mA 的电流,限流电阻的阻值约是 300 欧姆。6. 试依图 5-4 简述 P0 口的工作原理。答:从 P0 口的位结构图中(图 5-4) ,可以知道它包含输出锁存器,输入缓冲器(2 个) ,输出驱动器和一个多路开关

47、及输出驱动的上拉电路。P0 口可以作为通常的 I/O 口进行数据的读操作和输出操作,同时还可以作为地址/数据线来复用,它的工作原理如下:输入/输出操作:多路开关连接 C 端,和锁存器连接,起输出/Q 与 Q0 就接通,且内部信号使得与门输入端 2 为 0,那么起输出 3 端也就为 0,使 Q1 截止,输出驱动器处在开漏状态,这时只要外接一个上拉电阻,就能够有效的进行输出/读操作;地址(低 8 位)/数据线复用:将多路开关和 B 端连接,则 Q1 的输入就是地址/数据信号,Q0 位其取反的信号,此时 A 点的信号就是引脚输出的地址/数据信号。第六章第六章 AT89C51 中断系统与定时器中断系统

48、与定时器/计数器计数器1. 什么叫中断?设置中断有什么优点?答:单片机执行程序的过程中,为响应内部和外部的随机发生的事件,CPU 暂时终止执行当前程序,转去处理突发事件,处理完毕后,再返回来继续执行原来终止了的程序,这一过程称为中断。设置中断使单片机能够及时的响应并处理运行过程中内部和外部的突发事件,解决单片机快速 CPU 与慢速外设间的矛盾,提高单片机工作效率及其可靠性。2. 写出 AT89C51 单片机 5 个中断源的入口地址、中断请求标志名称、位地址和所在的特殊功能寄存器。中断源入口地址中断请求标志名称中断请求标志位地址所在特殊寄存器INT00003HIE089HTCONT0000BHT

49、F08DHTCONINT10013HIE18BHTCONT1001BHTF18FHTCON串行口0023HTI、RI99H、98HSCON3.开 AT89C51 单片机的外中断 0,如何操作?写出操作指令。答:SETB EA SETB EX0或 MOV IE,#10000001B4. 中断处理过程包括哪 4 个步骤?简述中断处理过程。答:中断过程可以分为四步,分别是中断请求、中断响应、中断服务和中断返回。当中断源要 CPU 为其服务时,先发出一个中断请求信号,CPU 不断查询中断请求标志,一旦查询到某个中断请求标志置位,则根据中断响应条件去响应请求,从而转去执行中断服务程序。但转去中断程序时,

50、要求先保护现场,将相关的在服务子程序可能改变的存储单元内容压入堆栈保护,然后再去执行中断服务程序主体,最后中断返回,再返回前将原先的堆栈内容出栈,即恢复现场。5.中断响应需要哪些条件? 答:条件:(1)已经开总中断(EA=1)和相应中断源的中断;(2)未执行同级或更高级的中断;(3)当前执行指令的指令周期已经结束;(4)正在执行的不是 RET1 指令和访问 IE、IP 的指令,否则要再执行一条指令后才能响应。 6. 为什么在执行 RETI 或访问 IE、IP 指令时,不能立即响应中断? 答:因为 RETI 牵涉到堆栈操作,中断响应也牵涉到堆栈,它们是同一堆栈,且要开放同级中断,中断系统状态正在

51、发生变化;IE 和 IP 指令是中断控制相关存储器,修改后还需要一段稳定的时间。所以不能立即响应中断。这也是中断响应的限制条件。7. 在响应中断过程中,PC 的值如何变化?答:响应中断的过程中,PC 值随程序改变,在保护现场时将下条指令首地址压入堆栈,然后将中断的入口地址给 PC,进入中断服务程序;中断返回时,从堆栈取出断点地址给PC。8. 在 89C51 单片机内存中应如何安排程序区?答:(1)从 0 号地址开始存放程序,按地址号从小到大安排;(2)在使用中断功能时,一般 330H 留作中断使用,其他程序在 30H 以后的存储空间。因为 5 个中断源入口地址间隔只有 8 个单元,一般的中断服

52、务程序代码长度都超过 8,所以在各中断入口地址安排一条无条件转移指令,转入中断服务程序。89C51 片内有 4kB 的程序存储单元,其地址为 0000H0FFFH,单片机启动复位后,程序计数器的内容为 0000H,所以系统将从 0000H 单元开始执行程序。但在程序存储中有些特殊的单元:其中一组是 0000H0002H 单元,系统复位后,PC 为0000H,单片机从 0000H 单元开始执行程序,如果程序不是从 0000H 单元开始,则应在这三个单元中存放一条无条件转移指令,让 CPU 直接去执行用户指定的程序;另一组是0003H002AH,这 40 个单元各有用途,它们被均匀地分为五段,它们

53、的定义如下:0003H000AH 外部中断 0 中断地址区,000BH0012H 定时/计数器 0 中断地址区,0013H001AH 外部中断 1 中断地址区,001BH0022H 定时/计数器 1 中断地址区,0023H002AH 串行中断地址区。这 40 个单元是专门用于存放中断处理程序的入口地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。从上面可以看出,每个中断服务程序只有 8 个字节单元,用 8 个字节来存放一个中断服务程序显然是不可能的。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,我们是在中断响应的地址区安放一条无条件转移指令

54、,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU 读到这条转移指令,便转向其他地方去继续执行中断服务程序。9. 为什么一般的中断服务程序要在中断入口地址处设一条转移指令?答:因为每个中断的地址区只有 8 个单元,而一般的中断服务程序都大于 8 个单元的内容,所以需要在另外的空间来存储中断服务程序,因此需要在中断入口地址处设一条转移指令转入别处的中断服务程序空间。10. AT89C51 单片机中断优先级有几级?优先级和优先权如何区别?答:两级。 优先级分为高优先级和低优先级。当几个中断源同时请求时,CPU 先服务高优先级的中断,可由程序编程决定。优先权是将同一优先级

55、的所有中断源按先后进行排序,其中外部中断 0 最高,串行口中断最低,非编程决定。11. 试分析以下中断源得到服务程序的先后顺序的可行性。若能,应如何设置中断源的中断优先级?若不行,请讲出理由。(1)T0、T1、/INT0、/INT1、串行口可行,将 T0 和 T1 设置为高优先级,其他为低优先级(2)串行口、/INT0、T0、/INT1、T1可行,将串行口中断设置为高优先级,其他为低优先级(3)/INT0、T1、/INT1、T0、串行口不行,因为该单片机的优先级只有两级,然后综合考虑优先权该排列顺序不可行(4)/INT0、/INT1、串行口、T1、T0不行,两级优先级+优先权(5)串行口、T1

56、、/INT1、/INT0、T0不行,两级优先级+优先权(6)T0、/INT1、T1、/INT0、串行口可行,将 T0、INT1 和 T1 设置为高优先级,其他为低优先级(7)/INT0、串行口、T0、T1、/INT1不可行,两级优先级+优先权12. AT89C51 单片机外中断采用电平触发方式时,如何防止 CPU 重复响应外中断?答:采用电平触发方式时,应该在硬件电路上和中断服务程序中采取撤除中断请求信号的措施。其中硬件电路如图所示:/INT0P1.089C51QSpCPD输出负脉冲时Q置1锁存器1当外部设备有低电平触发方式的外中断请求时,中断信号经反相器,加到锁存器 CP 端,作为 CP 脉

57、冲。由于 D 端直接接地为 0,Q 端输出低电平,触发/INT0 产生中断。当 CPU相应中断后,在该中断服务程序中安排两条指令: ANL P1, #0FEH ORL P1, #01H使 P1.0 输出一个负脉冲信号,其延时时间为 2 个机器周期,加到锁存器 Sp 端(强迫置 1端) ,足以使锁存器置位,撤销引起重复中断的 INT0 低电平信号,从而撤除中断请求。13. AT89C51 单片机响应中断的优先顺序应依什么原则?答:先优先级从高到低,同优先级的再按优先权从高到低的响应原则。14. 什么叫保护现场?需要保护哪些内容?什么叫恢复现场?恢复现场与保护现场有什么关系?需遵循什么原则?答:一

58、旦进入中断服务程序,将与断点处有关且在中断服务程序中可能改变的存储单元内容通过 PUSH direct 指令压入堆栈保护,以便中断返回时恢复,称之为保护现场;与保护相对应的,在返回前通过 POP direct 指令恢复现场,再将保护现场压入堆栈的内容弹出送到原来相关的存储单元后再中断返回。使用堆栈保护现场、恢复现场要遵循堆栈先进后出的操作规则。15. 已知有 5 台外围设备,分别为 EX1EX5,均需要中断。现要求 EX1EX3 合用 INT0,余下的合用 INT1,且用 P1.0P1.4 查询,试画出连接电路,并编制程序,当 5 台外设请求中断(中断信号为低电平)时,分别执行相应的中断服务子

59、程序 SEVER1SEVER5。答: 连接电路如上图,外围设备有中断信号时,对应的 P1.0P1.4 口为高电平信号输出。通过或门判断是否有中断,又因单片机的外部中断信号是低电平有效,所以需要再添加一个反相器使得中断信号有效。程序如下:ORG 0000HSJMP STARORG 03HSJMP INT0SORG 13HSJMP INT1SORG 30HSTAR: MOV IE,#85H ;开总中断,外部中断 0 和 1 MOV TCON,#00H ;低电平触发SJMP $INT0S: MOV C,P1.0 JC SEVER1 MOV C,P1.1 JC SEVER2 MOV C,P1.2 JC

60、 SEVER3 RETIINT1S: MOV C,P1.3 JC SEVER4 MOV C,P1.4 JC SEVER5 RETISEVER1: SEVER2: SEVER3: SEVER4: SEVER5: END16. 如何理解加法计数器和减法计数器?答:加法计数器是指一个指令周期或外部脉冲时将加法计数器内容加 1,而减法刚好相反,当溢出时产生中断。17. 定时器/计数器在什么情况下是定时器?在什么情况下是计数器?答:当 TMOD 寄存器中的 C/(T)位内容为 1 时,为计数器工作方式使用;当其内容为 0时为定时器工作方式使用。18.定时器/计数器有哪些控制位?各控制位的含义和功能是什么

温馨提示

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

评论

0/150

提交评论