作者deo2000 (800IM)
看板ASM
標題[問題] PC 收不到 51 送出的字串
時間Wed Jan 9 01:50:17 2013
經由P2的LED得知,P2的值確實有在變化
但是PC都收不到任何字串 (用超級終端機看)
#include "AT89X51.h"
/*
P2 讀取ADC
P1,2,3 預留輸出控制
*/
unsigned char ucADC0804;
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; /*
[email protected]*/
TR1=1; /*Timer1 啟動!*/
ucADC0804=P2;
TI=1; /*發射中斷啟動!*/
while(1)
{
//如果ADC0804輸出的值有變化
if(P2!=ucADC0804){
ucADC0804=P2;
TI=1;
}
}
}
void serial_INT(void) interrupt 4
{
if(TI)
{
TI=0;/*清除*/
SBUF=ucADC0804;
while(!TI); /*等待發射完畢*/
TI=0;
P1=~(P1&=0x01); /*中斷觀測用*/
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.165.222
1F:→ deo2000:發現是RxTx接反,可是接對後還是一堆亂碼 01/09 02:26
2F:→ deo2000:找到每次傳4bit的方法,但還是無法理解為何這樣不行? 01/09 06:05
3F:→ hongsiangfu:你直接傳回P2的值是亂碼很正常 01/09 09:48
4F:→ hongsiangfu:超級終端機接到資料後會對應ascii code顯示對應字元 01/09 09:49
5F:推 hongsiangfu:sorry 沒看到下面那篇 01/09 09:51
6F:→ deo2000:感謝! 下面那篇是我書上方法改,我還是想知道這篇的原因 01/09 12:46
7F:推 cwl751005:直接在主程式打SBUF=ucADC0804就會傳啦 01/09 17:54