各位,帮我看看,一下程序,显示的秒表越走越慢,是为什么?运行平台是论坛的这个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++; } }
|