单片微机原理与接口技术答案(宋跃版) 下载本文

#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