http://www.wkfxw.com 文库分享网
START:MOV R7,#00H MOV R1,#60 MOV R0,#60H
LOOP: MOV A,@R0 JNZ NPLS INC R7
NPLS: INC R0 DJNZ R1,LOOP DONE:
4.12 试编程:将 ROM 中自 2000H 单元起的 100 个数,按序移至片外 RAM 自 2080H 单元起的内 存区间去。 解: ORG 2000H
START:MOV DPTR,#2000H MOV R1,#64H MOV R2,#0
LOOP: MOV A,R2 MOVC A,@A+DPTR MOV R3,A MOV A,#80H ADD A,R2 MOV DPL,A MOV A,R3 MOVX @DPTR,A INC R2
MOV DPL,#0
35
DJNZ R1,LOOP DONE:
4.13 试编程:将 ROM中以 TAB 为初址的 32个单元的内容依次传送到片外 RAM以 00H为初址的
区域去(规定用查表指令)。 解: ORG 2000HH
START:MOV DPTR,#TAB MOV R0,#00H MOV R2,#20H LOOP: CLR A MOVC A,@A+DPTR MOVX @R0,A INC DPTR INC R0
DJNZ R2,LOOP DONE: SJMP DONE 4.14 阅读下列程序,
http://www.wkfxw.com 文库分享网
(1)说明该程序的功能。 (2)填出所缺的机器码。
(3)试修改程序,使片内 RAM 的内容达到右下图所示的结果。 7A MOV R2,#0AH MOV R0,#50H E4 CLR A
E6 LOOP: MOV @R0,A 08 INC R0
DA DJNZ R2,LOOP DONE:
解:(1)将片内 RAM 自 50H 单元起的 10 个单元清零。 (2) 7A 0A 78 50 E4 F6
36
08 DA FC
(3)在 MOV @R0,A 指令后添一条 INC A 指令。 4.15 阅读下列程序,并要求: (1) 说明程序的功能。
(2) 写出涉及的寄存器及片内 RAM 单元的最后结果。 MOV R0,#40H MOV A,@R0 INC R0 ADD A,@R0 INC R0 MOV @R0,A CLR A
ADDC A,#0 INC R0 MOV @R0,A
已知(40H)=98H,(41H)=AFH。
解:(1)(43H)、(42H)←(40H)+(41H)
(2) A 的内容为 01H,R0 的内容为 43H;C=1。
片内 RAM42H 单元的内容为 47H,43H 单元的内容为 01H。 4.16 阅读下列程序,并要求: (1) 说明程序的功能。
(2) 写出涉及的寄存器及片内 RAM 单元的最后结果。 MOV A,61H MOV B,#02H MUL AB ADD A,62H MOV 63H,A
http://www.wkfxw.com 文库分享网
CLR A ADDC A,B MOV 64H,A
已知(61H)=F2H,(62H)=CCH
37
解:(1) 将片内 RAM61H 单元的内容左移一位与 62H 的内容相加,将结果的高 8 位存入 64H、低 8 位存入 63H。
(2) A 的内容为 02H,63H 的内容为 B0H;64H 的内容为 02H。 4.17 已知(R3)=FBH,(R4)=64H,阅读下列程序,并要求: (1) 说明程序的功能。
(2) 写出涉及的寄存器及片内 RAM 单元的最后结果。 CLR C MOV A,R3 RRC A MOV R3,A MOV A,R4 RRC A MOV R4,A
解:(1) 程序功能:实现16 位数带进位位循环右移一位。 (2) (R3)=7DH,(R4)=B2H,C=0。 4.18 阅读下列程序,并要求: (1) 说明程序的功能。
(2) 写出涉及的寄存器及片内 RAM 单元的最后结果。 ORG 1000H
ABS: MOV R0,#38H MOV R1,#48H MOV R2,#06H
LOOP: MOV A,@R0 JNB A.7,NEXT CPL A SETB A.7 INC A
NEXT: MOV @R1,A INC R0 INC R1
DJNZ R2,LOOP DONE:
38
解:(1) 片内 RAM 自 38H 单元起 6 个单元的内容分别取补后,依次存放到片外 RAM 自 48H 单元起
的 6 个单元的内容不变;
(2)片内 RAM 自 38H 单元起 6 个单元的内容不变;
片外 RAM 自 48H 单元起 6 个单元的内容依次为:(48H)=48H,(49H)=8EH,(4AH)=FFH,
http://www.wkfxw.com 文库分享网
(4BH)=D8H,(4CH)=00H,(4DH)=BCH。
39
第 5 章 MCS51 的中断系统
5.1 请列举 MCS51
系列单片机的中断源和中断申请方法。 解:51 子系列有五个中断源: (1)外部中断 0、1
输入/输出设备的中断请求,掉电、设备故障的中断请求等都可以作为外部中断源,从引脚
INT0或INT1输入。外 部中断请求INT0、INT1有两种触发方式:电 平触发及跳变触发,
由 TCON
的 IT0 位及 IT1 位选择。
IT0(IT1)=0 时INT0 或INT1为电平触发方式,当引脚INT0 或INT1 上出现低电平时就向 CPU 申请中断,CPU 响应中断后要采取措施撤消中断请求信号,使INT0 或INT1恢复高电平。
IT0(IT1)=1 时为跳变触发方式,当 INT0或INT1引脚上出现负跳变时,该负跳变经边沿检测
器使 IE0(TCON.1 )或 IE1(TCON.3 )置 1,向 CPU申请中断。C PU响应中断后由硬件自动清除 IE0、
IE1。CPU 在每个机器周期采样INT0 、INT1,为了保证检测到负跳变,引脚上的高电平与低电平
至少应各自保持 1 个机器周期。 (2). 定时器/计数器 0、1 溢出中断
定时器/计数器计数溢出时,由硬件分别置 TF0=1 或 TF1=1,向 CPU 申请中断。CPU 响应
中断后,由硬件自动清除 TF0 或 TF1。 (3). 串行接口中断
串行接口的中断请求由发送或接收所引起。串行接口发送了一帧信息,便由硬件置 TI=1、向
CPU 申请中断。串行接口接收了一帧信息,便由硬件置 RI=1,向 CPU 申请中断。CPU 响应中断
后必须用软件清除 TI 和 RI。
52 子系列有 6 个中断源:增加了定时器/计数器 2 中断请求。 5.2 MCS51
单片机响应外部中断的典型时间是多少?在哪些情况下,C PU将推迟对外部中断请求 的响应?
解:响应外部中断的典型时间是 38 个机器周期
当遇到下列三种情况之一时,CPU 将推迟对外部中断请求的响应: (1)CPU正在处理同级的或更高优先级的中断。
(2)所查询的机器周期不是所当前正在执行指令的最后一个机器周期。 (3)正在执行的指令是 RETI 或是访问 IE 或 IP 的指令。
http://www.wkfxw.com 文库分享网
5.3 中断服务子程序返回指令 RETI 和普通子程序返回指令 RET 有什么区别?
解:指令 RETI 与指令 RET 的差别是: RETI 指令执行完毕,把响应中断时所置“1”的优先级状态触
发器清“0”,而 RET 指令则没有这个动作,其它过程的都是相同的。
40
第 6 章 MCS51 的定时器/计数器
6.1 请归纳 MCS51
系列单片机的定时器/计数器共有哪些用途,并说明其具体用法。 解:定时器/计数器是 MCS51
单片机的重要功能模块之一。在检测﹑控制及智能仪器等应用中,
常用定时器作实时时钟,实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲,驱动步进电
动机一类的电气机械。计数器主要用于外部事件的计数。 具体用法略。
6.2 综述定时器/计数器 0、1 四种工作方式的工作特征与用法。
解:定时器/计数器 0、1 有四种工作方式,工作特征与用法为:方式 0;13 位定时器/计数器,
方式1;16位定时器/计数器,方式2;具有自动重装初值的8位定时器/计数器,方式3;定时器/计数
器0分为两个8位定时器/计数器,定时器/计数器1在此方式下无意义。
6.3 8051单片机内部有几个定时器/计数器?它们是由哪些特殊功能寄存器组成?
解: 8051单片机片内设有2个定时器/计数器:定时器/计数器T0和定时器/计数器T1,T0由TH0、
TL0组成,T1由TH1、TLl组成。T0、T1由特殊功能寄存器TMOD、TCON控制。 6.4 定时器/计数器的4种工作方式如何设定? 解: 用M1、M0两位的状态来设定。 6.5 说明 MCS51
系列单片机定时器/计数器 0、1 的结构与工作原理。
解:结构:定时器/计数器 0、1 由加法计数器、TMOD 寄存器、TCON 寄存器等组成。 定时器/计数器的核心是 16 位加法计数器,用特殊功能寄存器 TH0(8CH)、TL0(8AH)及 THl(8DH)、TLl(8BH)表示。TH0、TL0 是定时器/计数器 0 加法计数器的高 8 位和低 8 位,THl、
TLl 是定时器/计数器 1 加法计数器的高 8 位和低 8 位。 工作原理:作计数器用时,加法计数器对芯片引脚 T0(P3.4)或 T1(P3.5)上输入的脉冲计数。每输
入一个脉冲,加法计数器增加1。加法计数溢出时可向 CPU 发出中断请求信号。
作定时器用时,加法计数器对内部机器周期脉冲 Tcy 计数。由于机器周期是定值,所以对 Tcy
的计数也就是定时,如 Tcy=1us,计数值 100,相当于定时 100us。
加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。在定时器/