pc機與微控制器串列埠通訊問題利用串列埠通訊助手將字串發給微控制器微控制器返回字串到串列埠通訊助手

2021-06-25 02:57:51 字數 4533 閱讀 9214

1樓:匿名使用者

問題出在你傳送時關掉中斷,因為丟掉了資料造成的,解決的辦法是:延時一段時間等待接收完畢後再傳送,比如檢測到有接收資料後,延時10毫秒,之後再傳送回pc。

2樓:掃地走人

給你指出幾處明顯的錯誤。

1.resv沒有最大值的限定,這樣你的程式在執行的時候ch[resv]會指向不明位址,因為ch最大為10個位元組。

2.某種程度上可以認為你的串列埠接收程式沒有錯誤,但是你的串列埠接收程式是每次接收到乙個位元組就設定收到資料標誌的,所以你傳送資料應該每次傳送乙個位元組。而你每次傳送乙個字串,顯然和你微控制器上寫的程式不符,所以會產生不明錯誤。

3.可能你想要的是每次傳送多個位元組,也就是乙個字串,然後將這個字串一起傳送到pc上。那你應該在串列埠中斷裡面設定乙個判斷,也就是說,中斷裡面判斷到上位機傳送的資料結束後,微控制器的串列埠中斷程式才設定標誌位,然後根據標誌位和接收到資料到數量,把所有的資料一次性傳送給pc。

4.指出你出現異常的原因。因為串列埠在接收到1個位元組後,resv=1,也就是ch[1]='h',這個時候標誌位被設定,程式進入傳送程式,響應的sbuf=a,將h傳送出去。

因為51微控制器僅有乙個串列埠快取暫存器,這樣傳送的時候是沒有辦法接收的,而pc機不知道,還是在傳送,也許這樣導致的錯誤。

3樓:匿名使用者

pc傳送是乙個字串連續傳送的,微控制器在收到第乙個字元時,就進入中斷,同時置標誌。

而你在主程式一檢測到標誌,立即關中斷,接收自然停止了。

解決方法:1. 要同時收發的話,可以直接在中斷內區分ti與ri,並寫sbuf = a;2. 完全接收後再一併傳送。

用微控制器串列埠向電腦串列埠除錯助手傳送乙個字串,用c語言程式設計

4樓:計算機技術價值

#include

unsigned char flag,a;

void main()

*/if(flag==1)}}

void ser() interrupt 4把字元換一下就行了

5樓:匿名使用者

uchar idata systembuf[10]; //用於接收uchar rx=0; //接收資料條數

uchar code at="yes,it is";

void uart_init (void)void sendchar(uchar ch) //串列埠送乙個位元組void sendstring(uchar *p) //送字串}///////

void receive(void) interrupt 4 using 1 //中斷

ri=0;}}

///void main()

rx=0;}}

}//////////如有小錯誤,自己調下,手打的,大小寫可能不正常,這是標準程式,直接用,

6樓:匿名使用者

要這個幹嘛? 不過倒是很簡單

微控制器與pc機rs232串列埠通訊,我的程式在虛擬串列埠下沒問題,一到物理串列埠下,串列埠除錯助手就顯示亂碼

7樓:匿名使用者

硬體只要3根線就可以,傳送,接收,地。注意傳送要接對方的接收。根據您提到的情況,可能是地線沒有接對。

8樓:匿名使用者

晶振或波特率設定不一致?

懂微控制器者進:pc機向微控制器串列埠通訊問題,如何通過串列埠助手傳送一連串數字給微控制器,如0x01,0x02,0x03等

9樓:匿名使用者

你是想問微控制器多位元組 接收程式怎麼寫吧

以51微控制器為例

51微控制器串列埠接收緩衝區只內有乙個位元組,那麼我們容可以定義乙個陣列做為接收緩衝區,每接收到乙個位元組就把它儲存到陣列,通過時間間隔來檢測一幀資料是否發完,用定時器即可,在串列埠中斷裡 復位定時初值,當超過定時時間沒有接收到資料,則會觸發定時中斷,這時微控制器就可以處理接收到的資料了

10樓:萍水e相逢

串列埠助手?

你傳送 16進製製數吧

如果是 程式設計 如 vb 的話

定義 byte 型陣列內

賦值後 直接輸容出!

推薦看書

visual c++_turbo c串列埠通訊程式設計實踐visual_basic與_rs-232_序列通訊控制

11樓:匿名使用者

直接發就是了,串列埠的2、3、5,連線到微控制器對應的序列輸入收發口和地上,然後設定好波回特率,看你是答查詢還是中斷,把你的程式寫好了,然後發著試就行了,哦,你需要乙個232的電平轉換晶元,具體的介面自己可以上ic37上找,要學會自己找資料啊

在除錯rs232串列埠通訊時,微控制器往pc機上發資料,串列埠除錯助手可以接收,但是pc往微控制器發資料,接收不到。

12樓:

先解釋一下現象:

(1)max232的12腳即r1out連線到了微控制器的rx腳,因此使用探頭碰max232的12引腳時匯入了干擾訊號,所以接收到了亂的資料。同時,也證明了微控制器的接收電路和程式都沒有問題。

(2)板子上的地接到示波器上的地,pc才能收到資料,說明微控制器與pc沒有共地。同時,也證明了微控制器的傳送電路、程式和pc的接收電路都沒有問題。

原理:(1)pc的串列埠即rs232有9個引腳,與微控制器通訊時用到三個引腳,依次是2腳rx、3腳tx、5腳訊號gnd。

(2)而微控制器串列埠與此相反,2腳tx、3腳rx、5腳訊號gnd。

(3)只要把這三根線依次連線,2-2、3-3、5-5即可完成通訊。

(4)同時,根據實際通訊裝置介面不同,串列埠線也分多種,如直連線、交叉線、公母頭區別等。

故障排除流程:

(1)用萬用表等測量max232的14腳t1out與開發板序列介面的2腳tx、max232的13腳r1in與開發板序列介面的3腳rx、開發板序列介面的5腳與電源地是不是分別連線。如果連線沒問題,則進行下一步。

(2)用萬用表等測量串列埠線,pc端的2腳與微控制器端的2腳、pc端的3腳與微控制器端的3腳、pc端的5腳與微控制器端的5腳是不是分別對應,如果對應連線沒問題,則進行下一步。

(3)將pc上序列介面的2、3引腳短接。

(5)如果收不到,則說明pc的串列埠問題(排除串列埠工具沒有開錯串列埠或短接沒問題的情況下),換台電腦試下。能收到,則說明電腦端收發都沒問題,進行下一步。

(6)將串列埠線插到電腦上,開發板端的插頭不插而直接將2、3腳短接。再次用串列埠工具傳送,看是否能接收到,如果能接收到,則證明串列埠線沒問題,進行下一步。

(7)將串列埠線插到開發板得序列介面上,再使用串列埠工具收發。

(8)如果以上都不行,則自己做3根線,也可以使用杜邦線,將pc的tx與開發板的rx、pc的rx與開發板的tx、pc的訊號地與開發板的地分別相連。再用串列埠工具收發測試。

通過以上步驟,則可以逐步排查到問題的具體原因。不過,根據問題及之後的描述,最大的可能性是串列埠線用的不對,導致pc串列埠與開發板串列埠的3根線沒有分別對應上。

13樓:

如果用的是51微控制器,除了確認電纜沒問題外,

可以查一下又沒有可能不小心把對應rxd的sfr給賦值0了,查這個不一定要看程式,可以拔掉微控制器晶元看串列埠上接收引腳波形,不好拔的話,按住微控制器復位開關不鬆手也許也可以。

14樓:匿名使用者

微控制器往pc上能發說明串列埠本身應該沒有問題:如果是你自己做的板子最好檢視一下微控制器接收那一路是否有虛焊或有短路情況(直接使用現成的開發板無視)。

然後仔細檢視下程式是否有問題,再在程式中下斷點,就下在接收到資料的下一條**。然後發資料,如果斷住說明資料收到了,是後面處理點亮led的**的問題。如果沒有那就是沒接收到。

還沒有就再使用示波器,示波器要設定成低電平觸發模式,微控制器的串列埠(tx,rx)平時都是高電平,起始位是低電平,後面就是你設定的資料位(7位或8位),還有停止和校驗位根據你設定的情況。資料傳送都是瞬間完成的,所以一定要使用觸發模式,如果捕捉不到,說明pc端的傳送有問題,可以換個串列埠除錯工具,還不行換跟串列埠線,再不行換台電腦。一般到此問題肯定能解決了啊(除非中途有操作失誤的情況)

另外,一般使用串列埠還是使用中斷模式,可以節省系統資源,降低功耗!

15樓:

步驟一,串列埠除錯可以對你的微控制器

傳送嗎?如果可以,那就是你pc程式問題,如果不可以,那就是你微控制器問題,但是也可能是步驟二問題。

步驟二:傳送資料不對,一般常見的,比如16進製制傳送?還是acsii傳送?

步驟三:學會使用「串列埠監視」的小工具,監視資料報是否遵循協議。

步驟四:看你pc程式吧。用串列埠監視工具可以發現,可能你的pc程式都沒有包出來。

16樓:

1、微控制器串列埠控制在scon裡有個ren暫存器設定正確嗎?接收允許標誌。

2、串列埠中斷開了嗎?即使是查詢方式也要有ri狀態可以查詢才能接收。

3、微控制器串列埠接收最好還是用中斷方式,方便的多void isr_serial(void) interrupt 4sbuf= i; // echo

while(!ti);

ti = 0;}

微控制器與PC機的序列通訊問題,微控制器與微控制器之間如何進行序列通訊?

define com1 0 define data ready 0x0100 define true 1 define false 0 define settings 0xe0 0x00 0x00 0x03 void main a bioscom 2,0,com1 0x00ff printf a x...

微控制器串列埠通訊原理,微控制器串列埠通訊的原理?

1 51系列微控制器的串列埠有4個模式,可分別用作串並轉換 並串轉換 非同步序列通訊 2種模式 非同步序列通訊中,有1 8 1和1 8 1 1兩種幀格式,多機通訊是特殊的通訊方式。2 基本原理是兩組移位暫存器。將並行通訊轉換成序列通訊模式 傳送部分 或反之 接收部分 可全雙工執行。3 速度通過移位脈...

怎麼利用微控制器與pc進行實時通訊

如果硬體沒有問題的話,你的軟體程式可以拆分為以下考慮 1 串列埠通訊有問題嗎?你先保證pc串列埠除錯軟體發乙個資料,微控制器能準確收到。除錯辦法,微控制器接收到後,體現在io管腳上或指示燈指示。如pc傳送0x55,看看微控制器是不是收到了 2 微控制器的lcd液晶顯示 你用的是12864不知道控制器...