我的程序是掃描三個數碼管,從0開始計數到999
但顯示效果確是三個數碼管一起跳動,一開始都是0過一秒都跳到8去了,
反正就是一秒一起跳動一次,沒有規律。。。
程序貼上
u8 flag = 0;
u16 cont = 0;
u8 j = 0;
u8 digital[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
u8 xianshi[] = {0xFF,0xFF,0xFF};
int main(void)
{
u32 sec = 0;
tim0_zd(2);
while(1)
{
if(flag == 1)
{
flag = 0;
sec++;
xianshi[0] = digital[sec % 10];
xianshi[1] = digital[sec / 10 % 10];
xianshi[2] = digital[sec / 100 % 10];
}
}
return 0;
}
//2ms中斷服務函數
void TIM0_IRQN() interrupt 1
{
TH0 = (65536 - time) / 256;
TL0 = (65536 - time) % 256;
cont++;
if(cont >= 500) //1s ¸üD±ê־λ
{
flag = 1;
cont = 0;
}
P0 = 0XFF;
switch(j)
{
case 0: SMG1 = 0;j++;P0 = xianshi[0];break;
case 1: SMG2 = 0;j++;P0 = xianshi[1];break;
case 2: SMG3 = 0;j = 0;P0 = xianshi[2];break;
default: break;
}
}
|