串行通信口SCI__HCS12學(xué)習(xí)筆記(2)
SCI采用NRZ數(shù)據(jù)格式,用負(fù)電平表示一種二進(jìn)制值,正電平表示另一種二進(jìn)制值,不使用零電平??臻e狀態(tài)為1,發(fā)送器通過發(fā)送一個(gè)0表示一字節(jié)傳輸開始隨后是數(shù)據(jù)位,最后發(fā)送1~2位的停止位,表示一字節(jié)的傳送結(jié)束。一個(gè)開始位到一個(gè)停止位,為1幀F(xiàn)rame。
本文引用地址:http://butianyuan.cn/article/201611/321072.htm寄存器:
對(duì)于編程者來說,直接面對(duì)的就是寄存器,因此對(duì)于寄存器的介紹是非常重要的。
這里只列舉,詳細(xì)各個(gè)位的介紹參照數(shù)據(jù)手冊(cè):
波特率寄存器 SCIBDH SCIBDL H的高3位無(wú)效,因此一種13位1~8191
控制寄存器
狀態(tài)寄存器
數(shù)據(jù)寄存器
初始化、收、發(fā)子函數(shù):
//串行通信需要用到的頭文件
#include "mc9s12dg128.h"
#include "Type.h"
//串行通信寄存器及標(biāo)志位定義
#define ReSendStatusR SCI0SR1
#define ReTestBit
#define SendTestBit
#define ReSendDataR
//串行通信相關(guān)函數(shù)聲明
void SCIInit(void);
void SCISend1(INT8U o);
void SCISendN(INT8U n,INT8U ch[]);
INT8U SCIRe1(INT8U *p);
INT8U SCIReN(INT8U n,INT8U ch[]);
//特別聲明,這里的INT8U表示8位無(wú)符號(hào)數(shù)
//[SCI.c]串行通信----------------------------------------------------------*
//本文件包含:
//
//
//
//
//
//硬件連接:
//
//-------------------------------------------------------------------------*
//頭文件
#include "SCI.h"
//SCIInit:DG128串行口0初始化函數(shù)-------------------------------------------*
//功
//
//
//
//參
//返
//說
//
//
//-------------------------------------------------------------------------*
void SCIInit(void)
{
}
//SCISend1:串行發(fā)送1個(gè)字節(jié)-------------------------------------------------*
//功
//參
//返
//-------------------------------------------------------------------------*
void SCISend1(INT8U o)
{
}
//SCISendN:串行發(fā)送N個(gè)字節(jié)-------------------------------------------------*
//功
//參
//返
//內(nèi)部調(diào)用函數(shù):SCISend1
//-------------------------------------------------------------------------*
void SCISendN(INT8U n,INT8U ch[])
{
}
//SCIRe1:串行收一個(gè)字節(jié)數(shù)據(jù)------------------------------------------------*
//功
//參
//返
//說
//-------------------------------------------------------------------------*
INT8U SCIRe1(INT8U *p)
{
}
//SCIReN:HC08串行接收N個(gè)字節(jié)-----------------------------------------------*
//功
//參
//返
//內(nèi)部調(diào)用函數(shù):SCIRe1
//-------------------------------------------------------------------------*
INT8U SCIReN(INT8U n,INT8U ch[])
{
}
這段程序是嵌入式系統(tǒng)--使用HCS12微控制器的設(shè)計(jì)與應(yīng)用中附帶的。格式很規(guī)范。
在計(jì)算機(jī)上使用軟件收發(fā)給單片機(jī)時(shí)也容易出錯(cuò),一般是波特率不匹配,這樣出現(xiàn)的就是亂碼,一定要注意。
Bt=fBUS/(16*BR)
評(píng)論