0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

51單片機(jī)串口配置方法

CHANBAEK ? 來源:電子應(yīng)用學(xué)習(xí)館 ? 作者:一只會(huì)飛的大魚兒 ? 2023-04-14 14:58 ? 次閱讀

串口,作為單片機(jī)程序開發(fā)中最常用、最方便,也是應(yīng)用最廣泛的程序調(diào)試方法;無論是作為調(diào)試工具,打印出調(diào)試信息,還是對(duì)功能模塊進(jìn)行通信,串口是每個(gè)單片機(jī)開發(fā)人員最常用的單片機(jī)外設(shè)。

由于大部分51單片機(jī)不支持在線調(diào)試功能,所以串口作為一種有效的調(diào)試功能,所以在51單片機(jī)程序開發(fā)時(shí),無法進(jìn)行在線調(diào)試,不妨可以多采用串口來進(jìn)行調(diào)試。

1. 串口配置

51單片機(jī)配置除了需要配置2個(gè)8位寄存器SCON、PCON外,還要配置定時(shí)器1的控制寄存器TMOD,因?yàn)榇谠谶M(jìn)行收發(fā)需要使用定時(shí)器來采樣。

(1) 狀態(tài)控制寄存器 SCON

SCON 是一個(gè)逐位定義的 8 位寄存器,用于控制串行通信的方式選擇、接收和發(fā)送,指 示串口的狀態(tài),SCON 即可以字節(jié)尋址也可以位尋址,字節(jié)地址 98H,地址位為 98H~9FH。它的各個(gè)位定義如下:

SM0 和 SM1 是串口的工作方式選擇位,2 個(gè)選擇位對(duì)應(yīng) 4 種工作方式,如下表,其中 Fosc 是振蕩器的頻率。

(2) 電源與波特率控制寄存器

控制寄存器 PCON 也是一個(gè)逐位定義的 8 位寄存器,目前僅僅有幾位有定義,如下所示:

圖片

僅最高位 SMOD 與串口的控制有關(guān),其他位與掉電方式有關(guān)。PCON 的地址為 87H 只能按 字節(jié)尋址,SMOD 是串行通信波特率系數(shù)控制位,當(dāng)串口工作在工作方式 1、2 時(shí),若使用 T1 作為波特率發(fā)生器其 SMOD=1 則波特率加倍。

(3) 定時(shí)器控制模式寄存器

TMOD是定時(shí)器、計(jì)數(shù)器模式控制寄存器,它是一個(gè)逐位定義的8位寄存器,但只能使用字節(jié)尋址

圖片

當(dāng)串口工作在工作方式0和2時(shí),波特率固定,方式0時(shí)fosc/12;方式2時(shí)fosc/32或fosc/64(根據(jù)SMOD判斷)。當(dāng)串口工作在方式1時(shí),波特率=(2^SMOD/32)*(單片機(jī)時(shí)鐘頻率/(256-X)),X是初值;C/T#為定時(shí)器和計(jì)數(shù)器選擇位,0為定時(shí)器,1為計(jì)數(shù)器。

2. 串口通用程序

為了有較好的通用性,將串口程序配置為一個(gè)H文件和C文件,往后只要開發(fā)51單片機(jī)程序,都可以將該兩個(gè)文件復(fù)制在工程中直接使用,無須修改。

(1)uart.h

#ifndef _UART_H_
#define _UART_H_


#include "reg52.h"


void UartInit(void);
void Send_string(unsigned char *c);
void Send_Data(unsigned char DAT);


#endif

(2)uart.c

#include "uart.h"


//串口初始化
void UartInit(void)
{
  /*串口初始化 */
  TMOD = 0x20;    //定時(shí)器T1使用工作方式2
  TH1 = 253;        // 設(shè)置初值
  TL1 = 253;
  TR1 = 1;          // 開始計(jì)時(shí)
  SCON = 0x50;    //工作方式1,波特率9600bps,允許接收   
  ES = 1;
  EA = 1;           // 打開所以中斷   
  TI = 0;
  RI = 0;
}


void Send_Data(unsigned char DAT)
{
  ES = 0;
  TI=0;
  SBUF = DAT ;
  while(TI==0);
  TI=0;
  ES = 1;
}


void Send_string(unsigned char  *c)
{
  while(*c != '\\0')
  {
    Send_Data(*c++);
  }  
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635350
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120375
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5702

    瀏覽量

    123623
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    578

    瀏覽量

    33943
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1554

    瀏覽量

    76522
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    51單片機(jī)串口檢測程序

    本內(nèi)容提供了51單片機(jī)串口檢測程序,詳解列出了本程序
    發(fā)表于 05-09 11:43 ?6956次閱讀

    51單片機(jī)串口通信代碼

    51單片機(jī)串口通信的代碼設(shè)計(jì)
    發(fā)表于 11-09 17:47 ?180次下載

    51單片機(jī)串口通信程序

    51單片機(jī)串口通信程序,帶有詳細(xì)例程,希望可以給你幫助。
    發(fā)表于 05-16 11:56 ?124次下載

    基于51單片機(jī)的UART串口通信

    基于51單片機(jī)的UART串口通信詳解。
    發(fā)表于 11-21 10:14 ?6.3w次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的UART<b class='flag-5'>串口</b>通信

    如何使用51單片機(jī)實(shí)現(xiàn)串口通信

    51單片機(jī)串口引腳為P3.0引腳與P3.1引腳,分別是RXD和TXD引腳。串口通信可以用于單片機(jī)和其它芯片通信或者
    發(fā)表于 11-21 15:47 ?3w次閱讀
    如何使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>串口</b>通信

    如何配置minicom與51單片機(jī)進(jìn)行串口通信詳細(xì)實(shí)例說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何配置minicom與51單片機(jī)進(jìn)行串口通信詳細(xì)實(shí)例說明。
    發(fā)表于 07-10 17:40 ?0次下載
    如何<b class='flag-5'>配置</b>minicom與<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>進(jìn)行<b class='flag-5'>串口</b>通信詳細(xì)實(shí)例說明

    51單片機(jī)串口通訊詳解

    串口,作為單片機(jī)程序開發(fā)中最常用、最方便,也是應(yīng)用最廣泛的程序調(diào)試方法;無論是作為調(diào)試工具,打印出調(diào)試信息,還是對(duì)功能模塊進(jìn)行通信,串口是每個(gè)單片機(jī)
    發(fā)表于 11-11 17:06 ?15次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b>通訊詳解

    51單片機(jī)串口通信

    51單片機(jī)串口通信文章目錄51單片機(jī)串口通信串口介紹
    發(fā)表于 11-18 14:06 ?22次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b>通信

    51單片機(jī)串口通信

    51單片機(jī)串口通信文章目錄51單片機(jī)串口通信串口介紹
    發(fā)表于 11-21 20:36 ?64次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b>通信

    串口 單片機(jī) 文件_51單片機(jī)(四)燒錄程序

    串口 單片機(jī) 文件_51單片機(jī)(四)燒錄程序
    發(fā)表于 11-23 17:06 ?18次下載
    <b class='flag-5'>串口</b> <b class='flag-5'>單片機(jī)</b>  文件_<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>(四)燒錄程序

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)實(shí)現(xiàn)從機(jī)串口收發(fā)

    單片機(jī)學(xué)習(xí)筆記————51單片機(jī)實(shí)現(xiàn)從機(jī)串口收發(fā)
    發(fā)表于 11-23 17:06 ?42次下載
    <b class='flag-5'>單片機(jī)</b>學(xué)習(xí)筆記————<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)從<b class='flag-5'>機(jī)</b>的<b class='flag-5'>串口</b>收發(fā)

    51單片機(jī)——串口通信

    51單片機(jī)——串口通信串口通信?串口通信的原理?串口配置
    發(fā)表于 11-23 17:36 ?33次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>串口</b>通信

    51 單片機(jī)串口燒錄程序方法

    51單片機(jī)串口燒錄程序方法51 單片機(jī)串口燒錄程序
    發(fā)表于 11-25 18:21 ?120次下載
    <b class='flag-5'>51</b> <b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b>燒錄程序<b class='flag-5'>方法</b>

    基于51單片機(jī)單片機(jī)串口通信仿真設(shè)計(jì)

    基于51單片機(jī)單片機(jī)串口通信仿真設(shè)計(jì),資料包含仿真及源程序
    發(fā)表于 04-20 16:15 ?4次下載

    ?51單片機(jī)串口通信詳細(xì)介紹-小白必看

    51單片機(jī)串口通信是單片機(jī)與外部設(shè)備通信的重要方式,它基于串行通信的原理,以字節(jié)為單位進(jìn)行數(shù)據(jù)傳輸。在51
    的頭像 發(fā)表于 04-17 09:33 ?1999次閱讀
    ?<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b>通信詳細(xì)介紹-小白必看