END
7.已知(30H)=17H,(31H)=38H,分析下面这段程序的运行过程,在每条语句右边的空格中写出在执行完该语句后相应单元的结果。
MOV A,30H (A)= ADD A,31H (A)= DA A (A)= 答: (1)(A)= 17H (2)(A)= 4FH (3)(A)= 55H
8.两个16位无符号数分别存放在内部RAM40H、41H和50H、51H中(低位在低字节单元),编写程序段,实现两个16位数的减法程序,差存放在R6、R7中(R6存放高位)。 答:
MOV A,40H SUBB A,50H MOV R7,A MOV A,41H SUBB A,51H MOV R6,A END
16
项目五
1.什么是中断,采用中断方式有哪些优点? 答:
中断是计算机的CPU暂停正在运行的程序,转而执行提出中断的那个外部设备或事件的服务程序(即中断服务程序),当服务程序处理完毕后,CPU再回到原来的“断点”继续原来的程序。 优点:引入中断技术,解决了CPU与外设的速度匹配问题,提高CPU的运行效率,计算机具有中断功能后,还有如下优点: (1)分时处理功能 (2)实时处理功能 (3)故障处理功能
2.在AT89C51单片机系统中,有哪些中断源?响应这些中断的服务程序入口地址分别是多少?怎样合理安排中断服务程序? 答:
(1)有5个中断源,分别为:外部中断0、定时器T0、外部中断1、定时器T1、串行口中断。
(2) 中断源 中断服务程序入口地址
外部中断0: 0003H 定时器T0 : 000BH 外部中断1: 0013H 定时器T1 : 001BH 串行口中断: 0023H
由于各中断服务程序的入口地址相隔仅8个单元,如果整个中断服务程序的长度少于或等于8个字节,那么可以将这个中断服务程序存放在从入口地址开始的8个单元中,但如果中断服务程序的长度大于8个字节,那么通常在入口地址处安排一条转移指令,而转移指令要跳转的地址才开始真正存放中断服务程序。
3.在单片机复位后,IP和IE为何值?如果当前单片机系统中只允许开放INT0和T1中断源,且要求INT0和T1为高级中断源,其余为低级中断源,怎样设置IP和IE的值? 答:
(1)单片机复位后,IP为XX000000B;IE为0X000000B
(2)IP为:XXX01001B ;IE为:1XX01001B
4.定时器0和定时器1各有几种工作方式?简述之。 答:
定时器0有4种工作方式:方式0、方式1、方式2、方式3
定时器1有3种工作方式:方式0、方式1、方式2
17
5.已知单片机系统时钟频率为12MHz,若要求定时时间分别为0.5ms、1ms、10ms,定时器0工作在方式0、方式1、方式2的情况下,定时初值TH0、TL0分别是多少? 答:
(1)方式0: 定时0.5ms时:
msT?213?0.51us?8192?500?7692?1E0CH
TH0=1EH; TL0=0CH; 定时1ms时:
msT?213?11us?8192?1000?7192?1C18H
TH0=1CH; TL0=18H;
定时10ms时:
采用定时1ms时的初值,循环10次。 (2)方式1: 定时0.5ms时:
msT?216?0.51us?65536?500?65036?FE0CH
TH0=0FEH; TL0=0CH;
定时1ms时:
msT?216?11us?65536?1000?64536?FC18H
TH0=0FCH; TL0=18H;
定时10ms时:
msT?216?101CH1us?65536?10000?55536?DA
TH0=0DAH; TL0=1CH;
(2)方式2: 定时0.1ms时:
msT?28?0.11us?256?100?156?9CH
TH0=9CH; TL0=9CH;
18
定时0.5ms时:(采用0.1ms的初值,循环5次)
定时1ms时: (采用0.1ms的初值,循环10次)
定时10ms时: (采用0.1ms的初值,循环100次) 6.要求将定时器T0和T1的外部信号输入断作为新增的二个外部中断请求信号,如何设置计数初值? 答:
TH0和TF0的初值均设置为FFH
7.要求在 P1.5脚输出周期为15ms的方波,设单片机系统时钟频率为6MHz。试编写定时器初始化程序和中断服务程序。 答:
定时器初始化程序: MOV TMOD, #01H MOV TH0, #0F1H MOV TL0, #5AH
中断服务程序:
ORG 0000H LJMP START ORG 000BH LJMP TOINT ORG 1000H START: MOV TMOD, #01H SETB TR0 MOV TH0,#0F1H MOV TL0,#5AH
SJMP $ ORG 2000H
TOINT: CPL P1.5 MOV TH0,#0F1H MOV TL0,#5AH RET1 END
8.请编写程序:在T1每计满100个外部输入脉冲后,使P0口输出0F0H的数据。 答:
ORG 0000H
LJMP START
19
ORG 000BH LJMP LOOP ORG 1000H START: MOV TMOD, #01H SETB TR1 MOV TH0,#0F1H MOV TL0,#5AH
SJMP $ ORG 2000H
LOOP: MOV P0,#0F0H
20