1樓:螞蟻叼骨頭
怎麼判斷它發個不停的??不會只看你的p1口輸出吧!!如果真那樣的話,你看到的並非是實的(也就是說不一定是有資料發過來,而是你程式在不停的輪循的輸出p1口的結果,),在程式裡最好不直接用p1=sbuf,加多個引數做橋梁好點,sbuf在跟你的串列埠在變,畢竟不敢保證你的串列埠不受干擾,並且你所用的是串列埠方式1。
2樓:做而論道
當收到,乙個位元組後,進入中斷,使得 flag=1;;
flag=1; ,將導致主函式傳送乙個位元組;
同時 flag=0;
並且還關閉了串列埠中斷,使得 flag 不會再變成1。
那麼,以後的就不會再傳送了。
另外,可以和下面的交流一下:
3樓:匿名使用者
程式問題,不要用 if 語句,if 語句只做乙個判斷,條件成立才會執行,有時候沒傳送或接收完,即 ti 或 ri 沒置1的情況下那它就跳過了。在a=sbuf;其後要等待接受完成,即 while(!ri);其後把ri清零,即 ri=0;
在sbuf=a;其後要等待傳送完成,即 while(!ti);其後把 ti 清零,即 ti=0;
還有p1=sbuf;a=sbuf; 這兩句可以先寫a=sbuf;然後p1=a; 。中斷函式可以寫成這樣:
void ser() interrupt 4
4樓:匿名使用者
你是不是 改改 串列埠除錯助手 資料顯示模式,文字 改 為二進位制 試試看
兩個51微控制器485串列埠通訊接收資料出錯原因?大概傳送五次會有一次全部接收正確。程式如下
1 有人在傳送資料之前,先關閉了串列埠中斷!等待傳送完畢後,再開啟串列埠中斷。這樣,在傳送資料的等待期間內,如果收到了資料,將不能進入中斷函式,也就不會儲存的這個新收到的資料。這種處理方法,就會遺漏收到的資料。2 有人在傳送資料之前,並沒有關閉串列埠中斷,當 ti 1 時,是可以進入中斷程式的。但是...
51微控制器串列埠通訊波特率問題,51微控制器串列埠波特率問題
anyway中國 usb轉串列埠上的晶振12mhz,對波特率的準確度有一定影響。但是,微控制器通訊的波特率設定,還是得採用與微控制器相連的11.0582mhz晶振進行計算。11.0592mhz設定的的大部分波特率理論誤差為零,但是,串列埠轉usb會有為了減小誤位元速率,可按照12mhz晶振波特率設定...
微控制器串列埠通訊問題,51微控制器串列埠通訊問題
修者世界 p3 0xff的作用其實很簡單,就是為了更好的完成 讀 修改 寫 這個過程,其實對於p3口是沒有必要的,對於p0口這樣做是應該的。 革玉花戚雪 微控制器串列埠通訊的問題,其實你只有乙個問題,就是 p0 0xf0 s2buf 0xfc p0 s2buf 為什麼這裡p0是0x00 你覺得p0應...