PIC單片機(jī)與PC機(jī)異步串行通信的設(shè)計(jì)
單片機(jī)發(fā)送數(shù)據(jù)程序框圖
用RB5引腳作為發(fā)送引腳,單片機(jī)發(fā)送數(shù)據(jù)程序框圖如圖4所示。當(dāng)有數(shù)據(jù)要從單片機(jī)發(fā)往PC機(jī)時(shí),單片機(jī)調(diào)用發(fā)送子程序。在發(fā)送子程序中,首先設(shè)置發(fā)送計(jì)數(shù)器內(nèi)容為8,然后發(fā)送起始位,起始位應(yīng)持續(xù)104μs。因此要調(diào)用延時(shí)子程序,延時(shí)子程序執(zhí)行完后,RB5上的信號(hào)并未立刻變成第一位數(shù)據(jù)的值,這是因?yàn)檫€要執(zhí)行幾條指令,如右移TRS_R、置位等RB5上的信號(hào)才會(huì)變化。假設(shè)延時(shí)104μs,那么加上幾條指令的執(zhí)行時(shí)間,起始位就比104μs寬了。因此,延時(shí)子程序少于104μs,根據(jù)具體的程序定為97μs。然后,右移發(fā)送數(shù)據(jù)寄存器TRS_R,將其最低位即要發(fā)送的數(shù)據(jù)位移入C中,再根據(jù)C中的內(nèi)容將RB5清零或置1,然后將發(fā)送計(jì)數(shù)器內(nèi)容減1,并判斷其是否為0。若為1,則說(shuō)明未發(fā)送完畢,繼續(xù)發(fā)送;否則,發(fā)送停止位。最后,退出發(fā)送子程序。
圖4 單片機(jī)發(fā)送數(shù)據(jù)程序框圖
VB6.0提供了串行通訊MSComm(電話盒)控件來(lái)為應(yīng)用程序提供串行通信,它將串口設(shè)備當(dāng)作一個(gè)目標(biāo)封裝起來(lái),容易操作,編程很方便,其良好的用戶界面、簡(jiǎn)單方便的串行通信和實(shí)用性強(qiáng)的優(yōu)點(diǎn),無(wú)需借用其他語(yǔ)言就可以開(kāi)發(fā)出優(yōu)秀的通信軟件,因而PC機(jī)軟件采用VB6.0語(yǔ)言編寫(xiě)。
MSComm控件的調(diào)出及其主要屬性如下。
(1)MSComm控件的調(diào)出
VB6.0的MSComm控件并不會(huì)主動(dòng)出現(xiàn)在工具箱中,當(dāng)需要它時(shí),讓它出現(xiàn)在工具箱中的步驟如下:
①選擇菜單上的“工程”;
②在“工程”菜單中選擇“部件”;
③出現(xiàn)對(duì)話框后,在可勾選的項(xiàng)目中勾選Microsoft Comm Contro l6.0;
④按下“確定”按鈕,即可在工具箱中見(jiàn)到“電話盒”的圖標(biāo),就可以將此控件加載進(jìn)行串行通信。
評(píng)論