|
我需要數碼管數秒,但是現在不知道哪里出錯了總是一起變化 希望大師幫忙看看程序
#include<reg51.h>
sbit A0=P1^0; //éèÖÃ74HC138êäèë½Å
sbit A1=P1^1; //éèÖÃ74HC138êäèë½Å
sbit A2=P1^2; //éèÖÃ74HC138êäèë½Å
sbit E3=P1^3;
sbit E1E2=P1^4; //éèÖÃ74HC138
unsigned char i = 0;
unsigned int cnt = 0;
unsigned char code ledchar[]={ //12Ñô¼«êyÂë1ü
0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};
unsigned char ledbuff[]={ //λѡ′æ′¢±ä»ˉμÄλÖÃ2»Äü1»·ÅÔúCODEÄú
0xff,0xff,0xff,0xff,0xff,0xff
};
void main()
{
unsigned long sec = 0;
E1E2=0;//3õê¼»ˉ74HC138
E3=1;
TMOD=0X01;//3õê¼»ˉ¶¨ê±Æ÷¶¨ê±Æ÷01¤×÷·½ê½1
TH0=0xfc;//1MS3õê¼Öμ
TL0=0X67;
EA=1;
ET0=1;TR0=1;
while(1)
{
if(cnt>=1000)//1Ãëê±¼äμ½
{
cnt = 0;
sec++;
ledbuff[0]=ledchar[sec%10];
ledbuff[1]=ledchar[sec/10%10];
ledbuff[2]=ledchar[sec/100%10];
ledbuff[3]=ledchar[sec/1000%10];
ledbuff[4]=ledchar[sec/10000%10];
ledbuff[5]=ledchar[sec/100000%10];
}
}
}
void T0_time() interrupt 1
{
TH0=0XFC;
TL0=0X67;
cnt++;
P0=0xff;
switch(i)
{
i++;
case 0:A2=0;A1=0;A0=0;i++;P0=ledbuff[0];break;
case 1:A2=1;A1=0;A0=0;i++;P0=ledbuff[1];break;
case 2:A2=0;A1=1;A0=0;i++;P0=ledbuff[2];break;
case 3:A2=0;A1=1;A0=1;i++;P0=ledbuff[3];break;
case 4:A2=1;A1=0;A0=0;i++;P0=ledbuff[4];break;
case 5:A2=1;A1=0;A0=1;i=0;P0=ledbuff[5];break;
default:break;
}
}
|
|