手把手教你51单片—中断

实验四_中断

代码

**#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;
}
}
}

仿真图

在这里插入图片描述
在这里插入图片描述

元器件名:

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

备注

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

发布了5 篇原创文章 · 获赞 3 · 访问量 42

猜你喜欢

转载自blog.csdn.net/weixin_44871327/article/details/104425221
今日推荐