關於8051的uart中的ISR |
尚未結案
|
nylon7
一般會員 發表:1 回覆:0 積分:0 註冊:2010-10-30 發送簡訊給我 |
我的問題在於不管傳送或接收都應該會進入ISR才對
可是我在ISR中試著把燈點亮 在我做了open跟close的動作後卻沒有看到燈被點亮 為什麼沒有進去ISR呢? 以上
[code cpp] #include #include #include #include void delay(unsigned int dly); int mycmd(char *buffer); char value[20]; sbit P1_0=0X90; sbit P1_1=0X91; int i=0; int f=1; int mycmd(char *buffer); void main(void){ SCON = 0x50; // 8 bit UART (mode 1) TMOD = 0x20; // T1 mode 2 PCON = 0x00; // TH1 = 247; // 256 - 9 = 247 TR1 = 1; 啟動 Timer 1 IE while(1){ if(RI==1){ value[i]=SBUF; //RI=0; f=1; if(value[i]==0x0d){ SBUF=0x0a; //RX SBUF delay(60); //RI=0; SBUF=0x0d; switch(mycmd(value)){ case 1: //P1_0=0; //P1_1=0; puts("open OK!"); break; case 2: //P1_0=1; //P1_1=1; puts("close OK!"); break; default: puts("error"); } } if(f==1){ SBUF=value[i]; i ; RI=0; } else{ i=0; RI=0; } } } } void SCON_int() interrupt 4{ if(RI==1){ P1_1=0; RI=0; } if(TI==1){ P1_0=0; TI=0; } } int mycmd(char *buffer) { f=0; if(strncmp(buffer,"open",4)==0)return 1; if(strncmp(buffer,"close",5)==0)return 2; return 0; } void delay(unsigned int dly){ int count; while(dly!=0){ count=120; while(count>0) count--; dly--; } } [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |