/************************************************************************* 首先祝大家在蓝桥杯比赛上能取得好成绩 以下代码为我利用手头上的开发板(QX-MCS51)写下的小程序 利用计时器计时,数码管显示来实现的计时秒表,但运行起来总会出错还找不到错误位置,求各位大神帮忙看一下 *************************************************************************/ #include <reg52.h> #define u8 unsigned char #define u16 unsigned int sbit DU = P2^6; sbit WE = P2^7; sbit S2 = P3^0; u8 code SMGdu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; u8 code SMGwe[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; u8 a,b,c,ms; void SMGHS() //数码管显示函数 { static u8 wei; P0 = 0xff; WE = 1; P0 = SMGwe[wei]; WE = 0; switch(wei) { case 0:DU = 1;P0 = SMGdu[a%10];DU = 0; break; case 1:DU = 1;P0 = SMGdu[a/10];DU = 0; break; case 2:DU = 1;P0 = 0x40;DU = 0; break; case 3:DU = 1;P0 = SMGdu[b%10];DU = 0; break; case 4:DU = 1;P0 = SMGdu[b/10];DU = 0; break; case 5:DU = 1;P0 = 0x40;DU = 0; break; case 6:DU = 1;P0 = SMGdu[c%10];DU = 0; break; case 7:DU = 1;P0 = SMGdu[c/10];DU = 0; break; } wei++; if(wei == 8) wei = 0; } void Delay_ms(u16 n) //延时函数 { u8 j; while(n--) for(j=0;j<113;j++); } void time0init() //计时器初始化函数 { EA = 1; ET0 = 1; TR0 = 1; TMOD = 0x01; TH0 = 0xf8; TL0 = 0xcc; //放入计时初值(2ms) } void main() { time0init(); //调用初始化函数 while(1) { if(ms == 5) { ABC: ms = 0; a++; //a为10ms位 if(a == 100) { a = 0; b++; //b为 s 位 if(b == 60) { b = 0; c++; //c为 min 位 if(c == 60) c = 0; } } } if(S2 == 0) //按下S2暂停计时 { Delay_ms(10); if(S2 == 0) { while(S2 == 0); while(1) { if(S2 == 0) //再次按下S2开始计时 { Delay_ms(10); if(S2 == 0) { while(S2 == 0); goto ABC; } } } } } } } void timer0()interrupt 1 { TH0 = 0xf8; TL0 = 0xcc; //重放初值 ms++; SMGHS(); }
共4条
1/1 1 跳转至页
求助!利用计时器和数码管写的秒表,误差比较大
关键词: 蓝桥训练 程序 数码管 计时器
共4条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
Let'sdo第3期任务合集被打赏50分 | |
与电子爱好者谈读图四被打赏50分 | |
Let‘s do 第三季 [电子测光表] 基础任务和进阶任务成果展示被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 |