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