Re: [問題] PC 收 51 傳的0~255,有時會收到奇怪數字

看板ASM (組合語言)作者 (京都念慈庵,賈詡念費翔)時間12年前 (2013/04/09 15:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
※ 引述《cwl751005 (bb)》之銘言: : 改成這樣看會不會好點= = : #include "AT89X51.h" : /* : P2 讀取ADC : P1,3,0 預留輸出控制 : */ : unsigned char ucADC0804,QUERY,swap; : char code HEX[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39 : ,0x41,0x42,0x43,0x44,0x45,0x46}; : main() : { - IE=0x90; /* (中斷Enable)EA=1,(串列中斷)ES=1*/ : P2=0xFF; /* P2為讀取Port */ : SCON=0x70; /*Serial Port mode1*/ : TMOD=0x20; /*Timer mode1(Auto Load)*/ : TH1=0xFD; /*9600bps@11.0952MHz*/ : TR1=1; /*Timer1 啟動!*/ : QUERY=0; + IE=0x90; /* (中斷Enable)EA=1,(串列中斷)ES=1*/ : while(1) : { : ucADC0804=P2; EA = 0; : if(QUERY=='Q') : { : : swap=(ucADC0804>>4);//&0x0F; //取高4bit : : SBUF=HEX[swap]; //發射高4bit之ASCII : : while(!TI); //等待發射完畢 : : TI=0; //這個如果沒加,幾乎都送0出去 : : swap=ucADC0804&0x0F; //取低4bit : : SBUF=HEX[swap]; //發射低4bit之ASCII : : while(!TI); : : TI=0; //清除發射中斷旗標 : QUERY=0; : } EA = 1; : } : } : void serial_INT(void) interrupt 4 : { : if(RI) : { : QUERY=SBUF; : RI=0; //清除發射中斷旗標 : } : } 不知道你的project是否完成了? 也許是我雞婆~ 不過我會想這樣加~ 在傳輸過程中不希望RI發生 不確定能否解決你的問題 -- ╔═╮╔═╮╭═╮╭═╮╭═══╮ ║ ║╠╦╯╠═╣║ ╦║╭═╮║ ╚═╯║╰╮║ ║╰═╯║║╰╯║ ╭══╮╔══╮ ╭═══════╯ ╰═══╯╰══╯ ║ ║║ ║ ║════╮ ╰╯ ╰╯ ╰══╯║ ║ ╰════╯ 神龍見首不見尾... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.169.49
文章代碼(AID): #1HOyRAIx (ASM)
討論串 (同標題文章)
文章代碼(AID): #1HOyRAIx (ASM)