初始状态下,LED为熄灭状态,按下S1后,LED按100ms周期闪烁,按下S2后,LED恢复熄灭状态,根据微机原理编写程序
时间: 2024-11-10 18:25:27 浏览: 10
这是一个简单的基于51单片机的硬件控制程序设计任务。下面是基本的程序流程:
```c
#include <reg52.h> //包含51系列单片机的寄存器头文件
sbit S1 = P1^0; //定义S1引脚为P1口的第0位输入
sbit S2 = P1^1; //定义S2引脚为P1口的第1位输入
sbit LED = P1^2; //定义LED引脚为P1口的第2位输出
unsigned int count = 0; //用于计数闪烁周期
void main() {
TR1 = 1; //开启定时器1工作
TMOD = 0x01; //设置TMOD为模式1:8位自动重装定时器
TH1 = 0xFD; //设定定时器1的高8位初值,约等于100ms * (2^8) / 12MHz
TL1 = 0xFA; //设定定时器1的低8位初值
while(1) { //主循环
if(S1 == 0) { //判断S1是否按下
if(count == 0) { //如果开始计数
count = 1;
while(!count); //一直等待直到计数满
LED = ~LED; //LED亮起
} else { //计数结束,LED熄灭
LED = 0;
count = 0;
}
}
if(S2 == 0) { //判断S2是否按下
LED = 0; //关闭LED
count = 0; //重置计数
}
__delay_ms(1); //延时1ms,防止CPU繁忙
}
}
阅读全文