将P3.4(T0)引脚连接按键K4,P1口各引脚分别连接LED,使用单片机内部定时计数器T0,按计数器模式工作于方式1,按二进制数方式进行计数,其数值在LED上显示出来。
时间: 2023-06-10 14:09:06 浏览: 127
将计数器T0计数的结果送P1口8位LED显示-综合文档
以下是基于51单片机的程序代码:
```
#include <reg51.h>
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit KEY = P3^4;
unsigned int cnt = 0;
void main()
{
TMOD = 0x01; // T0工作于方式1
TH0 = 0xFC; // 定时器初值为65536-5000,每50ms中断一次
TL0 = 0x18;
ET0 = 1; // 开启T0中断
EA = 1; // 开启总中断
TR0 = 1; // 启动T0
while(1)
{
if(KEY == 0) // 检测按键是否按下
{
while(KEY == 0); // 等待按键松开
cnt = 0; // 计数器清零
}
LED1 = cnt & 0x01; // 显示计数器的二进制数值
LED2 = cnt & 0x02;
LED3 = cnt & 0x04;
LED4 = cnt & 0x08;
}
}
void T0_ISR() interrupt 1 // 定时器T0中断服务函数
{
TH0 = 0xFC; // 重新赋初值,50ms中断一次
TL0 = 0x18;
cnt++; // 计数器加1
}
```
程序的思路是:通过定时器T0每隔50ms中断一次,在中断服务函数中将计数器加1。同时,检测按键是否按下,若按下则将计数器清零。在主循环中,根据计数器的值来控制LED灯的亮灭,从而显示计数器的二进制数值。
阅读全文