51微控制器串列埠通訊問題 微控制器發資料到電腦上時第四位資料

2021-04-12 06:01:53 字數 2324 閱讀 1869

1樓:

你這裡的難點在於來"只傳送一次",可以自定義一個標誌變數初始為0,當p1.1=0時且標誌為0,向串列埠傳送一個資料,並置該標誌為1,即使p1.1依然為0也不會一直髮送;當檢測到p1.

1=1時,置標誌為0,以便下次再觸發。其他依此類推。

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

2樓:

先解釋一下現象:

(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根線沒有分別對應上。

3樓:

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

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

4樓:匿名使用者

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

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

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

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

5樓:

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

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

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

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

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

6樓:

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

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

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

while(!ti);

ti = 0;}

微控制器與微控制器之間串列埠通訊需要幾個MAX232晶片

1個微控制器與1臺dupc用一個zhimax232就可以了。因為max232是可以雙向dao電平轉內換的。並且每容方向各有2路。ttl 轉232再轉ttl。結果同微控制器的rxtx交叉直連是沒什麼根本性的區別,唯一的好處是 兩個微控制器間可以遠距離的通訊了。兩個微控制器能不能不通過兩個max232直...

求51微控制器與pc機串列埠通訊硬體專家

1。串列埠bairs232連線是否有問題,9 芯接外掛 不會分壓,可以看看你的原理圖嗎 1 單來片機上需要焊max232嗎?出來串列埠自轉usb線用這個可以麼?如果你用的是你圖中的線,那就需要有一個max232晶片。usb轉串列埠線的作用是將usb協議轉換成rs232協議 即串列埠協議 rs232協...

51微控制器裡TMOD設定問題,51微控制器裡TMOD設定問題

可以理解為 同時設定了兩個定時器的工作方式。但要看t1是否有啟動,如果系統中沒有用到t1,沒有啟動,設定了也沒關係。如果兩個都需要使用,需要分別設定,標準的做法是tmod 0x01,這樣就只設定了 t0,t1保留原來的狀態。tmod是8位暫存器,高4 位和低4位分別控制定時器1和0 用或操作的話就是...