[問題] c# RS232 控制8051上的燈

看板C_Sharp (C#)作者 (day)時間10年前 (2014/09/22 18:08), 編輯推噓2(206)
留言8則, 1人參與, 最新討論串1/1
我是想用C# serialPort 去控制8051上的LED,但傳出去都沒反應 求解! C#程式 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { serialPort1.PortName = "COM1"; serialPort1.BaudRate = 4800; serialPort1.Open(); byte[] xx = new byte[]{0x30} ; serialPort1.Write(xx, 0, 1); } } 8051端程式 #include <reg51.h> // 包含reg51.h檔 #define LED P1 // 定義LED位置 #define DIPSW P0 // 定義指撥開關位置 //============ 函數 ========== void delay1ms(int); // 宣告延遲函數 unsigned char inst=0; // 宣告變數 //======= 主程式 ======== main() // 主程式開始 { LED=DIPSW=0xFF; // 關閉LED,設定DIPSW為輸入埠 EA=ES=1; // 啟用串列埠中斷 SCON=0x50; // 設定為mode 1 TMOD |= 0x20; // 設定採mode 2 PCON |= 0x80; // 將SMOD設定為1 TH1=TL1=0xF3; // 4800bps (12MHz) TR1=1; // 啟動Timer 1 SBUF=DIPSW; // 傳出指撥開關狀態 while(1) { switch (inst) { case 0: { LED=0xFF; break; } case 0x30: { LED=0; break; } } } } //============ 傳送字元函數 ========== void Serial_INT(void) interrupt 4 { if (TI) { TI=0; // 清除TI旗標 SBUF = DIPSW; // 再傳出指撥開關狀態 } if(RI) { RI=0; // 清除RI旗標 inst = SBUF; // 接收命令 } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.124.44.65 ※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1411380524.A.E0D.html

09/22 19:09, , 1F
第一 先上網載comport通訊程式,先別自己寫
09/22 19:09, 1F

09/22 19:10, , 2F
第二 確定rs232三隻接腳是否接對?
09/22 19:10, 2F

09/22 19:12, , 3F
51RX 接comport TX, 51TX 接 comport RX ,51地 接 com
09/22 19:12, 3F

09/22 19:15, , 4F
第三 看看是不是傳出資料跟接收資料的格式不一樣?
09/22 19:15, 4F

09/22 19:16, , 5F
例如要 Encoding ASCII...之類的
09/22 19:16, 5F

09/22 19:17, , 6F
第四 確認韌體是否正確? 先用外部硬體中斷看看可不可
09/22 19:17, 6F

09/22 19:18, , 7F
以動?
09/22 19:18, 7F

09/22 19:30, , 8F
更正第二項 51地 接 comport 地
09/22 19:30, 8F
文章代碼(AID): #1K7_KiuD (C_Sharp)
文章代碼(AID): #1K7_KiuD (C_Sharp)