单片机弄一个计时器使周期为50ms的方波使计时器在0~59秒范围内循环计时,且每次增加一秒。当复位键有效时,该计时器清零时不再计时。当复位键无效的前提下,当使能键有效时该计时器开始计时,当使能键无效时该计时器暂停计时。该计时器使用两位数码管动态显示计时值
时间: 2023-05-20 10:03:10 浏览: 124
以下是代码示例:
```
#include <reg52.h>
#define CLK 20000000UL // 定义晶振频率
#define T 50 // 定义计时器周期为50ms
sbit reset = P1^0; // 复位键
sbit enable = P1^1; // 使能键
sbit digit1 = P2^0; // 数码管第一位
sbit digit2 = P2^1; // 数码管第二位
sbit segA = P2^2; // 数码管段A
sbit segB = P2^3; // 数码管段B
sbit segC = P2^4; // 数码管段C
sbit segD = P2^5; // 数码管段D
sbit segE = P2^6; // 数码管段E
sbit segF = P2^7; // 数码管段F
sbit segG = P3^0; // 数码管段G
unsigned char code segTable[] = { // 数码管段码表
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f, // 9
};
unsigned char cnt = 0; // 计时器计数值
bit running = 0; // 计时器运行状态
void delay(unsigned int ms) { // 延时函数
unsigned int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 120; j++);
}
}
void display(unsigned char num) { // 数码管显示函数
digit1 = 1;
digit2 = 0;
P0 = segTable[num / 10];
delay(1);
digit1 = 0;
digit2 = 1;
P0 = segTable[num % 10];
delay(1);
}
void timer0() interrupt 1 { // 定时器0中断服务函数
TH0 = (65536 - (CLK / 12 / 1000 * T)) / 256; // 计算重载值
TL0 = (65536 - (CLK / 12 / 1000 * T)) % 256;
cnt++; // 计数值加1
if (cnt == 60) cnt = 0; // 计数值归零
if (reset == 0) cnt = 0; // 复位键按下,计数值清零
if (enable == 0) running = 1; // 使能键按下,计时器开始运行
if (enable == 1) running = 0; // 使能键松开,计时器停止运行
}
void main() {
TMOD = 0x01; // 定时器0工作在模式1
TH0 = (65536 - (CLK / 12 / 1000 * T)) / 256; // 计算重载值
TL0 = (65536 - (CLK / 12 / 1000 * T)) % 256;
ET0 = 1; // 开启定时器0中断
EA = 1; // 开启总中断
TR0 = 1; // 启动定时器0
while (1) {
if (running) display(cnt); // 计时器运行时显示计数值
else display(0); // 计时器停止时显示0
}
}
```
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)