实验四_中断
代码
**#include"reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
***it led=P0^0; //位定义
***it 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(key==0)
{
delay(1000); //消抖
if(key==0)
{
led=~led;
}
}
}
仿真图
元器件名:
AT89C51 (AT89C52也可以)
res (电阻)
power (电源5V)
button (按键)
ground (接地)
备注
此为外部中断方式0
如果用外部中断1 需要将中断初始化函数中EX0改为EX1;IT0改为IT1;
中断服务函数intrrupt 0改为interrupt 2(因为intrrupt 1是定时器0)
实验四_中断
代码
**#include"reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
***it led=P0^0; //位定义
***it 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(key==0)
{
delay(1000); //消抖
if(key==0)
{
led=~led;
}
}
}
仿真图
元器件名:
AT89C51 (AT89C52也可以)
res (电阻)
power (电源5V)
button (按键)
ground (接地)
备注
此为外部中断方式0
如果用外部中断1 需要将中断初始化函数中EX0改为EX1;IT0改为IT1;
中断服务函数intrrupt 0改为interrupt 2(因为intrrupt 1是定时器0)
举报