找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6782|回复: 2
打印 上一主题 下一主题
收起左侧

[求助]为什么秒表越走越慢?

[复制链接]
跳转到指定楼层
楼主
ID:15096 发表于 2009-10-10 17:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

各位,帮我看看,一下程序,显示的秒表越走越慢,是为什么?运行平台是论坛的这个51hei板子. 


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar disnum,miao;
uint cnt;

sbit dula=P2^6;
sbit wela=P2^7;

uchar code tabledu[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};

void delay(uint x)

 uint i,j;
 for(i=x;i>0;i--)
  for(j=124;j>0;j--);
}

display1(uchar shi,uchar ge)
{
// dula=0;
 P0=0xef;
 wela=1;
 wela=0; 
 P0=tabledu[shi];
 dula=1;
 dula=0;
 delay(1);

// dula=0;
 P0=0xdf;
 wela=1;
 wela=0; 
 P0=tabledu[ge];
 dula=1;
 dula=0;
 delay(1);
}

display2(uchar yi,uchar er,uchar san,si)
{
 //dula=0;
 P0=0xfe;
 wela=1;
 wela=0; 
 P0=tabledu[yi];
 dula=1;
 dula=0;
 delay(1);
 
// dula=0;
 P0=0xfd;
 wela=1;
 wela=0; 
 P0=tabledu[er];
 dula=1;
 dula=0;
 delay(1);

// dula=0;
 P0=0xfb;
 wela=1;
 wela=0; 
 P0=tabledu[san];
 dula=1;
 dula=0;
 delay(1);

// dula=0;
 P0=0xf7;
 wela=1;
 wela=0; 
 P0=tabledu[si];
 dula=1;
 dula=0;
 delay(1);
}

void main()
{
 EA=1;
 ET1=1;
 TMOD=0x20;
 TH1=0x9c;
 TL1=0x9c;
 TR1=1; 
 
 P0=0xf7;
 wela=1;
 wela=0;
 P0=0x80;
 dula=1;
 dula=0;
 while(1)
 {
 display1(disnum/10,disnum%10);
 display2(miao/1000,miao%1000/100,miao%1000%100/10,miao%1000%100%10%10);
   
 }
}

void time1() interrupt 3
{
 TH1=0x9c;
 TL1=0x9c;
 cnt++;
 if(cnt==100)
 { 
    cnt=0;
    if(disnum==100)
    {
      disnum=0;
     miao=miao+1;
     if(miao==9999)
     {
       miao=0;
     }
    }  
 disnum++;
 }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:17381 发表于 2009-10-10 22:08 | 只看该作者

你定义时把秒也定义uint吧,因为你下面秒的值计到9999才清零,溢出啦。。。。

回复

使用道具 举报

板凳
ID:1 发表于 2009-10-11 00:38 | 只看该作者

高手

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表