微控制器(一)51微控制器串列埠接收 傳送通訊

2021-10-06 23:09:40 字數 1117 閱讀 8217

這次做課設整體不太順利,因為學校的開發板真的是……一言難盡

這裡就選擇性的分享一點**方面,有據可循,不那麼玄學的問題。

只要開了中斷,一點要寫中斷函式,可以是

void

timer0

() interrupt 4

可以是這樣,先放乙個空函式,不會有什麼玄學問題

不信,嘿嘿?,你試試

這是個串列埠收發暫存器,教科書裡面稀奇的是,接收、傳送暫存器是兩個暫存器,分別是接收暫存器、傳送暫存器,不過兩個暫存器的名字是一樣的。可能你會疑問,他們不衝突矛盾??奇妙的是匯流排就是同時操作兩個的,但由於功能不同,就沒事了。比如接收,匯流排讓他們接收,但傳送暫存器不會接收,就沒事了,很巧妙。

這個初衷是個人性化的設計,減少一點暫存器 的數量,可以少記一點,但事實卻是讓初學者一頭霧水。

教科書裡面這個是稀奇的,實操中,硬體才是要命的,由於一些usb轉ttl晶元不能完全隔離兩邊的訊號,當使用主機usb口供電的時候,主機訊號就會越過轉換晶元影響串列埠的電平,導致串列埠資料錯誤。

這點很魔性,如果有人能告訴你這些,你要尊重他,因為這都是淚水和肝。

做課設,同學問我,為什麼資料 放進暫存器,就能直接傳送了,當時給他解釋,就是乙個投喂機制,像餵狗一樣,肉包子扔那就行了,他不傻。

回來之後,覺得是很奇怪,就查了查。因為有串列埠中斷啊。倒不是中斷就傳送了,是因為中斷裡面查詢判斷了暫存器的標誌位,對,就是標誌位,因為這個才會投喂傳送的。

原來肉包子扔那不行,還得餵給她。

#include

unsigned

char rxbuff =

0xff

;void

uart_init()

void putchar (

unsigned

char chr)

void

mode1()

return;}

void

main()

}void

timer1

(void

) interrupt 4

if( ti )

return

;}

上面是對串列埠方面的淺薄認識,還請指教!!!

51微控制器串列埠通訊

1 並行通訊 傳送方和接收方用多根資料線連線,多位資料同時傳送。傳輸線多,長距離傳輸時成本大。2 序列通訊 單根資料線傳送資料,逐位傳送。長距離傳送成本低,但控制相對複雜。序列通訊又可分為 非同步序列通訊和同步序列通訊。非同步序列通訊 所謂 非同步 指的是雙方裝置使用各自的時鐘,以字元為單位傳輸,採...

51微控制器 eeprom 串列埠

按照相應的編碼格式,對串列埠資料進行編碼,傳送至微控制器,微控制器對資料進行解析,寫入或者讀取eeprom,再返回資料至微控制器串列埠。讀取資料0x03 且只需要傳入3個16進製制數即可,寫入資料0x06,具體不超過255個資料,要想多寫入資料,可以將資料長度的值增加到兩個16進製制數,程式也需要相...

51微控制器

數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...