内容发布更新时间 : 2024/12/23 10:47:49星期一 下面是文章的全部内容请认真阅读。
#include \由于这里只是计算结果,所以这行代码可以去掉 void main(void) {
unsigned char i=1; unsigned int result=0; for(i=1;i<=100;i++) result+=i;
while(1); //这里用于调试 }
第6章思考题及习题参考答案 1. 什么是中断、中断源、中断服务程序、中断程序入口地址?
答: 当有中断源申请中断,并允许响应时,处理暂停当前执行的程序转去执行中断服务子程序的过程叫中断。导致中断产生的事件和原因统称为中断源。处理暂停主程序后转去执行的,用来处理中断事件的程序成为中断服务子程序。中断程序入口地址是指的中断服务子程序的第一条指令所在的地址。
2. 中断优先权有什么作用,中断嵌套是什么?
答:中断优先权可以用来解决多个中断源同时申请中断时,处理器响应中断的优先顺序。中断嵌套是指处理器正在执行中断服务子程序时,被新的中断打断,转去执行新的中断而出现的一个中断嵌套到另一个中断中的现象。
3. 保护断点是保护什么,怎么保护的,中断返回后的下一步到到哪里去?
答:保护断点是保护主程序暂停时的下一条将要执行的指令的地址。保护方法是将下一条
第 页 共 46 页
21
指令的地址值入栈。中断返回后,断点地址从堆栈中弹出到程序计数器或指令指针寄存器,继续执行主程序。
4.保护现场有什么作用,需要保护哪些内容,怎么保护的? 5. 80C51单片机有___个中断源,分别是_____、 _______、 _______、 ______和________。 答: 5,INT0 ,INT1 ,T0,T1,串口
6. 80C51单片机中断有_____个优先权等级,最多可以实现____级嵌套。 答:2,2
7. 80C51中断嵌套的原则是什么?
答: 80C51中断嵌套的原则是:高级中断可以打断低级中断,低级中断不能打断高级中断,同级中断不可以打断同级中断。
8. 80C51响应中断的条件有哪些? 答: 80C51响应中断的条件有:
中断申请的对应中断使能控制位有效; 全局中断使能控制位有效;
中断申请时没有更高级别的中断服务程序正在执行;
9. 80C51的各个中断源是如何撤销中断申请的? 答: 80C51各中断源的中断申请撤销方法是:
定时/计数器中断:在中断被响应后,由硬件自动清零中断申请标志位; 串口中断:由软件清零中断申请标志位;
边沿触发时的外部中断:中断被响应后,由硬件自动清零中断申请标志位;
电平触发的外部中断:需要设计专门的电路,通过软件编程通知外部中断源,由外部中断源撤销申请。
10. 80C51单片机中有 个定时/计数器,定时/计数0有 种工作方式,定时/计数1有 种工作方式。 答: 2,4,3
11. 80C51单片机中有与定时/计数器相关的特殊功能寄存器有哪些,各自有什么作用? 答:有TMOD和TCON的高4位。
TMOD用来设置定时/计数的工作方式,选择计数时钟的来源。具体格式如下: 定时/计数器1 定时/计数器0
D7 D6 D5 D4 D3 D2 D1 D0
名称
GATE C/T M1 M0 GATE C/T M1 M0 TCON的高4位用来控制定时/计数器的启动和停止,并设置中断标志位,向处理器
申请中断。具体格式如下:
8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位地址 位名称
第 页 共 46 页
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 22
12. 80C51单片机中的定时/计数器用作定时器和计数器时,有什么区别?
答:用作定时器时,通常选择内部时钟,也可使用外部时钟,应用中,通常需要根据定时要求设定计数初值。并查询等待定时时间结束,或者在定时时间结束后向处理器申请中断; 用作计数器时,只能选择外部时钟,通常设置计数初值为零,而且需要读取计数结果。
13. 80C51单片机中的定时/计数器的门控设置位GATE有什么作用?
答:GATE用来设置外部中断输入引脚INT0 或INT1 是否影响定时/计数器的启动和停止。当GATE有效时,只有INT0 或INT1 为高时,相应计数器才可能启动;当GATE无效时,INT0 或INT1 不影响计数器的启停。
14. 80C51单片机中的定时/计数器的方式0和方式1有什么共同点和不同点?
答:方式1和方式0都是不能自动重装的定时/计数器方式,基本结构相同。不同的是,方式1是16位定时/计数器;而方式0是13位定时/计数器,其中计数寄存器低字节的高3位不使用。
15. 当定时/计数器T0工作在方式3时,T1可以工作在哪些方式,与T0不工作在方式3时,T1的工作方式有什么差异?
答: T0工作在方式3时,T1可以工作在方式0,方式1,方式2。相对于T0不工作在方式3时,T1没有了启动控制位TR1,没有了中断申请标志位TF1,只有设置成方式3才能停止计数,设置在其它方式都会不停计数。
16. 要求设置单片机的定时器1工作在中断模式,方式1,计数器模式,软件启动,定时器0未使用,使用外部中断0,下降沿触发中断,外部中断1闲置,串口关闭。要求设置定时器1的中断优先级最高。
那么IE= 、 IP=_________、TMOD=__________、IT0=___。
答: 89H或10001001B,08H或00001000B, 50H或01010000B, 1
17. 执行以下代码的作用是 。
ANL TMOD, #0F0H ORL TMOD, #02H
答:设置定时/计数器0工作在方式2,定时器模式,仅由软件启动。
18. 若某单片机系统的晶振为12MHz,使用定时/计数器0,进行700us定时,可以使用哪些工作方式,要求只要软件就可以启动,且通过查询方式实现。写各种方式下的初始化程序。 答:晶振频率为12MHz,则计数器时钟周期为1us,定时时间为700us,则需要计数700,方式0的最大计数为8192,方式1为65536,方式2和方式3为256。因此可以选择方式0和方式1。
一:选择方式0
方式0为13位计数器,计数初值为:
fosc?t12?106?700?10?6T0初值?2??8192??7492?1110101000100B
121213 TH0= 11101010B=0EAH ,TL0= 00100B=04H
23
第 页 共 46 页
定时/计数器0工作在方式0,定时器模式,软件启动,则TMOD=00000000B=00H。查询方式下,不需要打开中断使能控制位,复位后IE=0,所以不需要初始化IE。
初始化程序为:
MOV TMOD, MOV TL1, SETB TR0
#00H #04H
MOV TH1, #0EAH
二:选择方式1
方式1为16位计数器,计数初值为:
fosc?t12?106?700?10?6T0初值?2??65536??64836?FD44H
121216 TH0= 0FDH ,TL0= 44H
定时/计数器0工作在方式1,定时器模式,软件启动,则TMOD=00000001B=01H。查询方式下,不需要打开中断使能控制位,复位后IE=0,所以不需要初始化IE。
初始化程序为:
MOV TMOD, MOV TL1, SETB TR0
#01H #43H
MOV TH1, #0FDH
19. 某单片机系统的晶振为12MHz,编程使用定时/计数器0工作在方式3,从P1.0输出周期为200us占空比50%方波,从P1.1输出周期为100us占空比50%;使用定时/计数器1,工作在方式2,从P1.2输出周期80us,占空比50%的方波。(提示,定时/计数器1没有了中断申请标志位,需要读取计数数据,进行判断)。 答:参考程序如下:
ORG 0000H
AJMP AJMP AJMP
MAIN_START INT_TL0_HANDLE
;定时/计数器1中断入口,但作为了T0的TH0定时中断入口 INT_TH0_HANDLE
ORG 000BH ;定时/计数器0中断入口 ORG 001BH ORG 0030H INT_TL0_HANDLE:
MOV CPL RETI MOV CPL RETI
TL0, #9CH ;TL0产生200us方波 P1.0
;
;TH0产生100us方波
INT_TH0_HANDLE:
TH0, #0CFH P1.1
;
ORG 0100H MAIN_START:
MOV
TMOD,
#23H ;T0方式3,T1方式2
第 页 共 46 页 24
SETB SETB MOV MOV MOV MOV MOV SETB SETB SETB
ET0 ET1
;开T0中断
;开T1中断,注:TH0使用。
; ; ;
TL0, #9CH ;赋初值 TH0, #0CFH TH1, #0D8H TL1, #0D8H EA TR0 TR1 C
P1, #00H ;输出清零
;开全局中断 ;TL0开始计数
;TH0开始计数,T1计数从方式确定就开始了 ;产生80us方波 ;
;计数小于初值+7,则让输出翻转。由于读取TL1的计数值 ;范围,只要发生了初值重转,则计数已经溢出。 ;大于则继续读数。直到计数溢出。
READ_T1: END
MOV CLR SUBB JNC CPL AJMP
A, TL1 ;读T1的计数值 A, #0DFH
;
;并不是每个计数值都能读到,所以判断时需要给一个大的
READ_T1 P1.2 READ_T1
说明:此程序可以直接运行,但是实际测试结果,只能近似输出题目要求波形。定时/
计数器0是由于软件初值重转的问题,计时器1则是由于每次读数时,由于中断的执行,导致错过读数,所以输出波形的频率是不稳定的。
第7章习题与思考题参考答案
7-1简述MCS-51单片机串行口的四种工作方式的接收和发送数据的过程。 答:(略)
7-2 串行口有几种工作方式?各工作方式的波特率如何确定? 答:
它有四种工作方式:方式0、1、2、3。帧格式有10位、11位。方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器的溢出率决定。
7-3 若晶体的振荡频率为11.0592MHz,串行口工作于方式1,波特率为4800bit/s,计算用T1作为波特率发生器的方式控制字和计数初值。
解:方式1和方式3的波特率由定时器的溢出率控制,是可变的,表示为:
波特率=(2SMOD /32)×定时器T1的溢出率
定时器T1的溢出率= T1计数率/产生溢出所需的时间
第 页 共 46 页
25