借助單片機(jī)外部中斷實(shí)現(xiàn)與微機(jī)通信
MCS-51系列單片機(jī)只有一個(gè)全雙工串行口,它既可以實(shí)現(xiàn)串行異步通信,也可以作為同步移位寄存器使用,但不能同時(shí)實(shí)現(xiàn)兩者功能。實(shí)際系統(tǒng)中,單片機(jī)的并行口常作為單片機(jī)與其他器件的快速交換數(shù)據(jù)口,而其串行口則用來(lái)作為同步移位寄存器發(fā)出數(shù)據(jù)。例如以下電路圖中,8951單片機(jī)的串行口與串入并出移位寄存器74LS164配合,控制數(shù)碼管的顯示數(shù)據(jù)。顯然,如果此時(shí)使微機(jī)與單片機(jī)系統(tǒng)進(jìn)行串行通信,用以前普遍采用的串行口發(fā)生中斷是不行的,因?yàn)榇藭r(shí)單片機(jī)的串行口工作于方式是方式0,而通信則要使其工作于方式1、2或是方式3。為解決此問(wèn)題,筆者設(shè)計(jì)了以下電路和軟件。
本文引用地址:http://m.butianyuan.cn/article/172072.htm1、硬件電路
微機(jī)的RS232通信口經(jīng)電平轉(zhuǎn)換器GD75189與8951單片機(jī)的P3.2和 RXD連接,單片機(jī)的TXD經(jīng)GD75188與微機(jī)的串行口連接,這里兩個(gè)電平轉(zhuǎn)換器負(fù)責(zé)把電信號(hào)轉(zhuǎn)換為單片機(jī)和微機(jī)所需要的電平。從電路看出,我們通過(guò)單片機(jī)的外部中斷0來(lái)響應(yīng)微機(jī)的串行通信申請(qǐng),即單片機(jī)系統(tǒng)在串行口作為同步寄存器使用時(shí),依然能及時(shí)捕捉到微機(jī)發(fā)出的信號(hào),然后準(zhǔn)備就緒開(kāi)始與微機(jī)進(jìn)行串行通信。單片機(jī)與微機(jī)串行口接口電路如圖1所示。
2、軟件編程
在單片機(jī)初始化過(guò)程當(dāng)中,將外部中斷0設(shè)為優(yōu)先級(jí),串行口設(shè)為工作方式0,用定時(shí)器控制串行口定時(shí)發(fā)出一組數(shù)據(jù),經(jīng)74LS164轉(zhuǎn)換為并行數(shù)據(jù),點(diǎn)亮數(shù)碼管。若在此過(guò)程中微機(jī)串行口發(fā)出數(shù)據(jù),則引起單片機(jī)外部中斷0的發(fā)生。單片機(jī)在執(zhí)行中斷服務(wù)子程序時(shí),首先關(guān)閉外部中斷0,以免在通信時(shí)又誤引起中斷,再改變串行口工作方式,使其工作于微機(jī)同樣的方式1,并把波特率設(shè)定成與微機(jī)波特率一致,然后與微機(jī)進(jìn)行通信。單片機(jī)的外部中斷0在它檢測(cè)到P3.2口是低電平時(shí)有效,所以先要使微機(jī)發(fā)出的數(shù)據(jù)中有一位為0,例如88H。在微機(jī)與單片機(jī)通信完畢后一定要把單片機(jī)串行口重新設(shè)置為工作方式0,以便它重新作為同步移位寄存器使用,而且要開(kāi)放外部中斷0,為下一次通信作準(zhǔn)備。這里,因上位機(jī)微機(jī)的通信程序與下位機(jī)類似,所以只給出作為下位機(jī)的單片機(jī)外部中斷0 服務(wù)子程序流程圖(圖2)。
3、總結(jié)
利用這種方法,在不需要增加任何硬件的基礎(chǔ)上,稍微改變連線,用軟件相配合實(shí)現(xiàn)了微機(jī)與單片機(jī)的串行通信,而絲毫沒(méi)有影響單片機(jī)串行口作為同步移位寄存器使用,實(shí)現(xiàn)了一舉兩得,筆者已將此方法成功應(yīng)用到以8951單片機(jī)為核心的儀器中。這種方法充分利用了軟件的靈活性,不僅適用于51系列單片機(jī),同樣可以推廣到其他單片機(jī)系統(tǒng)中。
參考文獻(xiàn):
[1] 李廣弟.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,1994.
[2] 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1990.
評(píng)論