实验四_中断

代码

**#include"reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit led=P0^0; //位定义
sbit key=P3^2; //位定义

void delay(u16 i) //延时函数
{
while(i–);
}

void int0_init() //串口配置
{
EA=1; //中断总允许位
EX0=1; //外部中断允许位
IT0=1; //中断触发方式 上升沿触发
}

void main()
{
int0_init();
led=0;
while(1);
}

void int0() interrupt 0
{
if(key0)
{
delay(1000); //消抖
if(key
0)
{
led=~led;
}
}
}

仿真图

手把手教你51单片—中断
手把手教你51单片—中断

元器件名:

AT89C51 (AT89C52也可以)
res (电阻)
power (电源5V)
button (按键)
ground (接地)

备注

此为外部中断方式0
如果用外部中断1 需要将中断初始化函数中EX0改为EX1;IT0改为IT1;
中断服务函数intrrupt 0改为interrupt 2(因为intrrupt 1是定时器0)

相关文章: