新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MCS-51單片機串口通信

        MCS-51單片機串口通信

        作者: 時間:2013-01-17 來源:網絡 收藏

        ;這是一個AT89C51實驗開發板向PC機的串口單向發送數據AF的演示程序
        ;采用MAX232專用芯片作RS232/TTL電平轉換.
        ;通訊波特率為4800KBPS,只要按下一次K1(就是P3.6引腳變成低電平)
        ;就發送一個16進制的AF字符

        ORG 0000H
        MOV SCON,#50H;設置成串口1方式
        MOV TMOD,#20H;波特率發生器T1工作在模式2上
        MOV PCON,#80H;波特率翻倍為2400x2=4800BPS
        MOV TH1,#0F3H;預置初值(按照波特率2400BPS預置初值)
        MOV TL1,#0F3H;預置初值(按照波特率2400BPS預置初值)
        SETB TR1;啟動定時器T1
        ;以上完成通訊初始化設置

        WRIT:JB P3.6,$;判斷K1是否按下,如果沒有按下就等待
        ACALL DELAY10;延時10毫秒消觸點抖動
        JB P3.6,WRIT;去除干擾信號
        JNB P3.6,$;等待按鍵松開

        MOV A,#0AFH;將16進制的字符AF發送到串口去
        MOV SBUF,A;將AF通過串口發送出去

        AJMP WRIT

        ;10毫秒延時子程序
        DELAY10:MOV R4,#20
        D2:MOV R5,#248
        DJNZ R5,$
        DJNZ R4,D2
        RET

        END

        ========================================

        一、發送和接收的過程如下:

        串行口的發送過程由指令MOV SBUF,A啟動,即CPU由一條寫發送緩沖器的指令把數據(字符)寫入串行口的發送緩沖器SBUF(發)中,再由硬件電路自動在字符的始、末加上起始位(低電平)、停止位(高電平)及其它控制位(如奇偶位等),然后在移位脈沖SHIFT的控制下,低位在前,高位在后,從TXD端(方式0除外)一位位地向外發送。

        串行口的接收與否受制于允許接收位REN的狀態,當REN被軟件置“1”后,允許接收器接收。接收端RXD一位位地接收數據,直到收到一個完整的字符數據后,控制電路進行最后一次移位,自動去掉啟始位,使接收中斷標志RI置“1”,并向CPU申請中斷。CPU響應中斷,用一條指令(MOV A,SBUF)把接收緩沖器SBUF(收)的內容讀入累加器。

        TI和RI是由硬件置位的,但需要用軟件復位。

        二、相關的寄存器
        1、SBUF是兩個在物理上獨立的接收、發送緩沖器,可同時發送、接收數據。兩個緩沖器只用一個字節地址99H,可通過指令對SBUF的讀寫來區別是對接收緩沖器的操作還是對發送緩沖器的操作。串行口對外有兩條獨立的收發信號線RXD(P3.0)、TXD(P3.1),因此可以同時發送、接收數據,實現全雙工。
        2、SCON寄存器用來控制串行口的工作方式和狀態,可按位尋址,其字節地址為98H。
        3、PCON中的SMOD用來控制波特率加倍。
        4、TMOD設置定時器1的工作方式,用來產生波特率
        5、如果用到中斷,則還需要用到中斷相關的寄存器IE,IP等

        三、四種工作方式:
        方式0:
        同步移位寄存器方式,其波特率是固定為振蕩頻率fosc的1/12。在這種工作方式下,發送和接收串行數據都通過RXD(P3.0)進行,從TXD(P3.1)輸出移位脈沖,控制外部的移位寄存器移位。1幀信息為8位,沒有起始位,停止位。
        方式1:
        8位UART,1幀信息為10位,其中一位起始位“0”、八位數據位(先低位后高位)和一個停止位“1”,波特率可變,根據定時器1的溢出率計算。
        方式2:
        9位UART,1幀信息為11位,其中一位起始位“0”、八位數據位(先低位后高位),一位控制位(第九位)和一個停止位“1”。波特率為振蕩頻率的1/64或1/32
        方式3:
        9位UART,幀信息為11位,其中一位起始位“0”、八位數據位(先低位后高位),一位控制位(第九位)和一個停止位“1”。波特率可變,根據定時器1的溢出率計算。
        附加的第9位數據為SCON中的TB8的值,它由軟件置位或清零,可作為多機通信中地址/數據信息的標志位,也可作為數據的奇偶校驗位。

        51單片機相關文章:51單片機教程


        數字通信相關文章:數字通信原理


        通信相關文章:通信原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 河北省| 镇雄县| 偏关县| 扶沟县| 茶陵县| 清河县| 陕西省| 海兴县| 克东县| 尼玛县| 铁力市| 上杭县| 化州市| 喀喇| 准格尔旗| 阜阳市| 杭州市| 夏邑县| 金山区| 论坛| 白城市| 平定县| 定州市| 蒲城县| 项城市| 大同县| 徐闻县| 扎鲁特旗| 贞丰县| 江源县| 马山县| 凤城市| 安多县| 禹州市| 尼勒克县| 巴马| 九台市| 鱼台县| 军事| 河间市| 呼伦贝尔市|