51单片机24秒倒计时程序
时间: 2023-08-12 18:04:34 浏览: 594
以下是51单片机实现篮球24秒倒计时功能的程序,仅供参考:
```c
#include <reg52.h>
#define LED P0
#define KEY_START P3_0
#define KEY_PAUSE P3_1
#define KEY_RESUME P3_2
#define KEY_RESET P3_3
#define BUZZER P3_4
unsigned char second = 24; // 初始倒计时时间为24秒
unsigned char count = 0; // 计数器
void delay(unsigned int t) // 延时函数,单位为毫秒
{
unsigned int i, j;
for(i = t; i > 0; i--)
for(j = 110; j > 0; j--);
}
void display(unsigned char num) // 数码管显示函数
{
LED = num;
delay(5); // 延时5毫秒,防止闪烁
}
void interruptTimer0() interrupt 1 // 定时器0中断服务函数
{
TH0 = 0xFC; // 重新设置定时器初值
TL0 = 0x67;
count++; // 计数器加1
}
void main()
{
TMOD = 0x01; // 定时器0工作在模式1
TH0 = 0xFC; // 设置定时器初值
TL0 = 0x67;
ET0 = 1; // 允许定时器0中断
EA = 1; // 开启总中断
while(1)
{
if(KEY_START == 0) // 检测倒计时开始按键
{
TR0 = 1; // 启动定时器0
while(KEY_START == 0); // 等待按键松开
}
if(KEY_PAUSE == 0) // 检测倒计时暂停按键
{
TR0 = 0; // 停止定时器0
while(KEY_PAUSE == 0); // 等待按键松开
}
if(KEY_RESUME == 0) // 检测倒计时继续按键
{
TR0 = 1; // 启动定时器0
while(KEY_RESUME == 0); // 等待按键松开
}
if(KEY_RESET == 0) // 检测倒计时复位按键
{
TR0 = 0; // 停止定时器0
count = 0; // 计数器清零
second = 24; // 倒计时时间重新设置为24秒
BUZZER = 0; // 关闭蜂鸣器
display(second); // 显示倒计时时间
while(KEY_RESET == 0); // 等待按键松开
}
if(count == 1000) // 1秒钟到达
{
count = 0; // 计数器清零
second--; // 倒计时时间减1秒
if(second == 0) // 倒计时结束
{
TR0 = 0; // 停止定时器0
BUZZER = 1; // 发出蜂鸣器报警信号
}
display(second); // 显示倒计时时间
}
}
}
```
该程序使用了定时器0来实现1秒钟的计时,每当计时器溢出时,计数器加1,当计数器达到1000时,表示1秒钟到达,倒计时时间减1秒。同时,程序通过检测四个按键的状态来实现倒计时开始、暂停、继续和复位等功能。数码管用来实时显示倒计时时间,蜂鸣器用来发出倒计时结束的报警信号。
阅读全文