INT0、INT1:外部中断源,由P3.2和P3.2引脚输入。具有低电平和脉冲两种触发方式,在每个机器周期的S5P2采样引脚信号,如有效则由硬件将它的中断请求标志IE置1,请求中断。当CPU响应中断时,由硬件复位。
T0、T1:定时/计数器中断,当定时/计数器产生溢出时,置位中断请求标志TF请求中断处理。
RI、TI:串行中断,RI是接收,TI为发送。单片机串行口接收到一个字符后RI置1,发送完一个字符TI置1。值得注意的是,RI、TI在响应中断后,必须由用指令将其复位。
中断响应:
CPU在执行程序的过程中,在每个机器周期的S5P2对中断标志位按中断优先级进行查询,一旦查询到有中断请求,CPU只要不在执行同级或高级的中断服务程序和当前指令(RETI指令或访问IE、IP的指令除外)执行完毕两种情况,则响应中断。如果当前正在执行的指令是RETI或访问IE、IP的指令,则当前指令执行完毕后,CPU才可响应中断。中断响应时间可
以从中断信号被查询开始算起,中断响应时间在以下三种情况下,响应时间还会更长:
① CPU正在执行一个比要响应的中断源优先级相等或更高的中断源的中断服务程序,此时须等到中断服务程序执行完毕才可中断响应。
② 正在执行的当前指令不是在最后一个机器周期,只有指令执行完后才响应中断。
③ 如果当前执行的是RETI或访问IE、IP的指令,则当前指令执行完毕后,CPU需再执行一条指令才可以中断响应,因此附加等待响应时间不会超过5个机器周期。
中断入口:
单片机响应中断后,将转向特定的入口进行中断服务,从表中可以看出,两相邻中断源的入口地址间隔为8个单元。这意味着如果要把中断源对应的中断服务程序从入口地址开始存放,则程序的长度不能超过8个字节,否则会影响到下一个中断源的入口地址的使用。而通常的情况下,中断服务程序的长度不止8个字节,因此,常见的处理方法是:在入口地址处存放一条无条件转移指令,通过这条转移指令转向对应的中断服务程序入口,中断服务程序以RETI为结束。
中断请求的撤销:
CPU响应中断请求,在中断返回(RETI)之前,该中断请求应被撤除,否则会引发另一次中断。
定时/计数器中断请求撤销:CPU在响应中断后,由硬件自动清除中断请求标志TF。 外部中断请求撤销:如果采用脉冲触发方式,CPU在响应中断后,由硬件自动清除中断请求标志IE;对于电平触发方式的外部中断请求,中断标志的撤销是自动的,由于造成中断请求的低电平继续存在,所以在响应中断后再次会产生中断请求,为此响应中断后要撤销外部信号。
2.每秒钟的设定
延时方法可以有两种一中是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。
3.计数器初值计算
定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式: TC=M-C
C语言程序
#include"reg52.h" //宏包含MCS-52系列单片机的头文件
#define uchar unsigned char
#define uint unsigned int
uchar code duanmatable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//数码管段码数组
uchar code weima[]={0x7f,0xbf,0xdf,0xef};//位码数组
uchar code xiangwei[]={0xdb,30,0x7b,3,0xbd,15,0xb7,3}; //实现相位的切换,数码管的倒计时与
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-74158-5.html
他的钱咋来的呢
允许同志结婚倒是不错的见解