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

看板ASM (組合語言)作者 (bb)時間12年前 (2013/01/14 11:35), 編輯推噓3(306)
留言9則, 2人參與, 最新討論串3/5 (看更多)
改成這樣看會不會好點= = #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; while(1) { ucADC0804=P2; 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; } } } void serial_INT(void) interrupt 4 { if(RI) { QUERY=SBUF; RI=0; //清除發射中斷旗標 } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.141.154

01/14 12:44, , 1F
好,我試看看先存下SBUF且在main中計算的方式
01/14 12:44, 1F

01/14 12:45, , 2F
你可以不用這麼費力地幫我打code啦~
01/14 12:45, 2F

01/14 13:22, , 3F
這個做法收到空字串機率有稍微低不明顯,但是但是收到
01/14 13:22, 3F

01/14 13:23, , 4F
收到"DEDD""F4F5"等多傳一次的字串機率高很多
01/14 13:23, 4F

01/14 13:24, , 5F
收到空字串機會會集中在波形相對極值處! 似乎在透露甚麼?
01/14 13:24, 5F

01/14 13:28, , 6F
01/14 13:28, 6F

01/14 14:21, , 7F
在進入判斷QUERY=='Q'函數後先關閉中斷看看,傳完再開
01/14 14:21, 7F

01/14 14:23, , 8F
其實也沒費力,只是把你的CODE做剪貼:-P
01/14 14:23, 8F

01/14 14:44, , 9F
或是發送間隔先調大一點,沒問題再慢慢改
01/14 14:44, 9F
文章代碼(AID): #1GytpnYm (ASM)
討論串 (同標題文章)
文章代碼(AID): #1GytpnYm (ASM)