写一段51单片机代码实现自动0-59累加
时间: 2024-01-08 20:02:49 浏览: 80
29-9999累加(51单片机C语言实例Proteus仿真和代码)
好的,以下是一段简单的51单片机代码,可以实现自动0-59的累加:
```
#include <reg52.h>
// 定义全局变量
unsigned char seconds = 0; // 秒数
unsigned char minutes = 0; // 分钟数
// 定时器1中断服务函数,每隔1s触发一次
void timer1_isr() interrupt 3
{
TH1 = (65536 - 10000) / 256; // 重新赋值计时器1的初值
TL1 = (65536 - 10000) % 256;
seconds++; // 累加秒数
if (seconds == 60) // 秒数达到60时,重置为0
{
seconds = 0;
minutes++; // 分钟数加1
}
if (minutes == 60) // 分钟数达到60时,重置为0
{
minutes = 0;
}
}
void main()
{
TMOD = 0x10; // 定时器1工作在模式1下
TH1 = (65536 - 10000) / 256; // 设置计时器1的初值
TL1 = (65536 - 10000) % 256;
EA = 1; // 开启总中断
ET1 = 1; // 开启定时器1中断
TR1 = 1; // 启动计时器1
while (1)
{
P0 = seconds % 10; // 显示秒数的个位数
P1 = seconds / 10; // 显示秒数的十位数
P2 = minutes % 10; // 显示分钟数的个位数
P3 = minutes / 10; // 显示分钟数的十位数
}
}
```
这段代码使用了定时器1来触发中断,每隔1s累加秒数`seconds`的值,当秒数达到60时,重置为0,并将分钟数`minutes`加1。在主程序中,将秒数的个位、十位和分钟数的个位、十位分别输出到P0、P1、P2和P3口,从而实现了自动0-59的累加。
阅读全文