各位大仙,我用串口調(diào)試助手往單片機(jī)里發(fā)送數(shù)據(jù),然后再數(shù)碼管里顯示,下面是我的程序,但不知哪錯(cuò)了,求指導(dǎo)啊!! #include <reg52.h> #include <intrins.h> unsigned char code non_dot[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //數(shù)字不帶小數(shù)點(diǎn) unsigned char code dot[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //數(shù)字帶小數(shù)點(diǎn) int i=0; unsigned char data Temp[10]; unsigned char data dis_digit; unsigned char data first; int k=1,m=1,flag=0; //定義全局變量 void ser_uart(void); //函數(shù)聲明 void timer0(); //定時(shí)器的初始化,定時(shí)器1,模式2,波特率:9600,用于串行口。定時(shí)器0,模式1,用于數(shù)碼管的動(dòng)態(tài)掃描 void init() { TMOD=0X21; //初始化定時(shí)器0和1. TH1=0Xfd; TL1=0Xfd; TH0=0XFE; TL0=0X17; TR1=1; //TR0=1; SCON=0X50; PCON=0X00; //波特率沒有倍增 EA=1; ES=1; ET0=1; dis_digit=0xfe; } //主函數(shù) void main() { init(); while (1); } //串口中斷程序 void ser_uart(void) interrupt 4 //串行中斷服務(wù)程序 { if(RI) //判斷是接收中斷產(chǎn)生 { RI=0; if(SBUF==‘%’) { flag=1; while(flag==1) { Temp=SBUF; if(Temp!='#') { i++; break; } else { TR0=1; break;} } } /* else display(Temp); */ /* } if(TI) TI=0; } */ //判定有無小數(shù)點(diǎn)及顯示整數(shù)程序 /*void judge(unsigned char *data) { int j=0; for(j=0;j<=i;j++) { if{*(data+j)!='.'} ; else display(Temp); } } */ //定時(shí)器0中斷程序,負(fù)責(zé)數(shù)碼管的動(dòng)態(tài)掃描 /*void timer0() interrupt 1 { TH0=0XFE; TL0=0X17; P2=0XFF; //先關(guān)閉所有數(shù)碼管 if(k<i) { P0=non_dot[(Temp[k])-0x30]; k++; } else k=1; P2=dis_digit; if(m<i-1) { m++; dis_digit=_crol_(dis_digit,1); //位選通值左移,下次中斷時(shí)選通下一位數(shù)碼管 } else { m=1; dis_digit=0xfe; } } |