假设P3.4接蜂鸣器低电平控制,程序下载后处于循环等待状态,
当外部中断1发出中断,CPU响应后进入中断服务程序
蜂鸣器响
#include<re52.h>
sbit fm=P3^4 //位声明
void main()
{
EA=1//开CPU总中断
EX1=1//开外锋改携部中断1
IT1=1//外部中断1中断方式为下降沿触发
while(1)//循环等待外部中断1发出中断
}
void ex1() interrupt 2 //外部中断1中断服务程序,using 1(或者2,3)只中断服银伏务程序分配特殊能寄存器,不写是可以的因为系统可以自动分配特殊功能寄存器区
{
fm=0//蜂歼稿鸣器响,你想要处理其他事件也可加入到这里
}
51单片机中有5个中断源,如下图中断引脚:INT0、INT1、铅简T0、T1以及RX和TX
CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);
CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。
中断号 优先级 中断源 中断入口地址
0 1(最高) 外部中断(INT0) 0003H
1 2 定时器(T0) 000BH
2 3 外部中断(INT1) 槐亏裤 0013H
3 4 定时器(T1) 0018H
4 5 串口总段(RX、TX) 0023H
单片机有10个寄存器主要与中断程序的书写控制有关
1.中断允许控制寄空册存器IE
2.定时器控制寄存器TCON
3.串口控制寄存器SCON
4.中断优先控制寄存器IP
5.定时器工作方式控制寄存器TMOD
6.定时器初值赋予寄存器(TH0/TH1,TL0/TL1)
会不会是给外部中断的信号存在抖动的情况 如果顷轿是这样可以在中断函数中先读取雀纤肆管脚竖虚是否为低电平void ISR(void)
{
unsigned char i
for(i=0i<5i++)
{
if(portd == 1)//为抖动
return
}
...
...
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)