历史上的今天
今天是:2025年08月10日(星期日)
2021年08月10日 | 8051单片机(STC89C52)以定时器中断模式实现倒计时器
2021-08-10 来源:eefocus
之前用轮询方式实现了定时器精准定时, 这里用前后台系统架构实现倒计时器.
每10ms都会触发一次中断处理程序T0_INT(), 根据tcount的值, 决定显示个位数字还是十位数字: 当tcount = 100时, 将tcount置回初始值0, 并将sec的值减1. 当sec的值减到-1时, 将sec重新置回15.
#include unsigned char code DIG_CODE[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//对应数码管显示0~9 int tcount = 0;//记录经过的10ms区间段个数 int sec = 15;//倒计时初始值 void T0_INT() interrupt 1 //timer0中断, 每10ms触发一次 { TR0 = 0;//关闭timer0 TH0 = 0xD8; TL0 = 0xF0;//65536 - 10000 = 55536 if(tcount % 2 == 0) { //显示个位数 P2 = 0;// P2 = 0 -> (P24, P23, P22) = (0, 0, 0) -> 右数第一个数字点亮 P0 = DIG_CODE[sec % 10]; tcount ++; } else if(tcount % 2 == 1) { //显示十位数 P2 = 1 << 2;//P2 = 0000 0100 -> (P24, P23, P22) = (0, 0, 1) -> 右数第二个数字点亮 P0 = DIG_CODE[sec / 10]; tcount ++; } if(tcount == 100) //10ms * 100 = 1000ms = 1s -> 1s时间到 { tcount = 0; sec --; if(sec == -1) { sec = 15; } } TR0 = 1;//重新开启timer0 } int main() { TMOD = 0x01; TH0 = 0xD8; TL0 = 0xF0;//65536 - 10000 = 55536 IE = 0x82;//EA + ET0 -> 1000 0010 TR0 = 1;//开启timer0 while(1) { ; } return 0; }
史海拾趣
|
原板子没开机画面,修改TE6410开机画面,编译成功,烧写的时候出现 Download BIN file information: ----------------------------------------------------- [0]: Base Address=0x80030000 Length=0x0---------------------------------------- ...… 查看全部问答> |
|
高分求解Filter Driver的"device string is NULL"问题,测试WHQL的问题。 整了个Filter Driver。是基于Mouse Class的。 WHQL验证时,遇到问题。不知道何解。 Context Index: 2344544492 Current: Checking DeviceID String Parent: WTTLOG C ...… 查看全部问答> |
|
我在wince6.0下编译SDHC驱动,在source中,默认是如下lib文件: SOURCELIBS= \\ $(_COMMONOAKROOT)\\lib\\$(_CPUINDPATH)\\sdcardlib.lib \\ $(_COMMONOAKROOT)\\lib\\$(_CPUINDPATH)\\sdhcl ...… 查看全部问答> |
|
手把手教你写专利申请书·如何申请专利 摘要小前言(一)申请前的准备工作 1、申请前查询 2、其他方面的考虑 3、申请文件准备(二)填写专利申请系列文档 1、实际操 ...… 查看全部问答> |
|
大家一起把这个做好吧?chenzhufly本身就很忙,一个人肯定应付不过来 这个板块现在好冷清,EE_WORLD 中断了,大家一起把这个做好吧?chenzhufly本身就很忙,一个人肯定应付不过来… 查看全部问答> |
|
【Trf7960问题】MIFARE_ERROR_NO_CARD 我用TRF7960读写M1卡,电路部分参考Lm3s9b96的那个评估板,我的板子上天线部分已经输出13.56M正弦波,现在可以对TRF7960进行寄存器(0x00到0x0F)的读写,但是在用TI例程进行M1 读卡操作,当运行这个函数时: ulUIDSiz ...… 查看全部问答> |
|
如果说我用一块单片机Atmega32-16,插在基座上然后焊在万用板上,我每次想把程序烧进单片机里,是不是说在我焊好的万用板上引出单片机对应的MOSI,MISO,SCK,RESET,VCC,GND各个引脚插在我ISP下载器上相对应的引脚后,我就可以顺利烧录进程序了?另外 ...… 查看全部问答> |




