帮忙看下我写这个程序有什么不对的地方
现在的情况是下载到单片机上就第一个数码管显示一个零,然后就停在那里
单片机原理图在这里
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);
}
此帖出自
小平头技术问答
一周热门 更多>