《单片机f-习题6答案》由会员分享,可在线阅读,更多相关《单片机f-习题6答案(8页珍藏版)》请在金锄头文库上搜索。
1、. . . . .习题61. 什么是中断系统?中断系统的功能是什么?答:中断系统是指实现中断过程的硬件逻辑和实现中断功能的指令的统称。为了满足单片机系统中各种中断的要求,中断系统一般具备如下基本功能:(1). 能实现中断及返回(2). 能实现优先权排队(3). 能实现中断嵌套2. 什么是中断嵌套?答:当CPU响应某一外设的中断请求,正在进行中断处理时,若有优先权级别更高的中断源提出中断请求,则CPU能中断正在进行的中断服务程序,响应高级中断,在高级中断处理完后,再继续执行被中断的中断服务程序。这一过程称为中断嵌套,如图6-1所示。若发出新的中断申请的中断源的优先级与正在处理的中断源同级或更低时
2、,则CPU不响应这个中断申请,直至正在处理的中断服务程序执行完后才去处理新的中断申请。图6-1 中断嵌套3. 8051单片机的中断源有几个?各个中断的标志位是什么?答:80C51单片机的中断系统有5个中断源,它们是:(1) 外部中断0:由(P3.2)引脚输入,由外部中断0触发方式选择位IT0选择其为低电平有效还是下降沿有效,当CPU检测到引脚上出现有效的中断请求信号时,中断请求标志位IE0置1,向CPU申请中断。(2) 外部中断1:由(P3.3)引脚输入,由外部中断1触发方式选择位IT1选择其为低电平有效还是下降沿有效,当CPU检测到引脚上出现有效的中断请求信号时,中断请求标志位IE1置1,向
3、CPU申请中断。(3) 定时器/计数器T0溢出中断请求,当T0定时时间到或计数满后,中断请求标志位TF0由硬件置1,向CPU申请中断。(4) 定时器/计数器T1溢出中断请求,当T1定时时间到或计数满后,中断请求标志位TF1被硬件置1,向CPU申请中断(5) 串行口中断请求,当串行口接收完一帧数据时,中断请求标志RI被硬件置1,或当串口发送完一帧数据时,中断请求标志TI被硬件置1。4. 各个中断源的中断请如何撤销的?答:定时器/计数器中断请求的撤销定时器/计数器的中断请求被响应后。硬件会自动把中断请求标志位TF0、TF1清0,因此定时器/计数器中断请自动撤销的。外部中断请求的撤销 (1) 电平触
4、发方式外部中断请求的撤销电平触发方式的中断请求标志是自动撤销的,但外部中断请求信号的低电平可能继续存在,由于单片机对、引脚没有控制作用,所以在以后的机器周期采样时,又会把已清0的IE0或IE1标志位重新置1,会多次引起中断,因此需要外接电路来撤销中断请求信号,即在中断响应后把中断请求信号引脚从低电平强制改变为高电平。常用的电平触发方式外部中断请求信号的撤销电路如图6-8所示。图6-8电平触发方式外部中断请求的撤销电路由图6-8可见,用D触发器锁存外来的中断请求电平,外部中断请求信号通过D触发器加到单片机的或引脚上。当外部中断信号使D触发器的CP端发生正跳变时,由于D端接地,Q端输出为0,即向单
5、片机发出中断请求,CPU响应中断后,为了撤销中断请求,可利用D触发器的直接置位端SD实现,把SD端接51单片机的P1.0端,使P1.0端输出一个负脉冲就可以使D触发器置1,从而撤销了低电平的中断请求信号,所需的负脉冲可通过在中断服务程序中增加如下两条语句得到:P1=P1 & 0xfe;P1.0=0P1=P1 | 0x01;P1.0=1 第一条语句使P1.0为0, P1口的其它各位状态不变。由于P1.0与直接置1端SD相连,故D触发器Q1,撤销了中断请求信号。第二条语句使P1.0为1,即置1端SD不起作用,目的使以后产生的新的外部中断请求信号又能向单片机申请中断。由此可见,电平触发方式的外部中断
6、请求信号的完全撤销,是通过软硬件相结合的方法来实现的。(2) 边沿触发方式外部中断请求的撤销边沿触发方式的外部中断请求的撤销,其中断标志位(IE0或IE1)的清0是在中断响应后由硬件自动完成的,因此边沿触发方式的外部中断请自动撤销的。串行口中断请求的撤销 串行口中断的标志位是TI和RI,但对这两个中断标志位CPU不进行自动清0,因为响应串行口的中断后,CPU无法知道是接收中断还是发送中断,所以串行口中断请求的撤销只能使用软件的方法,在中断服务程序中用程序清0,即用如下的语句进行串行口中断标志位的清除:5. CPU响应中断时,各个中断源的中断入口函数如何编写?答:C51的中断函数格式如下:voi
7、d 函数名()interrupt 中断号 using 工作组中断服务程序容中断函数不能返回任何值,所以最前面用void;后面紧跟函数名,名字不要与C语言中的关键字相同;中断函数后不带任何参数,所以函数后面的小括号为空;中断号是指单片机中几个中断源的序号,可查表6-1,这个序号是编译器识别不同中断的唯一序号,此处应该设为0;最后面的“using 工作组”是指这个中断函数使用单片机部RAM中4个工作寄存器组中的哪一组,C51编译器在编译程序时会自动分配工作组,因此“using 工作组”通常省略不写。6. 编写外部中断0为边沿触发方式的中断初始化程序。答:IE=0x81; / EA=1,CPU开中断
8、,EX0=1,允许外部中断0产生中断IP=0x01; / PX01,外中断0为高级中断IT0=1; /外中断0为边沿触发方式7. 电路如图6-11所示,要求单片机的主程序实现P1口控制一个共阴极数码管的各段依次点亮,不断循环,当有外中断输入时,使数码管显示0,闪烁4次后,返回原断点处继续执行程序,外中断的触发方式采用边沿触发方式。试编写程序。图6-11单片机外中断应用系统电路图答:程序如下:#include#include#define uint unsigned int #define uchar unsigned charuchar i,aa;void delay(uint z);void
9、 main()EA=1;/开总中断EX1=1;/开外部中断1IT1=1;/将外部中断1设为边沿触发方式aa=0x01; P3=0xff;while(1)P1=aa;/送入段选信号delay(1000);aa=_crol_(aa,1);/将aa循环左移1位后再赋给aavoid delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void exter0( ) interrupt 2for(i=4;i0;i-)P1=0x3f;/送入段选信号7f,使数码管显示8delay(500);P1=0x00;/送入段选信号00,使数码管熄灭delay(500
10、);8. 电路如图6-12所示,要求单片机主程序控制P0口数码管循环显示09;外部中断发生时,控制P2口控制数码管显示09,外部中断发生时,控制P1口数码管显示09,外部中断为高优先级,外部中断为低优先级,都采用边沿触发方式,数码管为共阳极数码管。试编写程序。图6-12 单片机外中断、应用系统电路图答:程序如下:#include #include #define uchar unsigned char#define uint unsigned intuchar code table= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void
11、 delayms(uint x) int i,j;for(i=x;i0;i-)for(j=110;j0;j-);void init()IT0=1; /INT0边沿触发。IT1=1; /INTl边沿触发。EA=1; /开总中断EX0=1; /使能INT0EX1=1; /使能INTlPX1=1; /中断1高优先级PX0=0; /中断0低优优先void main() uchar i;init();while(1) P0=tablei;i=(i+1)%10;/*显示0-9*/delayms(500);void xint0() interrupt 0uchar j;for(j=0;j10;j+)P2=tablej;delayms(500); P2=0xff;void xint1() interrupt 2uchar k;for(k=0;k10;k+)P1=tablek;delayms(500); P1=0xff;S. . . . . .