资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章,51,单片机,中断系统,的,C51,编程,4.1,中断系统,结构与中断控制,4.2,中断优先级与中断函数,4.3,外部中断,源的,C51,编程,4.4,实验,4.1 51,单片机中断系统,结构与中断控制,5,个中断源,外部中断:,外部中断0,/INT0,外部中断1,/INT1,定时器/计数器溢出中断:,定时器/计数器0,TF0,定时器/计数器1,TF1,串行口中断:,串行口,RI,、,TI,中断控制,设置了4个专用寄存器用于中断控制。,(,1,)定时器控制寄存器(,TCON),(2),串行口控制寄存器(,SCON),(3),中断允许控制寄存器(,IE),(4),中断优先级控制寄存器(,IP),4.2,中断优先级与中断函数,优先级排列如下(,从高到低,):,外部中断0,定时器/计数器0溢出,外部中断1,定时器/计数器1溢出,串行口中断,中断函数的结构,定义中断服务函数的一般形式为:,函数名(),interrupt,(),n,外部中断,0,中断、定时器,/,计数器,0,溢出中断、外部中断,1,中断、定时器,/,计数器,1,溢出中断、串行口中断对应的中断类型号分别为,0,、,1,、,2,、,3,、,4,。,4.3,外部中断,源的,C51,编程,51,单片机提供了,2,个外部中断源,:,外部中断,0,请求,,占用,P3.2,引脚,其中断请求号为,0,。,外部中断,1,请求,,占用,P3.3,引脚,其中断请求号为,2,。,外部中断源的初始化时通过设置相应的特殊功能寄存器的相应位来实现的,。,(,1,),TCON,寄存器中的,IT0,、,IT1,位,外部中断,0,和外部中断,1,的中断触发方式控制位。如:,IT0=0,;,/,外部中断,0,为电平触发方式,IT1=1,;,/,外部中断,1,为脉冲触发方式,(,2,),IP,寄存器中的,PX0,、,PX1,位,外部中断,0,和外部中断,1,的中断优先级的设定。如:,PX0=0;,/,设定外部中断,0,为低级中断,PX1=1;,/,设定外部中断,1,为高级中断,(,3,),IE,寄存器中的,EA,、,EX0,、,EX1,位,EA,为中断允许总控制位;,EX0,、,EX1,为外部中断,0,中断和外部中断,1,中断的中断允许位。如:,EA=1;,/,开放总的中断控制,EX0=1;,/,允许外部中断,0,中断,EX1=0;,/,禁止外部中断,1,中断,【例,4-1,】,初始状态时低,4,位灯亮,高,4,位的灯灭,编程实现按一下,S0,,,P1,口的发光状态发生反转。,#include,void main(),P1=0XF0;/,高,4,位灭、低,4,位亮,IT1=1;/,脉冲触发方式,EA=1;EX1=1;/,开放相应的中断,while(1);/,等待中断,void wint0(void)interrupt 2 /2,外,1,P1=P1;,【例,4-2,】,利用,S0,按钮控制,P1,口的灯,要求每按一下就点亮一盏灯(其余的灯是灭的)。,#include,#include /,内部函数,bit flag;/,中断标志,unsigned char ledstatus;,void wint1()interrupt 2,flag=1;,void main(void),P1=0 xff;ledstatus=0 xfe;,IT1=1;EA=1;EX1=1;,while(1),if(flag),P1=ledstatus;,ledstatus=_crol_(ledstatus,1);flag=0;,【例,4-3,】,当,S0,动作时,,P1.0,端口的电平反向,当外,S1,动作,,P1.7,端口的电平反向,#include,sbit LED0=P10;,sbit LED7=P17;,void IS0(void)interrupt 0/,外部中断,0,LED0=LED0;,void IS1(void)interrupt 2/,外部中断,1,LED7=LED7;,void main(),P1=0 xFF;,IT0=1;IT1=1;EX0=1;EX1=1;EA=1;,while(1);,修改:,(,1,),S0,控制,P1.0,P1.3,的灯,,S1,控制,P1.4,P1.7,的灯。,(,2,)按下,S0,后,点亮,8,只,LED,;按下,S1,后,变为闪烁状态。,【例,4-4,】,P1,口控制的灯按一定的频率闪烁,,S0,动作,实现单灯左移,而左移,3,圈结束。,【例,4-5,】,首先通过,P1.7,口点亮发光二极管,D1,,然后外部输入一脉冲串,则发光二极管,D1,亮、暗交替。,#include,sbit P1_7=P17;,void interrupt0()interrupt 0 using 2 P1_7=P1_7;,void main(),EA=1;IT0=1;EX0=1;,P1_7=0;,do while(1);,修改:,如果有,3,个脉冲,则灯亮、暗交替一次,请编程。,实验,1,按钮型开关模拟外部中断实验,实验,2,外部中断优先级实验,
展开阅读全文