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

作者: drag (京都念慈庵,賈詡念費翔)   2013-04-09 15:44:07
※ 引述《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發生
不確定能否解決你的問題

Links booklink

Contact Us: admin [ a t ] ucptt.com