欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機學習:串口接收和發送數據
[打印本頁]
作者:
51黑電子迷
時間:
2017-2-9 22:18
標題:
51單片機學習:串口接收和發送數據
芯片STC89C52RC
在PC端向單片機發送任意數據后, 單片機向PC端發送4行文本,
由于在windos下,回車換行用
e0b48f25-7abc-319c-9847-890e339e1c97.jpg
(89.33 KB, 下載次數: 38)
下載附件
2017-2-9 22:18 上傳
C代碼
#include <reg52.h>
#include "MY51.h"
void initSer(); //串口初始化
uchar sendFlag = 0; //未發送數據時
uchar receFlag =0; //未接受到數據時
code uchar TEXT0[] = "****************************\r\n"; //\r\n是回車換行
code uchar TEXT1[] = "單片機串口通訊測試\r\n";
code uchar TEXT2[] = "http://xouou.iteye.com\r\n";
code uchar TEXT3[] = "****************************\r\n\r\n";//回車換行并空1行
void sendChar(uchar sendValue); //發送一字節數據
void sendAll(uchar *pValue); //發送一組數據
void main(void)
{
initSer();
while(1)
{
while(receFlag) //單片機串口收到任意數據后,開始向PC發送數據
{
sendAll(TEXT0); //發送數據
sendAll(TEXT1);
sendAll(TEXT2);
sendAll(TEXT3);
receFlag=0; //發完了清標志
}
}
}
void serInt() interrupt 4 //中斷函數
{
if(RI) //如果收到任意數據
{
RI = 0;
P1=SBUF; //數據的變化讓led燈直觀反應出來
receFlag=1; //修改接受標志,便于主函數進入while中發數據
}
if(TI)
{
TI = 0; //發送完一個數據
sendFlag = 0; //清標志位
}
}
void sendChar(uchar Value) //發送一個字節數據
{
SBUF = Value;
sendFlag = 1; //設置發送標志位,發一字節就置位
while(sendFlag); //直到發完數據,將sendFlag清零后,才退出sendChar函數
}
void sendAll(uchar *pValue) //發送一組數據
{
while((*pValue) != '\0') //如果沒有發送完畢就繼續發
{
sendChar(*pValue); //發送1字節數據
pValue++; //指向下1個字節
}
}
void initSer() //初始化
{
//注意:剛上電時,SCON是為0的
TMOD=TMOD|0x20; //T1定時器模式,工作方式2
TH1=0Xfd; // 256-(11059200/(32*12*9600))
TL1=0xfd;
SM0=0; //屬于SCON寄存器
SM1=1; //串口工作方式1,10位異步,波特率可改
REN=yes; //允許串口接收
ES=open; //開串口中斷
EA=open; //開總中斷
TR1=start; //啟動定時器
}
復制代碼
作者:
xiaosong12306
時間:
2017-2-10 09:20
不錯啊,真是好東西啊
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1