胡燕清(河源職業(yè)技術(shù)學(xué)院電子與信息工程學(xué)院,517000)
?
詳解lAP15W4K58S4單片機(jī)的串行口通信
胡燕清
(河源職業(yè)技術(shù)學(xué)院電子與信息工程學(xué)院,517000)
IAP15W4K58S4單片機(jī)是STC公司的全新一代高性價(jià)比、高性能單片機(jī)。串行通信是一種重要且廣泛應(yīng)用的數(shù)據(jù)傳輸方式。本文詳細(xì)講解了IAP15W4K58S4單片機(jī)串口的結(jié)構(gòu)、工作方式與波特率設(shè)置,并為串口的應(yīng)用列舉了典型通用的串口初始化程序。
IAP15W4K58S4;串口;工作方式;波特率
IAP15W4K58S4單片機(jī)是STC公司推出的全新一代在應(yīng)用可編程、單時(shí)鐘/機(jī)器周期的8051內(nèi)核單片機(jī),它具有高速、高可靠、寬電壓、低功耗、超強(qiáng)抗干擾的優(yōu)點(diǎn)特性,目前在教育與研發(fā)設(shè)計(jì)領(lǐng)域越來越受到眾多高校、科研院所與企業(yè)的青睞。本文詳細(xì)講解了IAP15W4K58S4單片機(jī)串口的結(jié)構(gòu)、工作方式與波特率設(shè)置,并為串口的應(yīng)用列舉了典型通用的串口初始化程序。
IAP15W4K58S4單片機(jī)具有4個(gè)高速異步串行端口,分別是串口1、串口2、串口3和串口4,每個(gè)串口由1個(gè)波特率發(fā)生器、1個(gè)串口控制寄存器、1個(gè)移位寄存器和2個(gè)數(shù)據(jù)緩沖器構(gòu)成。每個(gè)串口的數(shù)據(jù)緩沖器由2個(gè)物理上獨(dú)立的接收和發(fā)送緩沖器構(gòu)成,可同時(shí)接收和發(fā)送數(shù)據(jù),兩個(gè)緩沖器共用一個(gè)地址。串口1的兩個(gè)緩沖器為SBUF;串口2的兩個(gè)緩沖器為S2BUF;串口3的兩個(gè)緩沖器為S3BUF;串口4的兩個(gè)緩沖器為S4BUF。4個(gè)串口的內(nèi)部結(jié)構(gòu)類似,圖1為串口1的內(nèi)部結(jié)構(gòu)。串口發(fā)送時(shí),將數(shù)據(jù)寫入SBUF即啟動發(fā)送,發(fā)送完畢時(shí)相應(yīng)的中斷標(biāo)志位TI置1;串口接收時(shí),當(dāng)中斷標(biāo)志位RI=1時(shí)表示接收完畢,此時(shí)讀SBUF即可接收數(shù)據(jù)。每發(fā)送/接收完畢,都必須對TI/RI軟件清零。
圖1 串口1的內(nèi)部結(jié)構(gòu)
IAP15W4K58S4單片機(jī)的串口1有四種工作方式,其中兩種方式的波特率可變,另外兩種方式的波特率固定。串口1的工作方式由串口1控制寄存器SCON的SM0、SM1兩位設(shè)置,串口1的工作方式及波特率設(shè)置如表1所示。
10位UART,即一幀信息為10位:1位起始位‘0',8位數(shù)據(jù)位和1位停止位‘1'。11位UART,即一幀信息為11位:1位起始位‘0',8位數(shù)據(jù)位,1位可編程位(第9位,存放數(shù)據(jù)/地址標(biāo)志位或奇/偶校驗(yàn)位),和1位停止位‘1'。
串口2和串口3、串口4都只有兩種工作方式,這兩種方式的波特率都是可變。以串口2為例,串口2的工作方式由串口2控制寄存器S2CON的S2SM0設(shè)置,串口2的工作方式及波特率設(shè)置如表2所示。
注意:對于IAP15W4K58S4單片機(jī),串口1默認(rèn)選擇T2作波特率發(fā)生器,也可選擇T1作波特率發(fā)生器;串口2固定T2作波特率發(fā)生器;串口3默認(rèn)選擇T2作波特率發(fā)生器,也可選擇T3作波特率發(fā)生器;串口4默認(rèn)選擇T2作波特率發(fā)生器,也可選擇T4作波特率發(fā)生器。當(dāng)串口1、串口3、串口4和串口2的波特率相同時(shí),串口1、串口3、串口4和串口2可以共享T2作波特率發(fā)生器。
表1 串口1的工作方式及波特率設(shè)置
表2 串口2的工作方式及波特率設(shè)置
串口1的四種工作方式包含了串口2、串口3、串口4的兩種工作方式,以下串口初始化程序以串口1的工作方式1(10位UART)為例,其他工作方式可在此基礎(chǔ)上方便修改。
(1)采用T1作波特率發(fā)生器,且T1工作于方式0(16位初值自動重載模式)
#include "stc15.h"
#define FOSC 11059200L
#define BAUD 9600
void uart1_ini()
{ SCON = 0x50; //串口1方式1,允許
接收
AUXR &= 0xfe; //S1ST2=0:選擇T1
為串口1的波特率發(fā)生器
AUXR |= (1<<6); //T1x12=1:T1速度
是傳統(tǒng)8051速度的12倍,不分頻即1T模式
//AUXR &= ~(1<<6); //T1x12=0:T1速度
是傳統(tǒng)8051速度,12分頻即12T模式
TMOD = (TMOD & 0x0f) | 0x00; //定時(shí)器T1為方式
0(16位初值自動重載模式)
TL1 = 65536-FOSC/4/BAUD; //裝載波特率BAUD
對應(yīng)計(jì)數(shù)初值(T1x12=1即1T模式)
TH1 = (65536-FOSC/4/BAUD)>>8;
//TL1 = 65536-FOSC/12/4/BAUD; //裝載波特率BAUD
對應(yīng)計(jì)數(shù)初值(T1x12=0即12T模式)
//TH1 = (65536-FOSC/12/4/BAUD)>>8;
TR1 = 1; //啟動T1
P_SW1 = 0x00; //串口1引腳切換
至[RxD/P3.0, TxD/P3.1],復(fù)位默認(rèn)值
ES = 1; //串口1中斷使能
EA = 1; //總中斷使能
}
(2)采用T1作波特率發(fā)生器,且T1工作于方式2(8位初值自動重載模式)
void uart1_ini()
{ SCON = 0x50; //串口方式1,允許接
收
AUXR &= 0xfe; //S1ST2=0:選擇T1
為串口1的波特率發(fā)生器
AUXR |= (1<<6); //T1x12=1:T1速度
是傳統(tǒng)8051速度的12倍,不分頻即1T模式
//AUXR &= ~(1<<6); //T1x12=0:T1速度
是傳統(tǒng)8051速度,12分頻即12T模式
TMOD = (TMOD & 0x0f) | 0x20; //定時(shí)器T1為方式
2(8位初值自動重載模式)
PCON = 0x00; //SMOD=0波特率不加
倍
TL1 = 256-FOSC/32/BAUD; //裝載波特率BAUD
對應(yīng)計(jì)數(shù)初值(T1x12=1即1T模式)
TH1 = 256-FOSC/32/BAUD;
//TL1 = 256-FOSC/12/32/BAUD; //裝載波特率BAUD
對應(yīng)計(jì)數(shù)初值(T1x12=0即12T模式)
//TH1 = 256-FOSC/12/32/BAUD;
TR1 = 1; //啟動T1
P_SW1 = 0x00; //串口1引腳切換至
[RxD/P3.0, TxD/P3.1],復(fù)位默認(rèn)值
ES = 1; //串口1中斷使能
EA = 1; //總中斷使能
}
(3)采用T2作波特率發(fā)生器(T2工作方式固定為:16位初值自動重載模式)
void uart1_ini()
{ SCON = 0x50; //串口1方式1,允許
接收
AUXR |= 0x01; //S1ST2=1:選擇T2
為串口1的波特率發(fā)生器
AUXR |= (1<<2); //T2x12=1:T2速度
是傳統(tǒng)8051速度的12倍,不分頻即1T模式
//AUXR &= ~(1<<2); //T2x12=0:T2速度
是傳統(tǒng)8051速度,12分頻即12T模式
AUXR &= ~(1<<3); //T2_C/T=0:T2作為
定時(shí)器
T2L = 65536-FOSC/4/BAUD; //裝載波特率BAUD對
應(yīng)計(jì)數(shù)初值(T2x12=1即1T模式)
T2H = (65536-FOSC/4/BAUD)>>8;
//T2L = 65536-FOSC/12/4/BAUD; //裝載波特率BAUD
對應(yīng)計(jì)數(shù)初值(T2x12=0即12T模式)
//T2H = (65536-FOSC/12/4/BAUD)>>8;
AUXR |= (1<<4); //T2R=1,啟動T2
P_SW1 = 0x00; //串口1引腳切換至
[RxD/P3.0, TxD/P3.1],復(fù)位默認(rèn)值
ES = 1; //串口1中斷使能
EA = 1; //總中斷使能}
IAP15W4K58S4單片機(jī)是STC公司的全新一代高性價(jià)比單片機(jī)。串行通信是一種重要且廣泛應(yīng)用的數(shù)據(jù)傳輸方式。本文詳細(xì)講解了IAP15W4K58S4單片機(jī)串口的結(jié)構(gòu)、工作方式與波特率設(shè)置,并為串口的應(yīng)用列舉了典型通用的串口初始化程序。
[1] STC公司.STC15系列單片機(jī)器件手冊.www.stcmcu.com,2015.
[2] 徐愛鈞.STC15單片機(jī)C語言編程與應(yīng)用[M].電子工業(yè)出版社,2016.
Explication for the serial port communication of IAP15W4K58S4 MCU
Hu Yanqing
(College of Electronic and Information Engineering, Heyuan Polytechnic,517000)
IAP15W4K58S4 is a new generation MCU of high cost performance from STC company.Serial communication is an important and widely used method of data transmission.This paper explicated in detail the structure,working mode and baud rate settings of serial port of IAP15W4K58S4,and listed the typical and universal serial port initialization program for the application of serial port.
IAP15W4K58S4;serial port;working mode;baud rate
胡燕清(1981-),男,碩士研究生,研究方向?yàn)閱纹瑱C(jī)與嵌入式技術(shù)、傳感器技術(shù)與信號處理。