![]() |
發(fā)布時間: 2019-3-15 10:44
正文摘要:#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit wela=P2^7; sbit dula=P2^6; void display(uchar bai,uchar shi,uchar ge); void init(); void delay(uint z); uchar a ... |
wulin 發(fā)表于 2019-3-15 21:17 不錯不錯,這才是負責任的回答!樓主記得打償黑幣喲! |
參與人數(shù) 5 | 黑幣 +52 | 收起 理由 |
---|---|---|
![]() | + 8 | 很給力! |
![]() | + 16 | |
![]() | + 10 | 很給力! |
![]() | + 10 | 很給力! |
![]() | + 8 | 很給力! |
定時器設置有錯誤、延時函數(shù)有錯誤、顯示程序位置錯誤。改好了。 #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit wela=P2^7; sbit dula=P2^6; void display(); void init(); void delay(uint z); uchar bai,shi,ge,temp,temp1; uchar aa; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void main() { init(); //初始化之程序 while(1) { if(aa==20) { aa=0; temp++; if(temp>120) { temp=0; } bai=temp/100; shi=temp%100/10; ge =temp%10; } display(); } } void init() { wela=0; dula=0; temp=0; temp1=0; TMOD=0x01; TH0=(63556-50000)/256; // TH0=(63556-50000)%256; TL0=(63556-50000)%256; TR0=1; EA=1; ET0=1; } void timer0() interrupt 1 { TH0=(63556-50000)/256; // TH0=(63556-50000)%256; TL0=(63556-50000)%256; aa++; } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=120;y>0;y--); } void display() //顯示1-100變化的子程序 { P0=0xfe; wela=1; wela=0; P0=table[bai]; dula=1; dula=0; delay(2); P0=0xfd; wela=1; wela=0; P0=table[shi]; dula=1; dula=0; delay(2); P0=0xfb; wela=1; wela=0; P0=table[ge]; dula=1; dula=0; delay(2); } |
你的delay延時程序有問題,for(x=z;x>0;x++)和 for(y=z;y>0;y++)語句中分別應該是x--和y--,而不應該是x++和y++。話又說回來,累加到溢出=0應該也行吧,但你的x、y又是unsigned int型,這個延時也太長了吧 |