STC89C52RC中断编程
首先自己最开始玩的是树莓派,出于兴趣玩玩51单片机,在此讲述如有什么不对的地方还请各位看官指正,万分感激。
玩过单片机的小伙伴都知道51单片机有5个中断源,而52系列单片机为51的增强型,多了一个定时器中断2这样的一个中断源。首先自己使用的是52单片机最小系统进行串口编程,编程步骤:
1.开启总中断EA=1;
2.开启外部中断EX0=1 或者EX1=1;
3.设置中断触发方式,例如INT0=1; //代表低电平中断
4.编写中断服务程序:
返回值 函数名(参数)interrupt n
其中n取值如下:
n=0 为外部中断
n=1 定时器/计数器0溢出
n=2 外部中断1
n=3 定时计数器溢出中断
#include<reg51.h>
#include<INTRINS.H> //延时函数头文件
typedef unsigned char uint8_t;
sbit zhendong=P2^1;
sbit beep=P2^0; //定义蜂鸣器引脚
void Delay450ms() //@11.0592MHz,延时函数
{
uint8_t i, j, k;
_nop_();
_nop_();
i = 19;
j = 233;
k = 0;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void init(){
EA=1; //开启总中断
EX0=1; //开启EX0的外部中断
INT0=1; //设置低电平触发方式
}
void init0()interrupt 0
{
beep=0;
Delay450ms();
beep=1;
Delay450ms();
}
void main(){
init();
while(1) {
/*if(zhendong==0){
beep=0;
Delay450ms();
beep=1;
Delay450ms();
} */
}
}
中断示例demo就到这里啦各位小伙伴们,下期再会。