51单片机基础知识(很重要哦) 下载本文

内容发布更新时间 : 2024/5/20 3:38:56星期一 下面是文章的全部内容请认真阅读。

12、中断初始化时,对中断控制器的状态设置,只可使用位操作指令,而不能使用字节操作指令。( × )

13、MCS—51单片机系统复位后,中断请求标志TCON和SCON中各位均为0。( √ )

14、MCS—51单片机的中断允许寄存器的IE的作用是用来对各中断源进行开放或屏蔽的控制。( √ )

15、用户在编写中断服务程序应在中断入口矢量地址存放一条无条件转移地址,以防止中断服务程序容纳不下。( √ )

16、若要在执行当前中断程序时禁止更高优先级中断,应用软件关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回时再开放中断。( √ ) 17、如设外部中断0中断,应置中断允许寄存器IE的EA位和EX0位为1。( √ )

18、外部中断0中断的入口地址是0003H。( √ )

19、 8051单片机允许5个中断源请求中断,都可以用软件来屏蔽,即利用中断允许寄存器IE来控制中断的允许和禁止。( √ ) 五、问答题

1、 什么叫中断嵌套?中断嵌套有什么限制?中断嵌套与子程序嵌套有什么区别?

答:高优先级中断“中断”正在执行的低优先级中断,这就是中断嵌套。 中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断“高优先级,同一优先级之间也不能相互“中断”。 中断嵌套与子程序嵌套的区别:

26

①子程序嵌套是在程序中事先安排好的;中断嵌套是随机发生的。 ②子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先级。 2、 为什么一般情况下,在中断入口地址区间要设置一条跳转指令,转移到中断服务程序的实际入口处?

答:由于80C51相邻两个中断入口地址间只有8字节的空间,8个字节只能容纳一个有3~8条指令的极短程序。一般情况中中断服务程序均大大超 出8个字节长度。因此,必须跳转到其他合适的地址空间。 4、根据下列已知条件,试求中断开关状态。

①IE=93H; ②IE=84H; ③IE=92H; ④IE=17H 解:①IE=93H=10010011B:INT0、T0、串行口开中断,其余关中断; ②IE=84H=10000100B:INT1开中断,其余关中断; ③IE=92H=10010010B:T0、串行口开中断,其余关中断; ④IE=17H=00010111B:关中断。 5、按下列要求设置IP:

①INT1、串行口为高优先级,其余为低优先级; ②T1为高优先级,其余为低优先级; ③T0、T1为低优先级,其余为高优先级; ④串行口为低优先级,其余为高优先级。 解:

①INT1、串行口为高优先级,其余为低优先级:IP=00010100B; ②T1为高优先级,其余为低优先级:IP=00001000B; ③T0、T1为低优先级,其余为高优先级:IP=00010101B;

27

④串行口为低优先级,其余为高优先级:IP=00001111B。 6、根据下列已知条件,试求中断优先级状态。

①IP=16H; ②IP=ECH; ③IP=03H; ④IP=1FH 解:①IP=16H =00010110B:INT1、T0、串行口为高优先级,其余为低优先级;

②IP=ECH =11101100B:INT1、T1为高优先级,其余为低优先级; ③IP=03H =00000011B:INT0、T0为高优先级,其余为低优先级; ④IP=1FH =00011111B:全部为高优先级,相当于未设置优先级。 7、要求80C51五个中断源按下列优先顺序排列,判是否有可能实现?若能,应如何设置中断源的中断优先级别?若不能,试述理由。 ①T0、T1、INT0、INT1、串行口 ②串行口、INT0、T0、INT1、T1 ③INT0、T1、INT1、T0、串行口 ④INT0、INT1、串行口、T0、T1 ⑤串行口、T0、INT0、INT1、T1 ⑥INT0、INT1、T0、串行口、T1

解:①T0、T1、INT0、INT1、串行口:能。T0、T1为高优先级,其余为低优先级。

②串行口、INT0、T0、INT1、T1:能。串行口为高优先级,其余为低优先级。

③INT0、T1、INT1、T0、串行口:不能。80C51只有两个中断优先级。当设置INT0、T1为高优先级时,INT1、T0、串行口 处于同一低优先级,而

28

T0的优先权在排在INT1之前,INT1无法优先T0。

④INT0、INT1、串行口、T0、T1:能。INT0、INT1、串行口为高优先级,其余为低优先级。

⑤串行口、T0、INT0、INT1、T1:不能。80C51只有两个中断优先级。当设置串行口为高优先级后,T0、INT0、INT1、T1 处于同一低优先级,而INT0的优先权排在T0前面,T0无法优先INT0。

⑥INT0、INT1、T0、串行口、T1:不能。80C51只有两个中断优先级。当设置INT0、INT1为高优先级后,T0、串行口、T1 处于同一低优先级,而T1的优先权排在串行口前面,串行口无法优先T1。

8、试编写一段对中断系统初始化的程序,使之允许INT0、INT1、T0、串行接口中断,且使T0中断为高优先级中断。 解: MOV IE,#97H MOV IP,#02H

9、 若规定外部中断1为边沿触发方式,低优先级,在中断服务程序将寄存器B的内容左循环一位,B的初值设为02H,按要求补充完整主程序与中断服务程序。

ORG 0000H LJMP MAIN ORG 0013H LJMP WB ORG 0100H MAIN:SETB EA

29

SETB EX1 CLR PX1 SETB IT1

MOV B,#02H WAIT:SJMP WAIT WB:MOV A,B RL A MOV B,A

RETI 第4章 习题参考答案 一、填空题

1、当定时器T0工作在方式3时,要占用定时器T1的 TR1 和 TF1 两制位。

2、在定时器T0工作方式3下,TH0溢出时, TF1 标志将被硬件置1去请断。

3、在定时器T0工作方式3下,欲使TH0停止工作,应执行一条 CLR TR1 指令。

4、使用定时器/计数器1设置串行通信的波特率时,应把定时器/计数器1设定式 2

,即 自动重新加载 方式。

5、当计数器产生计数溢出时,把定时器/计数器的TF0(TF1)位置“1”。对

溢出的处理,在中断方式时,该位作为 中 断标志 位使用;在查询方式

30