串口,作為單片機(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++);
}
}
-
單片機(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
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論