#include <REGX52.H> #include "Delay.h" sbit SW1=P3^2; sbit SW2=P3^3; sbit LED=P2^0; void main() { IT0=1; EX0=1; EA=1; IT1=1; EX1=1; EA=1; P2=0XFF; while(1) { if(SW1==0) { Delay(20); while(SW1==0); Delay(20); } if(SW2==0) { Delay(20); while(SW2==0); Delay(20); } } } void int0() interrupt 0 { while(1) { Delay(500); LED=0; Delay(500); LED=1; if(SW2==0) break; } } void int1() interrupt 2 { while(1) { LED=1; if(SW2==1) { LED=0; break; } } } 标注每一行代码的注释
时间: 2023-10-28 09:05:52 浏览: 175
单片机reg52.h
4星 · 用户满意度95%
这段代码使用了STC89C52单片机,主要实现了两个外部中断触发LED灯的闪烁。下面是每一行代码的注释:
```C
#include <REGX52.H> //包含了STC89C52的寄存器定义
#include "Delay.h" //包含了自定义的延时函数
sbit SW1=P3^2; //定义P3.2引脚为SW1
sbit SW2=P3^3; //定义P3.3引脚为SW2
sbit LED=P2^0; //定义P2.0引脚为LED
void main() //主函数
{
IT0=1; //设置INT0中断触发方式为下降沿触发
EX0=1; //允许INT0中断
EA=1; //开启总中断
IT1=1; //设置INT1中断触发方式为下降沿触发
EX1=1; //允许INT1中断
EA=1; //开启总中断
P2=0XFF; //将P2口设置为高电平输出
while(1) //无限循环
{
if(SW1==0) //当SW1按键被按下时
{
Delay(20); //短暂延时
while(SW1==0); //等待按键释放
Delay(20); //短暂延时
}
if(SW2==0) //当SW2按键被按下时
{
Delay(20); //短暂延时
while(SW2==0); //等待按键释放
Delay(20); //短暂延时
}
}
}
void int0() interrupt 0 //INT0中断服务程序
{
while(1) //无限循环
{
Delay(500); //延时500ms
LED=0; //LED灯亮
Delay(500); //延时500ms
LED=1; //LED灯灭
if(SW2==0) //当SW2按键被按下时
break; //跳出循环
}
}
void int1() interrupt 2 //INT1中断服务程序
{
while(1) //无限循环
{
LED=1; //LED灯灭
if(SW2==1) //当SW2按键被释放时
{
LED=0; //LED灯亮
break; //跳出循环
}
}
}
```
阅读全文