線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1541
推到 Plurk!
推到 Facebook!

關於8051的uart中的ISR

尚未結案
nylon7
一般會員


發表:1
回覆:0
積分:0
註冊:2010-10-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-10-30 17:20:02 IP:140.125.xxx.xxx 訂閱
 我的問題在於不管傳送或接收都應該會進入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]
系統時間:2024-04-26 19:33:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!