1、一般来说单片机的中断发生有两个条件,一是中断标志位置位,二是中断允许,如果这两个条件都满足则进入中断,因为正常情况下中断一直是允许的,那么只能通过标志位来区分是否有中断挂起,
2、如果进入中断不清除标志位,那么这一中断服务程序结束后由于标志位还是置位的并且中断是允许的,那么还会再次进入该中断,就会发生一直在执行中断程序的情况
3、周期性中断是由定时器辅助完成的,只要定时时间到,硬件就会自动置位标志位,这时中断发生,定时器还在运行,与中断处理是并行的没有冲突,因此周期性的中断不是从中断标志位清零开始的。
4、如果中断程序没有执行完并且一下个中断又来了,那么硬件还是会自动置位标志位的,如果在这之前已经清零标志位那么中断结束后会再进入一次该中断,如果这时还没有清除中断标志位,则第二个1毫秒中断无效。
标准51有5个中断向量(不算复位),分别是外部中断0,定时器0,外部中断1,定时器1,串行口;总共有6个中断标志,串行口的发送和接受共享一个中断向量。各个终端标志产生情况如下:
外部中断可以设置边沿触发或者电平触发,边沿触发进入中断程序后硬件自动清中断标志,电平触发需要软件清标志位;
定时器T0,T1计数溢出产生中断,进入中断程序硬件自动清标志位;
串行口发送完成或者接收到数据就触发中断,由于是两个中断标志共享一个中断向量,所以需要在中断程序里由软件判断是发送中断还是接受中断,并且只能由软件清标志位;
以上是标准51的中断系统,52由于多了一个T2定时器(T2定时器跟T0,T1功能相差很大,T2要强大很多),因此多了一个中断向量2个中断标志(溢出中断和T2外部中断),T2中断标志必须由软件清除标志位
中断使能位于IE寄存器
各中断标志位于相应的模块控制寄存器里面
模块位地位 位名称 说明
T1 TCON.7TF1T1溢出标志
T0 TCON.5TF0T0溢出标志
T2 T2CON.7 TF2T2溢出中断标志
T2CON.6 EXF2 T2外部中断标志
外部中断1 TCON.3IE1外部中断1标志
外部中断0 TCON.1IE0外部中断0标志
串行口 SCON.1TI 发送中断标志
SCON.0RI 接受中断标志
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)