计数器实验内容:P1口接2只LED灯,定时器 T1采用计数模式,方式1中断,外接按钮开关作为计数输入,当按2次按钮开关,P1 口第一只LED点亮,再按2次按钮开关,P1口第二只LED点亮,再按2次按钮,所有LED 灯熄灭。 代码用static写
#include <reg52.h>
// 定义 LED 灯的控制端口和对应的控制位
sbit LED1 = P1^0;
sbit LED2 = P1^1;
// 定义计数器的变量
static unsigned char counter = 0;
// 定义按钮输入的函数
void buttonInput() interrupt 3 {
// 按钮开关在第一位时,计数器加一
if (P3 & 0x01) {
counter++;
}
}
// 定义延时函数
void delay(unsigned int time) {
unsigned int i, j;
for (i = time; i > 0; i--) {
for (j = 110; j > 0; j--);
}
}
// 主函数
void main() {
// 初始化定时器 T1
TMOD &= 0xF0;
TMOD |= 0x01;
TH1 = 0xFC;
TL1 = 0x18;
TR1 = 1;
ET1 = 1;
EA = 1;
// 循环检测计数器变量,控制 LED 灯的亮灭状态
while (1) {
if (counter == 2) {
LED1 = 1;
delay(50000);
LED2 = 1;
delay(50000);
counter = 0;
LED1 = 0;
LED2 = 0;
}
}
}