Re: [問題] 如何把暫存器SBUF的資料讀出來?(keil C)

看板C_and_CPP (C/C++)作者 (饅頭)時間12年前 (2013/12/23 20:21), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《billy00685 (milano)》之銘言: : code char string1[]={ "Kick ass ! " }; : code char string2[]={ "I am a LCD." }; : main() : { : char buf[10]; : while(1) : { : RI=0; : while(RI==0); : if(RI==1) RI 是用來收資料的吧 你這裡的意思是指要等待收到某個字元後才做後面的事嗎? 不然你是要送東西出去, 不是應該要檢查 TI 嗎? : { : SBUF=buf; 如果你是如上面所說的, 只是要等待收到一個字元才開始做事 那應該是從 SBUF 讀出(xxx = SBUF)而不是寫入 (SBUF = xxx); 如果不是, 你是真的要送資料出去 buf 到這時還沒有給值 你等於把一個不知道是多少的值(事實上是陣列的位址取byte)寫給 SBUF 另外 buf 是一個陣列 SBUF = buf 在這裡也不太對 至少也該是 SBUF = buf[0] 才符合定義 : position(1,1); : display(buf); buf 到此時還是沒有給它值, 所以即使有印東西也應該只是亂碼 : position(2,1); : display(string2); 這行就直接給 string2 了, (而不是給未給值的buf), 所以你說只看到第二行是合理的 因為這裡有給正確的字串 但第一個 display() 你給的是一個未給值的 buf : void wrdata(char d) : { : RS=1; : RW=0; : E=0; : delayms(1); : E=1; : DB=d; : delayms(1); : E=0; : delayms(1); : } 這些 RS/RW/E 我不熟, 不過既然你 string2 可以正常顯示 表示 wrdata() 是可以正確運作的, 那就表示你的資料不是透過 RS232 出去的? 因為 SBUF 在你的 code 裡並沒有被正確使用 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.80.67.18 ※ 編輯: MetalChao 來自: 210.80.67.18 (12/23 20:23)
文章代碼(AID): #1Ik2hGpL (C_and_CPP)
文章代碼(AID): #1Ik2hGpL (C_and_CPP)