【51单片机计时器1中断的60秒数码管倒计时】2023-1-23

51单片机的60秒数码管倒计时缘由https://ask.csdn.net/questions/7859269

cpp 复制代码
`#include <REGX52.H>
#define uchar unsigned char
#define uint unsigned int
uchar code table_du[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
void delay(){    uint m;for(m=0;m<255;m++);}    
uchar j=0,sum=60;
void main(){
    TMOD=0x01;
    TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
    TR0=1;
    EA=1;
    ET0=1;
    while(1){
        P2=255-1;
        P0=table_du[sum/10];
        delay();P0=P2=255;
        P2=255-2;
        P0=table_du[sum%10];
            delay();P0=P2=255;

    }
}
void time0() interrupt 1{
    TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
    j++;
       if(j==20){
        j=0;
        sum--;
        if(sum==0)
            sum=60;
    }
}`


计时器中断1秒计时在程序简单的时候还是比较准确的,一旦程序复杂则定时时间不准确,因此程序返回主函数周期越小则用定时器作为1秒时钟的准确率就至关重要,也就是响应中断的时间能否尽量小,若能尽量小则1秒的计时误差也相对小则计时精度就高。

相关推荐
Jiezcode2 小时前
LeetCode 148.排序链表
数据结构·c++·算法·leetcode·链表
Asmalin2 小时前
【代码随想录day 29】 力扣 406.根据身高重建队列
算法·leetcode·职场和发展
Asmalin2 小时前
【代码随想录day 32】 力扣 70.爬楼梯
算法·leetcode·职场和发展
聪明的笨猪猪3 小时前
Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
heisd_13 小时前
使用STM32CubeMX创建新的工程,使用vscode进行编码和调试
vscode·stm32·嵌入式硬件
张书名4 小时前
《强化学习数学原理》学习笔记3——贝尔曼方程核心概念梳理
笔记·学习·算法
为何创造硅基生物4 小时前
C语言结构体
c语言·windows·microsoft
迎風吹頭髮4 小时前
UNIX下C语言编程与实践18-UNIX 文件存储原理:目录、i 节点、数据块协同存储文件的过程
java·c语言·unix
范纹杉想快点毕业4 小时前
ZYNQ7045芯片中UART实现RS422通信详解,50000字解析,C语言,嵌入式开发,软件开发
c语言·笔记·stm32·单片机·嵌入式硬件·mcu·fpga开发