c51单片机秒表计时程序
时间: 2023-08-13 14:04:32 浏览: 37
以下是简单的C51单片机秒表计时程序:
```
#include <reg51.h>
// 定义常量
#define uchar unsigned char
#define uint unsigned int
// 定义变量
uchar count = 0;
uchar second = 0;
uchar minute = 0;
uchar hour = 0;
// 定义函数
void delay(uint t);
void main() {
TMOD = 0x01; // 定时器0工作在模式1(16位定时器模式)
TH0 = 0xFC; // 定时器初始值
TL0 = 0x67; // 定时器初始值
TR0 = 1; // 启动定时器0
ET0 = 1; // 开启定时器0中断
EA = 1; // 开启总中断
while (1) {
// 显示计时结果
P0 = hour;
P1 = minute;
P2 = second;
}
}
// 定时器0中断服务程序
void tm0() interrupt 1 {
TH0 = 0xFC; // 定时器初始值
TL0 = 0x67; // 定时器初始值
count++;
if (count == 20) { // 20次中断为1秒
count = 0;
second++;
if (second == 60) { // 1分钟
second = 0;
minute++;
if (minute == 60) { // 1小时
minute = 0;
hour++;
if (hour == 24) { // 24小时
hour = 0;
}
}
}
}
}
// 延时函数
void delay(uint t) {
uint i, j;
for (i = t; i > 0; i--) {
for (j = 110; j > 0; j--);
}
}
```
该程序使用定时器0中断实现计时,每20次中断为1秒,计算出秒、分、时并显示在P0、P1、P2端口上。需要注意的是,定时器的初始值需要根据实际情况进行调整。