做了一個LED旋轉顯示屏,抄了一個程序,有一部分程序一直不能理解,就是下面這部分,運行的流程是什么樣子呀,
這里shownum初始化為0;程序沒有問題,但是,一直不能理解為什么這樣能夠達到顯示效果,數據輸送到P1,P0,然后如何循環顯示的,為什么數組的字模數據存在showdat[160+i],
- uchar xdata ShowDat[176];
- void EX0_int() interrupt 0 //外部中斷0
- {
- ShowNum=0;
- ms++;
-
- }
- void timer0() interrupt 1 //定時中斷0 中斷處理
- {
- TH0=0xfe; //0.37ms 11.0592M 晶振
- TL0=0xab;
- if(ShowNum<80)
- {
- P1=ShowDat[ShowNum*2];
- P0=ShowDat[ShowNum*2+1];
- ShowDat[ShowNum*2]=ShowDat[ShowNum*2+2];
- ShowDat[ShowNum*2+1]=ShowDat[ShowNum*2+3];
- ShowNum++;
- QuanOK=1;
- }
- else
- {
- P1=P0=0xff;
- if(ms==8)
- {
- ms=0;
- QuanOK=0;
-
- for(i=0;i<16;i++)
- {
- ShowDat[160+i]=Zimo1[ziNum][i];
- }
- ziNum=(ziNum+1)%61; //重復
- }
-
- else
- {
- if(QuanOK==1&&ms!=0) // 如果全部數據發送完畢 則更新160---176 數據
- {
- QuanOK=0;
- for(i=0;i<7;i++)
- {
- ShowDat[(80+i)*2]=ShowDat[(80+i)*2+2];
- ShowDat[(80+i)*2+1]=ShowDat[(80+i)*2+3];
- }
- }
- }
- }
- }
復制代碼
|