用的是HJ-2G開發學習板,想實現用動態數碼管實時顯示ds1302的功能?仿照網上程序試了好多遍,為什么老是實現不了呢?
void Delay(unsigned long x)
{
while(x--);
}
show(uchar time[])
{
uchar time0,gw,sw, time1,time2;//
unsigned long t=500;
//uint t=2;
time0=time[0]; time[0]為得到的秒BCD碼
sw=time0/16; 求十位;
gw=time0%16; 求個位;
DDRA|=BIT(3);//把PA3設為輸出
DDRA|=BIT(4);//把PA4設為輸出
DDRB=0XFF;//把PB口設為輸出型,全為高
PORTA|=BIT(3);
PORTB=Number[sw];
PORTA&=~BIT(3);
PORTB=0XFF;
PORTB&=~BIT(4);//位選四顯示分十位
PORTA|=BIT(4);
PORTA&=~BIT(4);
Delay(t);
PORTA|=BIT(3);
PORTB=Number[gw];
PORTA&=~BIT(3);
PORTB=0XFF;
PORTB&=~BIT(5);//位選四顯示分個位
PORTA|=BIT(4);
PORTA&=~BIT(4);
Delay(t);
}
哪位大俠指點一下迷津?
補充:假設先前輸入的秒是50,理想情況在數碼管顯示出50并不斷加1,但最后顯示是AE, AE也不動,不知道錯誤在哪。
時間在1602上顯示正常,當然輸入1602的數據提前轉為ascii碼了。
|