15单片机俩led灯闪三次后交替代码
时间: 2024-12-15 12:14:04 浏览: 4
在使用15单片机控制两个LED灯交替闪烁三次,通常我们会选择通过定时器配合中断的方式来实现。这里以常见的8051系列单片机为例,如AT89S51,假设P1口的P1^0和P1^1连接了LED灯。
```c
#include <reg52.h> //包含8051寄存器头文件
unsigned char count = 0; //计数器用于控制闪烁次数
void delay(unsigned int time) {
while(time--) ;//简单的延时函数
}
void main(void) {
TMOD = 0x01; //设置定时器1为模式1,定时功能
TH1 = 0xFD; //设定定时器1初值,大约等于机器周期的64次
TL1 = 0xFD;
EA = 1; //打开总中断
ET1 = 1; //开启外部中断
TR1 = 1; //启动定时器1
while(1) { //主循环
if(count == 3) { //如果计数器达到3,停止当前操作并切换LED状态
P1 ^= 0b0001; //异或操作,改变P1口的状态,LED灯切换
count = 0; //重置计数器
}
//每完成一次定时器1溢出(约64ms),点亮对应LED,然后进入下一个周期
if(TF1 == 1) { //TF1标志位表示定时器溢出
TF1 = 0; //清零标志
count++; //计数器加一
LED_flash(); //调用LED闪烁函数
delay(30); //短暂停顿让灯光闪烁
}
}
}
void LED_flash() {
for(int i = 0; i < 2; ++i) { //循环两次,模拟交替闪烁
P1 |= 1 << (i+1); //点亮对应的LED
delay(30);
P1 &= ~(1 << (i+1)); //关闭对应的LED
}
}
```
阅读全文