单片机计数器实验内容

计数器实验内容: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;
        }
    }
}