帮忙看下我写这个程序有什么不对的地方

2019-03-24 18:55发布

帮忙看下我写这个程序有什么不对的地方
现在的情况是下载到单片机上就第一个数码管显示一个零,然后就停在那里
单片机原理图在这里http://wenku.baidu.com/view/0fc085f5f90f76c661371a1e.html
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit en=P3^3;  //锁存器E口
sbit dula=P3^7;//锁存器dula口
uchar tt,shu,bai,shi,ge;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void display(bai,shi,ge);//数码管显示程序
void ys(uint z); //延时程序
void init();//程序初始化
void main(){
         init();//程序初始化
         en=0;
         dula=1;
         while(1){               
                 if(tt==20){
                         tt=0;
                         shu++;
                         if(shu==100)
                                 shu=0;
                         bai=shu/100;
                         shi=shu%100/10;
                         ge=shu%10;
                                         }
                 display(bai,shi,ge);//显示变量shu
         }
}
void init(){   //程序初始化
         shu=0;
         TMOD=0x01;
         TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
         EA=1;
         ET0=1;
         TR0=1;
}
void ys(uint z){   //延时程序
         uint y,x;
         for(x=100;x>0;x++)
                 for(y=z;y>0;y++);
}
void timer() interrupt 1  //计数中断
{
         TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
         tt++;
}
void display(bai,shi,ge){ //数码管显示
         P2=0xef;
         P1=table[bai];  //第一个数码管显示第一位变量bai
         ys(5);
         P2=0xdf;
         P1=table[shi];   //第二个数码管显示第二位变量shi
         ys(5);
         P2=0xbf;
         P1=table[ge];  //第三个数码管显示第三位变量ge
         ys(5);
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
xy363586
1楼-- · 2019-03-25 04:15
 精彩回答 2  元偷偷看……
mark276810852
2楼-- · 2019-03-25 06:12
延时程序写错了
138hc487
3楼-- · 2019-03-25 10:12
void delay(unsigned int xms)   
{
unsigned int x,y;
for(x=xms;x>0;x--)
  for(y=110;y>0;y--);
}
这样写。
yangxf1217
4楼-- · 2019-03-25 16:09
罗曼帝客
5楼-- · 2019-03-25 18:04
路过,看看

一周热门 更多>