/*************************************************************************
首先祝大家在蓝桥杯比赛上能取得好成绩
以下代码为我利用手头上的开发板(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							跳转至页
		回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |


 
			
			
			
						
			 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

