按钮灯闪烁程序可以根据不同的微控制器和编程环境有多种实现方式。以下是几种常见的实现方法:
方法一:使用独立按键和延时
```c
include
sbit LED = P0^0; // LED连接到P0.0
sbit KEY = P1^2; // 按键连接到P1.2
void delay(unsigned int time) {
unsigned int i, j;
for (i = time; i > 0; i--)
for (j = 120; j > 0; j--);
}
void main() {
while (1) {
if (!KEY) { // 等待按键按下
delay(10); // 延时消抖
if (!KEY) { // 确定按键按下
LED = ~LED; // 翻转LED状态
}
}
}
}
```
方法二:使用定时器控制闪烁
```c
include
sbit LED = P0^0; // LED连接到P0.0
sbit KEY = P1^2; // 按键连接到P1.2
void delay(unsigned int time) {
unsigned int i, j;
for (i = time; i > 0; i--)
for (j = 120; j > 0; j--);
}
void main() {
while (1) {
if (!KEY) { // 等待按键按下
delay(10); // 延时消抖
if (!KEY) { // 确定按键按下
LED = ~LED; // 翻转LED状态
}
}
}
}
```
方法三:使用梯形图实现(适用于西门子S7-1200)
```梯形图
|-----[I0.0]-----[TON, 100ms]-----[Q0.0]
```
方法四:使用结构化文本实现(适用于西门子S7-1200)
```结构化文本
IF [I0.0] = 1 THEN
[T1] = 1
[Q0.0] = NOT [Q0.0]
ELSE
[T1] = 0
END_IF
```
方法五:使用JavaScript实现(适用于网页)
```html