/*************************************************************************
首先祝大家在蓝桥杯比赛上能取得好成绩
以下代码为我利用手头上的开发板(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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
我要赚赏金
