51單片機(jī)串口程序C語言版
圖1 (該圖來自51單片機(jī)技術(shù)文檔)
下面來逐個(gè)介紹個(gè)寄存器。
SCON寄存器的SM1,SM2主要用來設(shè)置串行口的工作方式,具體對應(yīng)關(guān)系見圖2,REN:串行口接受使能位,當(dāng)單片機(jī)要接受數(shù)據(jù)時(shí)該位應(yīng)該置一,TB8:發(fā)送數(shù)據(jù)的第九位。在方式2或者方式3中TB8為發(fā)送的第九位數(shù)據(jù)。該位不是很常用,具體介紹請查看51單片機(jī)的技術(shù)文檔,這里不多做介紹。TI:發(fā)送中斷標(biāo)志,由硬件在方式0串行發(fā)送第8位結(jié)束時(shí)置位,或在其它方式串行發(fā)送停止位的開始時(shí)置位,必須由軟件清零。RI:接受中斷標(biāo)志,由硬件由硬件在方式0串行發(fā)送第8位結(jié)束時(shí)置位,或在其它方式串行發(fā)送停止位的中間時(shí)置位,必須由軟件清零。
在這里需要提醒的是,大家在看技術(shù)文檔是一定要注意那些必須由軟件清零的標(biāo)志位,在寫程序時(shí)一定要記得清零。
圖2(本圖來自51單片機(jī)技術(shù)文檔)
SBUF寄存器:(為了方便就直接截圖說明了)
PCON寄存器D7位SMOD是串行波特率倍增位,SMOD為一時(shí),串行口在工作方式1,方式2,方式3中波特率加倍,復(fù)位時(shí),SMOD=0.
寄存器IPH,IPSADEN,SADDR不是很常用,在這里就不做介紹,我下面的程序中也沒有用到,感興趣的可以自己查閱一下技術(shù)文檔。
接下來開始調(diào)試串口的方法和步驟。
1.STC—ISP下載軟件自帶串口調(diào)試功能。下面是軟件界面
2.在串口調(diào)試之前還必須知道自己學(xué)習(xí)板接的是電腦的哪個(gè)端口,查看端口的方法如下:
右鍵單擊桌面上的:我的電腦—設(shè)備管理器,如果學(xué)習(xí)板通過下載線連接到了電腦會(huì)顯示如下界面:
從端口選項(xiàng)中可以看到我連接的是COM3.
3接下來的任務(wù)就是不程序下載到單片機(jī)中開始調(diào)試了(程序我會(huì)在下面給出,先把調(diào)試步驟介紹完)
程序下載完畢之后單擊STC-ISP下載軟件中的:串口助手按鈕,就會(huì)出現(xiàn)如下界面:
然后在點(diǎn)擊打開串口按鈕,上圖中顯示的是:關(guān)閉串口,是因?yàn)槲业拇谝呀?jīng)打開了,接下來在單字符串發(fā)送區(qū),輸入要傳送的數(shù)據(jù),例如傳送:77,選擇十六進(jìn)制發(fā)送,觀察,學(xué)習(xí)班上LED的亮滅情況,和數(shù)據(jù)接區(qū)的反應(yīng)。如下圖:
需要注意的是必須要將COM(即端口號),比特率,校驗(yàn)位,數(shù)據(jù)位,停止位,設(shè)置正確否則會(huì)顯示亂碼。
可以觀察到的現(xiàn)象是:led的第八個(gè)和第四個(gè)點(diǎn)亮了,原因也很簡單,因?yàn)榘l(fā)送的數(shù)據(jù)是77,選擇的是十六進(jìn)制發(fā)送,即0111 0111,可以看到第8位和第四位是零,所以LED點(diǎn)亮了。接受單口顯示data recieve ok,說明單片機(jī)數(shù)據(jù)接受成功。
最后也是最重要的就是編寫程序了:下面是我的調(diào)試程序,希望對大家能有幫助。
(因?yàn)槌绦蛘迟N過來的時(shí)候注釋會(huì)顯示亂碼,沒辦法只好使用截圖,請大家將就著看一下,還有需要提醒的是程序的第57,58和第29行在截圖時(shí)重復(fù)了請大家仔細(xì)對著行標(biāo)號看就很清楚了)
程序的注釋寫的很清楚,我在這里就不重復(fù)解釋了,不懂的請大家仔細(xì)看注釋。
評論