[問題] 請問使用C#寫的RS232程式寫入8051SoC後再讀出的結果不一致?

看板ASM (組合語言)作者 (芒果義式低脂冰淇淋)時間14年前 (2011/05/04 00:27), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/1
8051 code(SoC用的是STC) /******************************************************************/ /* Uart中斷程序 */ /******************************************************************/ void UART_SER (void) interrupt 4 //Uart中斷服務程序 { unsigned char Temp; //定義臨時變量 unsigned char i; if(RI) //判斷是接收中斷產生 { RI=0; //標誌位清零 Temp=SBUF; //讀入緩沖區的值 new_word[i]=Temp; i++; if(i==16) //連續接收16個字符信息 { i=0; SetFlag=1; //接收完成標誌位置1 } SBUF=Temp; //把接收到的值再發回電腦端 } if(TI) //如果是發送標誌位,清零 TI=0; } C# code /*寫入按鈕事件*/ private void btn_write_Click(object sender, EventArgs e) { try { /*寫入資料*/ byte[] RSdata = new byte[16] { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }; serialPort1.Write(RSdata,0,16); } catch (Exception ex) { MessageBox.Show(ex.Message, "錯誤訊息", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /*讀取按鈕事件*/ private void btn_read_Click(object sender, EventArgs e) { /*讀取輸入緩衝區資料*/ Byte[] RSdata =new Byte[16]; serialPort1.Read(RSdata,0,16); string s=""; for (int i = 0; i < 16; i++) s += ":0x" + RSdata[i].ToString("X2"); txt_read.Text = s; /*顯示目前輸入緩衝區的剩餘位元組數*/ lbl_inputlen.Text = serialPort1.BytesToRead.ToString(); } 執行結果分別如下: 第1次 0xA0:0xB1:0xB2:0xB3:0xB4:0xB5:0xB6:0xB7: 0xB8:0xB9:0xC1:0xC2:0xC3:0xC4:0xC5:0xC6 第2次 0xF0:0xB1:0xB2:0xB3:0xB4:0xB5:0xA6:0xB7: 0xB8:0xB9:0xC1:0xC2:0xC3:0xC4:0xC5:0xC6 第3次 0xB0:0xB1:0xB2:0xB3:0xB4:0xB5:0xA6:0xB7: 0xB8:0xB9:0xC1:0xC2:0xC3:0xC4:0xC5:0xC6 都非寫入的 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 請問各位高手 有誰知道原因嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.0.180

05/04 00:47, , 1F
are sure your buad rate and data width and stop bit
05/04 00:47, 1F

05/04 00:47, , 2F
all are crrorect ?
05/04 00:47, 2F

05/04 00:51, , 3F
看起來很像用7BIT收8BIT DATA (Bit7 永遠等於1)
05/04 00:51, 3F

05/04 01:41, , 4F
在中斷裡面那個i要改成全域或static
05/04 01:41, 4F

05/04 01:41, , 5F
不過主要的原因可能是一樓說的 (資料SHIFT後長得蠻像的
05/04 01:41, 5F

07/01 01:58, , 6F
糾個錯 SHOULD YOUR ... ALL ARE CORRECT 不要兩次動詞跟錯
07/01 01:58, 6F
文章代碼(AID): #1Dm2pOps (ASM)
文章代碼(AID): #1Dm2pOps (ASM)