8051 rs232 輸出 |
尚未結案
|
lincf
一般會員 發表:1 回覆:1 積分:0 註冊:2010-11-15 發送簡訊給我 |
各位先進好,小弟有個小問題,
以下是小弟寫個程式碼,小弟主要是透過P2_1 ON 觸發 RS232輸出, 但接到電腦輸出的結果如同我要的printf的內容, 當我接到投影機的時候,卻是無法工作?請問一下是為什麼呢? 還有我要有啟動的電源指示燈,應該怎麼寫會比較好呢? [code cpp] #include #include void rs_232(); void power_on(); void power_off(); sbit P_ON=P2^0; sbit P_OFF=P2^1; sbit PLED=P1^0; void main() { P_ON=1; PLED=1; rs_232(); while(1) if(P_ON==0) { PLED=0; power_on(); } if((P_ON&&PLED)==0) { PLED=1; power_off(); } } void rs_232(void) { PCON=0x80; SCON=0x50; // 8 bit UART(Mode1) TMOD=0x20; // Timer1(Mode2),使用內部計時器 TH1=0xfd; // TH1=TL1 = 256 - (振盪器頻率 / (32 * 12 * 鮑率)) TR1=1; // 啟動Timer1 TI=1; // 使用 puts, printf, ... 前一定要先設為"1" SBUF=' ';// 傳送字元"printf"給PC } void power_on(void) { printf("BEEF100500C6FF111101000100\r"); } void power_off(void) { printf("BEEF030600DCDB690000000000\r"); } [/code] |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
[code cpp] void main() { P_ON=1; PLED=1; rs_232(); while(1) { //<-- 這個大括號你沒加 if (P_ON==0) { PLED=0; power_on(); } if ( (P_ON&&PLED) ==0 ) // <--這行你確定是這樣嗎? //if (P_OFF==0 && PLED==0 && P_ON==1) // <-- 應該改成這樣才對吧! { PLED=1; power_off(); } } } void power_on(void) { printf("BEEF100500C6FF111101000100\r"); // <-- 這是字元 //printf(0xBE,0xEF,0x10,0x05,0x00,0xC6,0xFF,0x11,0x11,0x01,0x00,0x01,0x00,"\r"); // <-- 應該是這樣才對吧! } void power_off(void) { printf("BEEF030600DCDB690000000000\r"); //printf(0xBE,0xEF,0x03,0x06,0x00,0xDC,0xDB,0x69,0x00,0x00,0x00,0x00,0x00,"\r"); <-- 同上 } [/code] |
lincf
一般會員 發表:1 回覆:1 積分:0 註冊:2010-11-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |