當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]串口調(diào)試這個東西真的太經(jīng)典了,雖然我對51的串口通信方式還是一知半解,但是這幾天調(diào)試程序,又通過看郭天祥的書,對51的串口有了進一步的認(rèn)識,串口調(diào)試的程序需要多多收集,開始德飛來板子上的串口程序感覺起來就

串口調(diào)試這個東西真的太經(jīng)典了,雖然我對51的串口通信方式還是一知半解,但是這幾天調(diào)試程序,又通過看郭天祥的書,對51的串口有了進一步的認(rèn)識,串口調(diào)試的程序需要多多收集,開始德飛來板子上的串口程序感覺起來就是個渣渣,一點都不好用,在調(diào)試程序的時候老是出問題,上一篇調(diào)試串口的程序就是移植德飛來板子上的程序,不僅波特率不能自己更改,比較死板,要注意的東西很多,不適合,今天調(diào)試溫度傳感器那個程序,突然間發(fā)現(xiàn)一個比較又用的串口調(diào)試程序,就曬在園子里,供大家參考

//****************************************************************//

// AM系列讀單總線使用范例

//單片機 :AT89S52 或 STC89C52RC

// 功能 :串口發(fā)送溫濕度數(shù)據(jù) 波特率 9600

// 晶振 :12M (用戶系統(tǒng)時鐘如不是12M 請更改相關(guān)宏定義及注釋的延時時間)

// 編譯環(huán)境: Keil3

// 公司 :奧松電子

//****************************************************************//


#include "reg52.h"

#include


//用戶根據(jù)自己的晶振修改相應(yīng)值

#define FOSC 11059200

#define BAUD 9600


//讀傳感器 端口位定義,可修改

sbit Sensor_SDA = P0^0;

sbit Sensor_SCL = P0^1;


// 變量定義

unsigned char Sensor_Data[5]={0x00,0x00,0x00,0x00,0x00};

unsigned char Sensor_Check; //校驗和


unsigned char Sensor_AnswerFlag; //收到起始標(biāo)志位

unsigned char Sensor_ErrorFlag; //讀取傳感器錯誤標(biāo)志

unsigned int Sys_CNT;

unsigned int Tmp;


unsigned char *String;


//字符串定義

#define S_Temp "Temp:"

#define S_RH "RH:"

#define S_CRCT "Check: True"

#define S_CRCF "Check: Wrong"

#define S_Data "Data: "

#define S_NotS "Sensor Not Connected"


/********************************************

|* 功能: 延時 晶振為12M時 *|

|* t = 1 為 20us 然后成倍增加10us左右 *|

********************************************/

void Delay_N10us(unsigned char t)

{

while(t--)

{

_nop_();

}

}

/********************************************

|* 功能: 延時 晶振為12M時 *|

|* 延時大約 1ms *|

********************************************/

void Delay_N1ms(unsigned int t)

{

unsigned int i;

unsigned int j;

for(j=t;j>0;j--)

for(i=124;i>0;i--); //延時大約 1ms

}

/********************************************

|* 功能: 初始化串口 *|

********************************************/

void InitUART(void)

{

unsigned int iTmpBaud;

unsigned long lTmpBaud;

iTmpBaud = 0;

//首先選定定時器2作為波特率發(fā)生器,16位定時器,自動裝載

SCON = 0x50; //SM0 SM1 SM2 REN TB8 RB8 TI RI //0 1 0 1 0 0 0 0

PCON = 0x00; //PCON的地址是87H,這里SMOD =0


T2CON = 0x30; //TF2 EXF2 RCLK TCLK EXEN2 TR2 C(/T2) CP(/RL2) //0 0 1 1 0 0 0 0

T2MOD = 0x00; // / / / / / / T2OE DCEN //0 0 0 0 0 0 0 0


lTmpBaud = FOSC/BAUD;

lTmpBaud /= 32; //12T-mode

iTmpBaud = lTmpBaud & 0xFFFF;

iTmpBaud = 65536 - iTmpBaud;

RCAP2H = (iTmpBaud>>8) & 0x0FF;

RCAP2L = iTmpBaud & 0x0FF;


RI = 0; //清除接收中斷標(biāo)志

REN = 1; //允許串行接收

ES = 1; //允許串行中斷

TR2 = 1; //啟動定時器1


EA=1;//開總中斷

}


/********************************************

|* 功能: 串口發(fā)送函數(shù) *|

********************************************/

void UARTSend(char UCHAR)

{

SBUF=UCHAR;

while(TI==0);

TI=0;

}

/********************************************

|* 功能: 串口中斷函數(shù) *|

********************************************/

void UARTRead(void) interrupt 4

{

char temp;

if(RI)

{

RI=0;

temp = SBUF;

}

}

/********************************************

|* 功能: 串口發(fā)送子函數(shù) *|

********************************************/

void UART_PutString(unsigned char *buf)

{

while(*buf)

UARTSend(*buf++);

}

void UART_PutStringAndNum(unsigned char *buf ,unsigned int num)

{

unsigned char a[3],i;

a[3] = '0'+num%10;

a[2] = '.';

a[1] = '0'+num/10%10;

a[0] = '0'+num/100%10;

while(*buf)

UARTSend(*buf++);

UARTSend(' ');

for(i=0;i<4;i++)

{

UARTSend(a[i]);

}

}

void UART_PutStringAnd_Data(unsigned char *buf ,unsigned char *bufdata)

{

unsigned char a[2],i,j;

while(*buf)

UARTSend(*buf++);

UARTSend(' ');

for(i=0;i<5;i++)

{

a[0] = bufdata[i]/16;

a[1] = bufdata[i]%16;

for(j=0;j<2;j++)

{

if(a[j]>9)

{

a[j] = (a[j]-10)+'A';

}

else

{

a[j] = a[j]+'0';

}

UARTSend(a[j]);

}

UARTSend(' ');

}

}

/********************************************

|* 功能: 串口發(fā)送傳感器數(shù)據(jù)函數(shù) *|

********************************************/

void UARTSend_Nbyte(void)

{

if(Sensor_AnswerFlag == 1)

{

Sensor_Check = Sensor_Data[0]+Sensor_Data[1]+Sensor_Data[2]+Sensor_Data[3];

//校驗成功

if(Sensor_Check ==Sensor_Data[4])

{

String = S_RH;//"RH:";

Tmp = Sensor_Data[0]*256+Sensor_Data[1];

UART_PutStringAndNum(String,Tmp);

UARTSend(' ');

UARTSend(' ');

String = S_Temp;// "Temp:";

Tmp = Sensor_Data[2]*256+Sensor_Data[3];

UART_PutStringAndNum(String,Tmp);

UARTSend(' ');

UARTSend(' ');


String = S_CRCT;//"Check: True";

UART_PutString(String);

}else //校驗失敗 送上讀到數(shù)據(jù)

{

String = S_Data;//"Data: ";

UART_PutStringAnd_Data(String,Sensor_Data);

UARTSend(' ');

UARTSend(' ');

String = S_CRCF;//"Check: Wrong";

UART_PutString(String);

}

}// 傳感器未連接

else

{

String = S_NotS; //"Sensor Not Connected";

UART_PutString(String);

}

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉