欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于普中科技51單片機的簡單串口通信例程
[打印本頁]
作者:
llyy11
時間:
2019-1-21 20:31
標題:
基于普中科技51單片機的簡單串口通信例程
實現功能:當PC一次發送帶有“123”的字符串,或者依次輸入有“1”“2”“3”的字符時,點亮單片機的一個LED小燈,同時PC收到“Hello.x”的字符串,隨后LED小燈熄滅。
注意:51單片機的時鐘頻率若不為11.052MHz,如本例使用的單片機時鐘頻率為11.938995MHz,只在波特率為4800,波特率加倍的情況下實現通信,其它波特率下無法收到51發送的數據。
/**************************************************************************************
* 串口通信實驗 *
實現現象:下載程序后打開串口調試助手,將波特率設置為4800,選擇發送的數據就可以顯示
在串口助手上。
注意事項:無。
***************************************************************************************/
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit LED=P2^2;
u8 i=0;
u8 m[8]="Hello.x";
u8 k=0;
u8 a;
/*******************************************************************************
* 函數名 :UsartInit()
* 函數功能 :設置串口
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void UsartInit()
{
SCON=0X50; //設置為工作方式1
TMOD=0X20; //設置計數器工作方式2
PCON=0X80; //波特率加倍
TH1=0xf3; //計數器初始值設置,注意波特率是4800的
TL1=0xf3;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計數器
}
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
UsartInit(); // 串口初始化
while(1);
}
void Usart_receive()
{
a=SBUF;
RI=0;
}
void Usart_judge()
{
if(i==0) //判斷輸入字符是不是‘1’,若為‘1’,令i=1,變為狀態1
{
if(a=='1')
{
i=1;
}
else
{
i=0;
}
}
else if(i==1) //判斷在上一個字符為‘1’的情況下,輸入字符是否為‘2’
{
if(a=='2') //若為‘2’,令i=2,變為狀態2
{
i=2;
}
else if(a=='1') //若為‘1’,回到狀態‘1’
{
i=1;
}
else //其它情況,回到狀態0
{
i=0;
}
}
else if(i==2) //判斷在上兩個字符為‘1’‘2’的情況下,輸入字符是否為‘3’
{
if(a=='3') //若為‘3‘,LED點亮,輸出“Hello.x”,LED熄滅,隨后回到狀態0
{
LED=0;
for(k=0;k<8;k++)
{
SBUF=m[k];
while(!TI);
TI=0;
}
LED=1;
i=0;
}
else if(a=='1') //若為’1‘,回到狀態1
{
i=1;
}
else //其它情況,回到狀態0
{
i=0;
}
}
}
/*******************************************************************************
* 函數名 : Usart() interrupt 4
* 函數功能 : 串口通信中斷函數
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void Usart() interrupt 4
{
Usart_receive();
Usart_judge();
}
復制代碼
作者:
chunming
時間:
2019-4-18 10:28
不好使
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1