基于51单片机的电子跑表代码
时间: 2024-09-13 11:02:24 浏览: 48
基于51单片机的电子跑表(也称为定时器计数器应用)通常会利用单片机的内部定时器来测量时间间隔。以下是一个简单的基于AT89S52(如常见的51系列)的电子跑表基本框架:
```c
#include <reg52.h>
#define TIMER1 SM0 // 使用Timer1工作模式0
void delay(unsigned int time) {
for (unsigned int i = time; i != 0; i--) __delay_ms(1);
}
void start_counter(void) {
TMOD = 0x01; // 设置TMOD为工作方式1,8位计数
TH1 = 0xFF; // 高8位初值全满
TL1 = 0xFD; // 低8位初值非全满
TR1 = 1; // 开启 Timer1
}
void stop_counter(void) {
TR1 = 0; // 关闭 Timer1
}
unsigned long get_time(void) {
unsigned long count = 0;
if (TF1 == 1) { // 如果溢出标志TF1为1
TF1 = 0; // 清除溢出标志
count++; // 加1到计数器
}
return count;
}
int main(void) {
start_counter();
while (1) {
unsigned long elapsed_time = get_time(); // 获取当前计数
delay(1000); // 每秒读取一次时间
printf("Elapsed Time: %lu ms\n", elapsed_time * 10); // 显示时间(毫秒)
}
return 0;
}
阅读全文