|
我用主機(jī)的點(diǎn)陣弄了個(gè)9-0秒的倒計(jì)時(shí),從機(jī)給主機(jī)發(fā)送按鍵值(主機(jī)倒計(jì)時(shí)是用定時(shí)器0,串口用了定時(shí)器一,串口的通信是ok的)。
我要實(shí)現(xiàn)的功能是:從機(jī)掃描按下按鍵,主機(jī)開始顯示倒計(jì)時(shí)。
我現(xiàn)在的問(wèn)題是:
我的點(diǎn)陣只能顯示9(不會(huì)變成8),我顯示是放在串口中斷里面,定時(shí)器0只用來(lái)計(jì)時(shí)(50ms一次溢出),串口波特率4800
請(qǐng)問(wèn):1.顯示的函數(shù)應(yīng)該在哪個(gè)地方,中斷還是while循環(huán)
2.中斷的優(yōu)先級(jí)需不需要改
請(qǐng)大神們幫幫忙。
看看哪里需要修改。
這是單片機(jī)代碼
- u8 Time=0,second=0;
- u8 Val=0;
- void zhongduan_Init(void)
- {
- TMOD = 0x21; //開啟定時(shí)器0、1
- TH0 = 0x3C; //設(shè)置初始值,定時(shí)50ms
- TL0 = 0xB0;
- TH1=0xF3; //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800
- TL1=0xF3;
- ET0 = 1; //打開定時(shí)器0中斷
- TR0 = 0; //不啟動(dòng)定時(shí)器0
- TR1=1; //打開定時(shí)器1
- SM0=0;//設(shè)置串口工作方式
- SM1=1;
- REN=1; //打開串口接收中斷
- IP=0x10;
- EA=1; //打開總中斷
- ES=1;//打開串口中斷
-
- }
- void main()
- {
- zhongduan_Init();
- while(1)
- {
- }
-
- }
- void Timer0() interrupt 1 //中斷服務(wù)函數(shù)
- {
- TH0 = 0x3C;
- TL0 = 0xB0;
- Time++;
- if(Time==20)
- {
- Time=0;
- second++; //一秒時(shí)間
- //if(second>=1)convert(); //心形移位
- }
- }
- void Usart() interrupt 4
- {
- Val=SBUF;
- switch(Val)
- {
- case 1:
- display(Val);//顯示
- break;
- }
- RI=0;
- }
- [\code]
- [code=c]
- void display(u8 DATa)//點(diǎn)陣顯示函數(shù)
- {
- u8 j;
- P0=0x7f;
-
- switch(DATa)
- {
- case 0: //初始畫面
- for(j=0;j<8;j++)
- {
- P0=bubian[j];
- Senddata(ten[j]);
- delay(10);
- Senddata(0x00);//消隱
- }
- break;
- case 1:
- show_1();
- break;
- }
- }
- void show_1(void)//倒計(jì)時(shí)顯示
- {
- u8 j;
- TR0=1;//開啟定時(shí)器
-
- while(second<10)//時(shí)間一到回到初始頁(yè)面
- {
- for(j=0;j<8;j++)
- {
- P0=bubian[j];
- Senddata(count[second][j]);
- delay(5);
- Senddata(0x00);//消隱
- }
- }
- }
復(fù)制代碼
|
|