亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 51uartprograme.txt

?? 一個C51串口通訊程序,學習串口通訊的經典源碼.
?? TXT
字號:
//PC讀MCU指令結構:(中斷方式,ASCII碼表示)
//幀: 幀頭標志|幀類型|器件地址|啟始地址|長度n|效驗和|幀尾標志
//值: 'n' 'y'| 'r' | 0x01 | x | x | x |0x13 0x10
//字節數: 2 | 1 | 1 | 1 | 1 | 1 | 2
//求和:


/////////////////////////////////////////////////////////////////////
//公司名稱:***
//模 塊 名:protocol.c
//創 建 者:1
//修 改 者:
//功能描述:中斷方式:本程序為mcu的串口通訊提供(貞結構)函數接口,包括具體協議部分
//其他說明:只提供對AT89c51具體硬件的可靠訪問接口
//版 本:1.0
//信 息:QQ 75011221 C51BBS匿名:niuyi
/////////////////////////////////////////////////////////////////////


#include <reg51.h>
#include <config.h>
//預定義
//幀
#define F_ST1 0x6e //幀頭標志 n
#define F_ST2 0x79 //幀頭標志 y
#define F_R 0x72 //幀類型 讀 
r
#define F_W 0x77 //幀類型 寫 
w
#define F_D 0x64 //幀類型 數據幀 d
#define F_B 0x62 //幀類型 寫回應幀 b
#define F_C 0x63 //幀類型 重發命令幀 c
#define F_Q 0x71 //幀類型 放棄幀 q
#define F_ADDR 0x31 //器件地址 0-9
#define F_END 0x7a //幀尾標志 z
#define F_SPACE 0x30 //空標志 0
#define F_ERR1 0x31 //錯誤標志1,flagerr 1
#define F_ERR2 0x32 //錯誤標志2 
2
//常數
#define S_MAXBUF 16 //接收/發送數據的最大緩存量
#define FIELD_MAXBUF 48 //最小場緩存,可以大于48字節,因為協議是以20字節為單
位傳輸的
#define communicationing P1_7//正在通訊(1)標志
#define ERRFRAME_MAX 5 //連續NOFRAME_CNT次幀不正確 
#define ERR_NOCNTMAX_RESEND if(++errframe_cnt<=ERRFRAME_MAX)resend_frame(); 
else errframe_cnt=communicationing=0;
//若超過 
ERRFRAME_MAX 次則令通訊停止ERR_NOCNTMAX_RESEND

//public 變量
unsigned char databuf[FIELD_MAXBUF],errframe_cnt;
//函數

/////////////////////////////////////////////////////////////////////
//函 數 名:send()
//功能描述:向串口發送一個字符
//函數說明:
//調用函數:
//全局變量:
//輸 入:ch-要發送的ASCII字符
//返 回:無

//修 改 者:
//版 本:
/////////////////////////////////////////////////////////////////////
void send(unsigned char ch)
{SBUF=ch;while(TI==0);TI=0;}

/////////////////////////////////////////////////////////////////////
//函 數 名:receive()
//功能描述:從串口接收一個字符
//函數說明:
//調用函數:
//全局變量:
//輸 入:無
//返 回:一個ASCII字符

//修 改 者:
//版 本:
/////////////////////////////////////////////////////////////////////
unsigned char receive(void)
{while(RI==0);RI=0;return SBUF;}

/////////////////////////////////////////////////////////////////////
//函 數 名:CharToHex()
//功能描述:把ASCII字符轉換為16進制
//函數說明:
//調用函數:
//全局變量:
//輸 入:ASCII字符
//返 回:16進制

//修 改 者:
//版 本:
/////////////////////////////////////////////////////////////////////
unsigned char CharToHex(unsigned char bChar){
if((bChar>=0x30)&&(bChar<=0x39))
bChar -= 0x30;
else if((bChar>=0x41)&&(bChar<=0x46))//大寫字母
bChar -= 0x37;
else if((bChar>=0x61)&&(bChar<=0x66))//小寫字母
bChar -= 0x57;
else bChar = 0xff;
return bChar;
}

/////////////////////////////////////////////////////////////////////
//函 數 名:HexToChar()
//功能描述:把16進制轉換為ASCII字符
//函數說明:
//調用函數:
//全局變量:
//輸 入:16進制
//返 回:ASCII字符

//修 改 者:
//版 本:
/////////////////////////////////////////////////////////////////////
unsigned char HexToChar(unsigned char bHex){
if((bHex>=0)&&(bHex<=9))
bHex += 0x30;
else if((bHex>=10)&&(bHex<=15))//大寫字母
bHex += 0x37;
else bHex = 0xff;
return bHex;
}

/////////////////////////////////////////////////////////////////////
//函 數 名:com_int()
//功能描述:初始化串口
//函數說明:默認其他參數為[baud_rate],n,8,1
//調用函數:
//全局變量:
//輸 入:baud_rate 波特率
//返 回:無

//修 改 者:
//版 本:
/////////////////////////////////////////////////////////////////////
void com_init(unsigned int baud_rate){
EA=1;ES=1;//ET1=1; 
SCON = 0x50; /* 0x52;//SCON */
TMOD = 0x20; /*0x20;// TMOD */
TCON = 0x60; /*0x60;// TCON */
PCON=PCON&0x7f;
switch(baud_rate){ //波特率設置
case 1200:
TL1=0xe8;TH1=0Xe8;break;//1200
case 2400:
TL1=0xf4;TH1=0Xf4;break;//2400
case 4800:
TL1=0xfa;TH1=0Xfa;break;//4800
case 9600:
TL1=0xfd;TH1=0Xfd;break;//9600
case 19200:
PCON=PCON|0x80;TL1=0xfd;TH1=0Xfd;break;//19200
case 38400:
PCON=PCON|0x80;TL1=0xfe;TH1=0Xfe;break;//38400
default:
TL1=0xfd;TH1=0Xfd;break;//9600
}
}
/////////////////////////////////////////////////////////////////////
//函 數 名:resend_frame()
//功能描述:發送重發幀
//函數說明:通知PC重發
//調用函數:
//全局變量:
//輸 入:無
//返 回:無

//修 改 者:
//版 本:
/////////////////////////////////////////////////////////////////////
void resend_frame(void){
send(F_ST1);send(F_ST2);send(F_C);send(F_SPACE);send(F_SPACE);//發送效
驗和
send(F_END);
}

/////////////////////////////////////////////////////////////////////
//函 數 名:quit_frame()
//功能描述:發送放棄幀
//函數說明:通知PC放棄通訊
//調用函數:
//全局變量:
//輸 入:無
//返 回:無

//修 改 者:
//版 本:
/////////////////////////////////////////////////////////////////////
void quit_frame(void){
send(F_ST1);send(F_ST2);send(F_Q);send(F_ERR1);send(F_ERR1);//發送效驗
send(F_END);
}

/////////////////////////////////////////////////////////////////////
//函 數 名:com_int()
//功能描述:串口中斷
//函數說明:
//調用函數:
//全局變量:
//輸 入:無
//返 回:無

//修 改 者:
//版 本:
/////////////////////////////////////////////////////////////////////
void com_int()interrupt 4{
unsigned char i,csaddr,clen,csum,tempbuf[S_MAXBUF];
csum=0;
if(receive()==F_ST1){//是偵
if(receive()==F_ST2){//頭判斷完
communicationing=1;//設置通訊狀態為正常 即啟動通訊
switch(receive()){
case F_R://是讀指令幀r
if(receive()==F_ADDR){P1_2=!P1_2;//地址
正確 
csaddr=CharToHex(receive())<<4;csaddr+=CharToHex
(receive());
clen=CharToHex(receive())
<<4;clen+=CharToHex(receive());
csum=csaddr+clen;
i=CharToHex(receive())
<<4;i+=CharToHex(receive());
if(i==csum){//效驗和正確
if(receive()
==F_END){//結束標志正確 //開始發送數據幀

csum=0;send(F_ST1);send(F_ST2);send(F_D);
send
(HexToChar((clen&0xf0)>>4));send(HexToChar(clen&0x0f));csum+=clen;
for
(i=0;i<clen;i++){

send(HexToChar((databuf[i+csaddr]&0xf0)>>4));send(HexToChar(databuf
[i+csaddr]&0x0f));

csum+=databuf[i+csaddr];
}
//if
(csum>127)csum-=128;
send
(HexToChar((csum&0xf0)>>4));send(HexToChar(csum&0x0f));send(F_END);

//發送數據幀完畢
P1_0=!
P1_0;
}else 
{ERR_NOCNTMAX_RESEND break;}//結束標志錯誤
}else {ERR_NOCNTMAX_RESEND 
break;}//效驗和錯誤
}//地址不正確
break;
case F_W://是PC寫指令幀w
if(receive()==F_ADDR){//地址正確
csaddr=CharToHex(receive())
<<4;csaddr+=CharToHex(receive());
clen=CharToHex(receive())
<<4;clen+=CharToHex(receive());
csum=csaddr+clen;
for(i=0;i<clen;i++){
tempbuf[i+csaddr]
=CharToHex(receive())<<4;tempbuf[i+csaddr]+=CharToHex(receive());
csum+=tempbuf
[i+csaddr];
}
i=CharToHex(receive())
<<4;i+=CharToHex(receive());
if(csum!=i)
{ERR_NOCNTMAX_RESEND break;}//效驗和錯誤
if(F_END!=receive())
{ERR_NOCNTMAX_RESEND break;}//結束標志錯誤
for
(i=csaddr;i<clen+csaddr;i++)databuf[i-csaddr]=tempbuf[i-csaddr];//正確則保存數據
}//從PC獲得數據寫完畢//開始發送寫回應幀
send(F_ST1);send(F_ST2);send(F_B);send
(F_SPACE);send(F_SPACE);//發送效驗和
send(F_END);//寫回應幀發送完畢
P1_1=!P1_1;
break;
case F_Q://檢測接收放棄幀
csaddr=receive();csum+=csaddr;//csaddr
兼做放棄幀碼標志
if(csaddr!=F_ERR1 && csaddr!=F_ERR2)
{ERR_NOCNTMAX_RESEND break;}
if(csum!=receive())
{ERR_NOCNTMAX_RESEND break;}
if(F_END!=receive())
{ERR_NOCNTMAX_RESEND break;}
communicationing=0;//出錯退出通訊
break;
default:
resend_frame();//要求從發
}
}//忽略 
}//忽略
if(!communicationing)quit_frame();//調用放棄幀,通知PC 放棄通訊
}
/////////////////////////////////////////////////////////////////

//主函數

/////////////////////////////////////////////////////////////////
void main(void){
unsigned char i;
for (i=0;i<FIELD_MAXBUF;i++)databuf[i]=i+0x30;
com_init(38400);
while(1){
/*可以處理非串口任務*/
}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩福利视频导航| 欧美人狂配大交3d怪物一区| 欧美亚洲图片小说| 久久丝袜美腿综合| 日韩激情中文字幕| 色欧美片视频在线观看| www久久久久| 三级影片在线观看欧美日韩一区二区 | 国产精品污网站| 男人的天堂亚洲一区| 欧美日韩一本到| 亚洲美女电影在线| 成人av片在线观看| 中文字幕乱码久久午夜不卡| 久久精工是国产品牌吗| 欧美夫妻性生活| 亚洲一区免费在线观看| 日本韩国欧美三级| 亚洲免费观看高清在线观看| 成人在线视频一区| 国产精品免费视频一区| 国产激情一区二区三区桃花岛亚洲| 91精品国产91热久久久做人人| 亚洲激情自拍偷拍| 91国偷自产一区二区使用方法| 国产精品免费av| 成人少妇影院yyyy| 国产精品久久久久aaaa樱花| 成人动漫一区二区| 中文字幕一区二区三区不卡在线| 成人免费看黄yyy456| 国产精品国产三级国产普通话蜜臀 | 国产日韩欧美不卡在线| 国产另类ts人妖一区二区| 欧美精品一区二区三区视频| 激情综合色综合久久| 26uuu亚洲| 床上的激情91.| 日韩理论片网站| 欧美在线免费观看视频| 日韩电影一区二区三区四区| 91精品久久久久久久99蜜桃| 精品一区二区三区香蕉蜜桃 | 在线免费不卡视频| 偷窥国产亚洲免费视频| 日韩一区二区电影网| 久久国产剧场电影| 国产日韩欧美精品一区| 91一区一区三区| 视频一区免费在线观看| 日韩精品一区二区三区视频播放 | 亚洲丰满少妇videoshd| 91麻豆精品国产91久久久使用方法 | 99久久精品国产导航| 亚洲婷婷综合久久一本伊一区| 欧美视频自拍偷拍| 蜜臀av在线播放一区二区三区| 久久一区二区三区四区| 成人一级视频在线观看| 亚洲精品久久久蜜桃| 日韩欧美精品三级| www.欧美亚洲| 天天综合色天天综合色h| 久久婷婷国产综合国色天香| 91视视频在线观看入口直接观看www | 麻豆精品视频在线观看免费| 国产日韩欧美不卡| 欧美日韩亚洲国产综合| 国产精品99久久久久久宅男| 亚洲综合丝袜美腿| 精品国产一区二区三区久久久蜜月| 成人午夜大片免费观看| 视频一区在线播放| 国产精品色婷婷久久58| 欧美一区二区网站| 99久久精品免费精品国产| 裸体一区二区三区| 有码一区二区三区| 久久青草国产手机看片福利盒子| 在线中文字幕一区二区| 国产精品影音先锋| 天堂精品中文字幕在线| 国产精品国产三级国产专播品爱网| 在线成人午夜影院| 色综合久久久久综合体桃花网| 另类小说图片综合网| 亚洲国产日韩精品| 中文字幕一区三区| 国产亚洲欧美激情| 精品国产91洋老外米糕| 欧美日韩国产片| 在线观看国产一区二区| 不卡在线观看av| 高清不卡在线观看av| 麻豆精品一区二区av白丝在线| 亚洲一区免费在线观看| 尤物在线观看一区| 亚洲欧洲在线观看av| 国产精品免费久久久久| 中文字幕成人av| www欧美成人18+| 欧美电影免费观看高清完整版在线| 欧美日韩亚洲综合一区二区三区| 色婷婷激情综合| 91亚洲男人天堂| 99亚偷拍自图区亚洲| 99久久精品国产网站| 97精品电影院| 色噜噜狠狠成人网p站| 91色综合久久久久婷婷| 一本色道久久综合精品竹菊| 不卡高清视频专区| 99精品一区二区三区| 99国产精品一区| 色婷婷久久久久swag精品| 在线免费观看一区| 欧美三级一区二区| 在线观看日韩国产| 69成人精品免费视频| 日韩欧美专区在线| 精品日产卡一卡二卡麻豆| 久久久久久免费毛片精品| 国产喂奶挤奶一区二区三区 | 亚洲精品在线一区二区| 精品国产乱码久久久久久闺蜜 | 99久久久无码国产精品| 99视频一区二区三区| 欧美性色欧美a在线播放| 69久久99精品久久久久婷婷| 欧美不卡一二三| 国产精品美女一区二区三区| 综合久久久久久| 日日夜夜精品免费视频| 激情六月婷婷久久| av在线不卡观看免费观看| 欧美专区在线观看一区| 欧美一区二区三区白人| 国产欧美一区二区三区在线看蜜臀| 中文字幕制服丝袜一区二区三区| 亚洲制服丝袜av| 美腿丝袜一区二区三区| 成人免费视频视频在线观看免费| 色婷婷激情一区二区三区| 日韩限制级电影在线观看| 中文字幕欧美区| 亚洲国产精品一区二区久久恐怖片| 免费看日韩精品| 不卡的电影网站| 91精品久久久久久久91蜜桃| 国产精品女主播av| 日韩av一级电影| 91视频观看免费| 亚洲精品在线三区| 亚洲制服丝袜av| 国产91丝袜在线18| 欧美一区二区在线免费观看| 成人免费在线视频| 久久激情综合网| 色狠狠综合天天综合综合| 久久综合色一综合色88| 亚洲午夜在线视频| 国产91露脸合集magnet| 欧美日韩精品福利| 国产精品嫩草影院com| 久久精品国产亚洲a| 91国产免费看| 国产精品激情偷乱一区二区∴| 日本强好片久久久久久aaa| 91啪亚洲精品| 日本一区二区视频在线| 久久精品国产精品青草| 欧美日韩国产欧美日美国产精品| 国产精品人妖ts系列视频| 激情偷乱视频一区二区三区| 欧美精品久久久久久久久老牛影院 | 欧美三级电影在线观看| 国产精品麻豆久久久| 国产一区二区三区在线观看免费 | 在线观看亚洲专区| 国产精品亲子乱子伦xxxx裸| 国产美女av一区二区三区| 欧美大片一区二区| 热久久久久久久| 91精品国产色综合久久不卡电影| 一区二区三区高清| 色婷婷狠狠综合| 亚洲乱码国产乱码精品精98午夜| 国产成人精品www牛牛影视| 久久精品欧美日韩精品 | 欧美成人性战久久| 美女脱光内衣内裤视频久久网站| 在线播放国产精品二区一二区四区 | 91精品国产综合久久香蕉麻豆| 亚洲一区二区五区| 欧美日韩免费一区二区三区视频 | 亚洲精品久久久久久国产精华液| 成人不卡免费av| 国产精品国产三级国产三级人妇| 高清不卡在线观看av| 国产精品动漫网站|