wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1373|回復: 1
打印 上一主題 下一主題
收起左側

鴻哥的 固定協議串口程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:299910 發表于 2025-3-15 10:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是鴻哥的固定協議串口接收程序。

鴻哥寬廣的胸懷讓我敬佩不已,能夠拜讀鴻哥的大作是我的幸運,向鴻哥道謝、致敬!



程序功能如下:

(1)在上位機的串口助手里,發送一串數據,控制蜂鳴器發出不同長度的聲音。

(2)波特率 9600,校驗位 NONE(無),數據位 8,停止位 1。

(3)十六進制的數據格式如下:

EB 01 00 00 00 08 XX XX

其中 EB 是數據頭,01 是代表數據類型,00 00 00 08 代表數據長度是 8 個(十進制)。XX XX 代表

一個 unsigned int 的數據,此數據的大小決定了蜂鳴器發出聲音的長度。比如:

讓蜂鳴器鳴叫 1000ms 的時間,發送十六進制的: EB 01 00 00 00 08 03 E8

讓蜂鳴器鳴叫 100ms 的時間,發送十六進制的: EB 01 00 00 00 08 00 64

*/

#include "REG52.H"

#define RECE_TIME_OUT 2000 //通信過程中字節之間的超時時間 2000ms

#define REC_BUFFER_SIZE 20 //接收數據的緩存數組的長度



void usart(void); //串口接收的中斷函數

void T0_time(); //定時器的中斷函數
void UsartTask(void); //串口接收的任務函數,放在主函數內

void SystemInitial(void) ;

void Delay(unsigned long u32DelayTime) ;

void PeripheralInitial(void) ;



void BeepOpen(void);

void BeepClose(void);

void VoiceScan(void);



sbit P3_6=P3^6;

sbit P0_0=P0^0;



volatile unsigned char vGu8BeepTimerFlag=0;

volatile unsigned int vGu16BeepTimerCnt=0;



unsigned char Gu8ReceBuffer[REC_BUFFER_SIZE]; //開辟一片接收數據的緩存

unsigned long Gu32ReceCnt=0; //接收緩存數組的下標

unsigned char Gu8ReceStep=0; //接收中斷函數里的步驟變量

unsigned char Gu8ReceFeedDog=1; //“喂狗”的操作變量。

unsigned char Gu8ReceType=0; //接收的數據類型

unsigned long Gu32ReceDataLength=0; //接收的數據長度

unsigned char Gu8FinishFlag=0; //是否已接收完成一串數據的標志

unsigned long *pu32Data; //用于數據轉換的指針

volatile unsigned char vGu8ReceTimeOutFlag=0;//通信過程中字節之間的超時定時器的開關

volatile unsigned int vGu16ReceTimeOutCnt=0; //通信過程中字節之間的超時定時器,“喂狗”的對象



void main()

{

SystemInitial();

Delay(10000);

PeripheralInitial();

while(1)

{

UsartTask(); //串口接收的任務函數

}

}



void usart(void) interrupt 4 //串口接發的中斷函數,中斷號為 4

{



if(1==RI) //接收完一個字節后引起的中斷

{

RI = 0; //及時清零,避免一直無緣無故的進入中斷。



/* 注釋一:

* 以下 Gu8FinishFlag 變量的用途。

* 此變量一箭雙雕,0 代表正處于接收數據的狀態,1 代表已經接收完畢并且及時通知主函數中的處理函數

* UsartTask()去處理新接收到的一串數據。除此之外,還起到一種“自鎖自保護”的功能,在新數據還

* 沒有被主函數處理完畢的時候,禁止接收其它新的數據,避免新數據覆蓋了尚未處理的數據。

*/

if(0==Gu8FinishFlag) //1 代表已經完成接收了一串新數據,并且禁止接收其它新的數據

{



/* 注釋二:

* 以下 Gu8ReceFeedDog 變量的用途。

* 此變量是用來檢測并且識別通信過程中相鄰的字節之間是否存在超時的情況。

* 如果大家聽說過單片機中的“看門狗”這個概念,那么每接收到一個數據此變量就“置 1”一次,它的

* 作用就是起到及時“喂狗”的作用。每接收到一個數據此變量就“置 1”一次,在主函數里,相關

* 的定時器就會被重新賦值,只要這個定時器能不斷及時的被補充新的“能量”新的值,那么這個定時器

* 就永遠不會變成 0,只要不變成 0 就不會超時。如果兩個字節之間通信時間超過了固定的長度,就意味

* 著此定時器變成了 0,這時就需要把中斷函數里的接收步驟 Gu8Step 及時切換到“接頭暗號”的步驟。

*/

Gu8ReceFeedDog=1; //每接收到一個字節的數據,此標志就置 1 及時更新定時器的值。

switch(Gu8ReceStep)

{

case 0: //接頭暗號的步驟。判斷數據頭的步驟。

Gu8ReceBuffer[0]=SBUF; //直接讀取剛接收完的一個字節的數據。

if(0xeb==Gu8ReceBuffer[0]) //等于數據頭 0xeb,接頭暗號吻合。

{

Gu32ReceCnt=1; //接收緩存的下標

Gu8ReceStep=1; //切換到下一個步驟,接收其它有效的數據

}

break;



case 1: //數據類型和長度

Gu8ReceBuffer[Gu32ReceCnt]=SBUF; //直接讀取剛接收完的一個字節的數據。

Gu32ReceCnt++; //每接收一個字節,數組下標都自加 1,為接收下一個數據做準備

if(Gu32ReceCnt>=6) //前 6 個數據。接收完了“數據類型”和“數據長度”。

{

Gu8ReceType=Gu8ReceBuffer[1]; //提取“數據類型”

//以下的數據轉換,在第 62 節講解過的指針法

pu32Data=(unsigned long *)&Gu8ReceBuffer[2]; //數據轉換

Gu32ReceDataLength=*pu32Data; //提取“數據長度”

if(Gu32ReceCnt>=Gu32ReceDataLength) //靠“數據長度”來判斷是否完成



{

Gu8FinishFlag=1; //接收完成標志“置 1”,通知主函數處理。

Gu8ReceStep=0; //及時切換回接頭暗號的步驟

}

else //如果還沒結束,繼續切換到下一個步驟,接收“其它數據”

{

Gu8ReceStep=2; //切換到下一個步驟

}

}

break;



case 2: //其它數據

Gu8ReceBuffer[Gu32ReceCnt]=SBUF; //直接讀取剛接收完的一個字節的數據。

Gu32ReceCnt++; //每接收一個字節,數組下標都自加 1,為接收下一個數據做準備



//靠“數據長度”來判斷是否完成。也不允許超過數組的最大緩存的長度

if(Gu32ReceCnt>=Gu32ReceDataLength||Gu32ReceCnt>=REC_BUFFER_SIZE)

{

Gu8FinishFlag=1; //接收完成標志“置 1”,通知主函數處理。

Gu8ReceStep=0; //及時切換回接頭暗號的步驟

}

break;

}

}

}

else //發送數據引起的中斷

{

TI = 0; //及時清除發送中斷的標志,避免一直無緣無故的進入中斷。

//以下可以添加一個全局變量的標志位的相關代碼,通知主函數已經發送完一個字節的數據了。

}

}



void UsartTask(void) //串口接收的任務函數,放在主函數內

{

static unsigned int *pSu16Data; //數據轉換的指針

static unsigned int Su16Data; //轉換后的數據



if(1==Gu8ReceFeedDog) //每被“喂一次狗”,就及時更新一次“超時檢測的定時器”的初值

{

Gu8ReceFeedDog=0;



vGu8ReceTimeOutFlag=0;

vGu16ReceTimeOutCnt=RECE_TIME_OUT;//更新一次“超時檢測的定時器”的初值

vGu8ReceTimeOutFlag=1;



}

else if(Gu8ReceStep>0&&0==vGu16ReceTimeOutCnt) //超時,并且步驟不在接頭暗號的步驟

{

Gu8ReceStep=0; //串口接收數據的中斷函數及時切換回接頭暗號的步驟

}



if(1==Gu8FinishFlag) //1 代表已經接收完畢一串新的數據,需要馬上去處理

{

switch(Gu8ReceType) //接收到的數據類型

{

case 0x01: //驅動蜂鳴器

//以下的數據轉換,在第 62 節講解過的指針法

pSu16Data=(unsigned int *)&Gu8ReceBuffer[6]; //數據轉換。

Su16Data=*pSu16Data; //提取“蜂鳴器聲音的長度”



vGu8BeepTimerFlag=0;

vGu16BeepTimerCnt=Su16Data; //讓蜂鳴器鳴叫

vGu8BeepTimerFlag=1;

break;

}



Gu8FinishFlag=0; //上面處理完數據再清零標志,為下一次接收新的數據做準備

}

}



void T0_time() interrupt 1

{

VoiceScan();



if(1==vGu8ReceTimeOutFlag&&vGu16ReceTimeOutCnt>0) //通信過程中字節之間的超時定時器

{

vGu16ReceTimeOutCnt--;

}



TH0=0xfc;

TL0=0x66;

}



void SystemInitial(void)

{


unsigned char u8_TMOD_Temp=0;

//以下是定時器 0 的中斷的配置

TMOD=0x01;

TH0=0xfc;

TL0=0x66;

EA=1;

ET0=1;

TR0=1;



//以下是串口接收中斷的配置

//串口的波特率與內置的定時器 1 直接相關,因此配置此定時器 1 就等效于配置波特率。

u8_TMOD_Temp=0x20; //即將把定時器 1 設置為:工作方式 2,初值自動重裝的 8 位定時器。

TMOD=TMOD&0x0f; //此寄存器低 4 位是跟定時器 0 相關,高 4 位是跟定時器 1 相關。先清零定時器 1。

TMOD=TMOD|u8_TMOD_Temp; //把高 4 位的定時器 1 填入 0x2,低 4 位的定時器 0 保持不變。

TH1=256-(11059200L/12/32/9600); //波特率為 9600。11059200 代表晶振 11.0592MHz,

TL1=256-(11059200L/12/32/9600); //L 代表 long 的長類型數據。根據芯片手冊提供的計算公式。

TR1=1; //開啟定時器 1



SM0=0;

SM1=1; //SM0 與 SM1 的設置:選擇 10 位異步通信,波特率根據定時器 1 可變

REN=1; //允許串口接收數據



//為了保證串口中斷接收的數據不丟失,必須設置 IP = 0x10,相當于把串口中斷設置為最高優先級,

//這個時候,串口中斷可以打斷任何其他的中斷服務函數實現嵌套,

IP =0x10; //把串口中斷設置為最高優先級,必須的。



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

EA=1; //允許總中斷

}



void Delay(unsigned long u32DelayTime)

{

for(;u32DelayTime>0;u32DelayTime--);

}



void PeripheralInitial(void)

{


}

void BeepOpen(void)

{

P3_6=1;

P0_0=0;


}

void BeepClose(void)

{

P3_6=0;

P0_0=1;

}


void VoiceScan(void)

{

static unsigned char Su8Lock=0;

if(1==vGu8BeepTimerFlag&&vGu16BeepTimerCnt>0)

{

if(0==Su8Lock)

{

Su8Lock=1;

BeepOpen();

}

else

{

vGu16BeepTimerCnt--;

if(0==vGu16BeepTimerCnt)

{

Su8Lock=0;

BeepClose();

}

}

}

}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:462629 發表于 2025-5-6 10:34 | 只看該作者
08 是怎么計算出來的啊,應該不是xx xx的吧
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
av在线播放av| 美女视频一区免费观看| 高潮白浆视频| 日本高清视频免费看| 永久免费黄色片| 欧美成ee人免费视频| 欧美国产一区在线| 亚洲啪啪91| 成人午夜大片| 99thz桃花论族在线播放| 国产免播放器视频| 久草av在线播放| 五月天婷婷导航| 国产精品成人一区二区三区电影毛片 | 国产成人h网站| 欧美成人自拍| 91精品店在线| 麻豆传媒视频在线观看| 成人狠狠色综合| 新天堂中文资源官网在线观看| 免费一级特黄特色大片| 色哟哟视频在线| 中文字幕视频在线免费欧美日韩综合在线看| 久久九九99视频| 日韩国产在线观看一区| 精品国产一区一区二区三亚瑟| 成人小电影网站| av亚洲在线| 最新av中文字幕| 色视频免费在线| 最近更新在线中文字幕一页| 在线免费观看一级片| 免费国产羞羞网站美图| 91超薄肉色丝袜交足高跟凉鞋| 免费看又黄又无码的网站| 九色综合日本| 成人免费大片黄在线播放| 久久国产精品影片| 亚洲精品在线不卡| 日韩欧美色综合网站| 色综合久久天天| 一区二区三区久久| 国产精品视频你懂的| 国产99精品视频| 日韩国产欧美在线观看| 伊人久久亚洲热| 99视频精品全国免费| 丝袜美腿综合| 国产精品对白| 久久久精品区| 亚洲精品无播放器在线播放| 少妇淫片在线影院| 天堂8中文在线| 免费成人黄色| 91ph在线| av电影在线播放高清免费观看| 蜜臀在线观看| 日本aⅴ中文| 国产二区三区四区| 最近中文字幕2019第二页视频 | 精品久久国产一区| 日本一区免费网站| 麻豆蜜桃在线观看| 美女高潮在线观看| 国内激情视频在线观看| gogo久久| 深夜福利视频一区二区| 不卡av播放| 亚洲成人av观看| 深夜视频一区二区| 亚洲资源在线| 欧美中文高清| 精品亚洲自拍| 国产欧美日韩| 我不卡伦不卡影院| 国产一区视频在线观看免费| 自拍偷拍欧美| 夜夜嗨网站十八久久| 亚洲一区中文| 久久精品久久久精品美女| 精品在线观看视频| 成人激情小说乱人伦| 成人午夜私人影院| 久久久久久综合| 国产精品夫妻自拍| 亚洲成人av福利| 欧洲一区在线电影| 日韩限制级电影在线观看| 日韩电视剧免费观看网站| 在线电影av不卡网址| 欧美肥婆姓交大片| 国产精品免费久久久久久| 91视频国产一区| 欧美一区二区三区在线免费观看 | 国产精品伦理一区| 日韩有码第一页| 四虎影视最新网站入口在线观看| 青春娱乐分类视频精品2动漫| 78国产伦精品一区二区三区| 0608新视觉| 一本大道香蕉久在线播放29| 日本在线免费看| 欧美黑人粗大| 三级精品视频| 悠悠资源网久久精品| 韩国v欧美v日本v亚洲v| 久久久青草青青国产亚洲免观| 亚洲美女淫视频| 精品视频一区 二区 三区| 国产网站欧美日韩免费精品在线观看| 久久精品人人做人人爽| 国产精品视频白浆免费视频| 久久伊人资源站| 日韩成人手机在线| 亚洲热在线视频| 欧美爱爱免费视频| 国产欧美综合视频 | 国产精品日本一区二区不卡视频| 清纯唯美亚洲经典中文字幕| 欧美大片一区| 岛国一区二区三区| 亚洲成av人影院在线观看网| 欧美一区二区三区在线电影| 日韩在线视频国产| 国产在线精品成人一区二区三区| 日韩欧美第二区在线观看| 欧美成人一区二区在线观看| 国产精品300页| 国产99免费视频| 欧美人与动性xxxxbbbb| 福利网址在线| 国产精品高清乱码在线观看| 欧美亚洲国产精品久久| 久久国产精品99久久人人澡| 亚洲婷婷综合色高清在线| 欧美一区二区三区色| 欧美激情一级欧美精品| 久久99精品久久久久久久久久| 18岁视频在线观看| 99久久99久久精品国产| 精品久久无码中文字幕| 狠狠色丁香婷婷| 成人无遮挡免费网站视频在线观看| 欧美久久一区二区三区| 亚洲视频www| 国产日产欧美精品一区二区三区| 欧美性色综合网| 久热在线中文字幕色999舞| 国产精品一区二区在线观看| 成人在线观看a| 国产免费a级片| 色天使综合视频| 国产情侣一区在线| 韩日精品在线| 国产日韩成人精品| 日韩一级大片在线观看| 久久久人成影片一区二区三区观看 | 亚洲视频在线免费播放| 一个人看的www免费观看视频| 国产在线观看精品一区| 8848成人影院| 精品一区二区三区在线视频| 精品久久久久久| 日韩视频在线免费| wwwxx欧美| 热久久精品免费视频| 国产精品变态另类虐交| 欧美一区二区三区久久综合| 成人性爱视频在线观看| 久久99精品久久久久久欧洲站| 日韩中文字幕麻豆| 亚洲综合色婷婷| 亚洲精品一区在线观看香蕉| 岛国视频一区免费观看| 一区二区三区韩国| 国产成人无码av| eeuss性xxxxxx电影| 黄色的网站在线观看| 夜色资源网av在先锋网站观看| 亚洲搞黄视频| 国产一区二区三区91| 成人在线综合网站| 欧美成人官网二区| 国产日韩综合一区二区性色av| 啊啊啊国产视频| 国产一区二区视频免费观看| 永久www成人看片| 国产亚洲成av人片在线观黄桃| 粉嫩av亚洲一区二区图片| 亚洲精品一线二线三线| 国产免费高清一区| 无码人妻丰满熟妇啪啪欧美| 欧美xxxx性xxxxx高清视频| 久久99亚洲网美利坚合众国| 亚洲精品精选| 欧美午夜精品一区二区蜜桃| 亚洲伊人成综合成人网| 在线看黄色的网站| 色综合久久五月天| 男人久久天堂| 久久国产麻豆精品| 亚洲国产免费av| 特级西西444www大精品视频| 欧美黄色aaa| 在线免费观看av电影| 日韩一区二区三区精品视频第3页| 成人免费视频caoporn| 亚洲男人av在线| 国产又粗又大又爽的视频| 伊人久久综合视频| 中文字幕在线视频网| 日韩高清欧美| 五月婷婷激情综合网| 国产精品亚洲一区二区三区| 成年女人免费视频| 欧美videos巨大粗暴| 日韩精品99| 国产精品亚洲专一区二区三区| 日韩电影大全免费观看2023年上| 亚洲一卡二卡三卡| 国产成人自拍视频在线| 天堂av中文在线资源库| 欧美不卡视频| 欧美日本免费一区二区三区| 免费一区二区三区在在线视频| 青青操视频在线播放| 一级毛片免费视频| 首页国产精品| 欧美色区777第一页| 日本亚洲欧洲精品| 亚洲黄色激情视频| 成人影视在线播放| 男女男精品网站| 最近2019年日本中文免费字幕| 丁香啪啪综合成人亚洲| 手机在线观看毛片| av激情成人网| 国产精品成人免费 | 久久av一区二区三| 日日夜夜人人| 一区二区美女| 狠狠色噜噜狠狠狠狠97| 国产精品久久久久久久久久直播| 久久精品国产亚洲AV成人婷婷| 成人av网页| 91精品国产乱码久久久久久久| 大桥未久av一区二区三区| 久久久久久国产精品一区| 全部毛片永久免费看| 麻豆导航在线观看| 日av在线不卡| 欧美日韩aaaa| 欧美性xxxx图片| 轻轻操 在线观看| 欧美freesex8一10精品| 欧美性猛交xxxx富婆弯腰| 色一情一区二区三区四区| 欧美在线观看不卡| 菠萝菠萝蜜在线观看| 久久国产成人午夜av影院| 欧美日本国产在线| 亚洲成人一区二区三区| 日本三级小视频| 免费av不卡| 97se亚洲国产综合自在线不卡| 国产精品1234| 久草视频中文在线| 成人在线播放| 国产精品久久网站| 久久精彩视频| 国产av无码专区亚洲av麻豆| 妞干网免费视频| 日韩国产成人无码av毛片| 国产欧美久久久久久| 超级砰砰砰97免费观看最新一期| 涩涩视频网站| 欧美激情综合| 亚洲欧美国产精品久久久久久久| 久久出品必属精品| av毛片免费看| 青娱乐精品在线视频| 韩国三级电影久久久久久| 国产wwwwxxxx| 在线观看小视频| 国产精品不卡在线| 蜜桃久久精品乱码一区二区 | 亚洲性线免费观看视频成熟| 国产资源中文字幕| 91污色多多| 久久99精品国产麻豆不卡| 全球成人中文在线| 日产精品久久久久| 日韩美女在线看免费观看| 无码av中文一区二区三区桃花岛| 久久香蕉视频网站| 日产乱码一卡二卡三免费| 欧美99在线视频观看| 久久天天躁狠狠躁夜夜躁2014 | 中文字幕免费不卡在线| 欧洲成人一区二区| 亚洲国产图片| 欧美aa国产视频| 91高清免费视频| 亚洲自拍一区在线观看| 国产69精品久久久久9999人| 精品视频在线看| 先锋资源在线视频| 亚洲最大黄色| 日本一区二区三区四区| 亚洲一区免费看| 免费看片黄色| 韩国精品久久久| 精品一区二区三区自拍图片区| 最近更新在线中文字幕一页| 影音先锋中文字幕一区| 欧美中文在线观看国产| 亚洲天堂视频在线| 国产一区二区三区日韩精品| 最新日韩中文字幕| 日本免费在线播放| 国产精品美女久久久久| 亚洲福利在线观看| 阿v天堂2014| 亚洲一二三四| 日韩一级免费观看| 日本成人免费视频| 国模一区二区| 精品国产乱码久久久久久牛牛| 不卡一区二区在线观看| 成年人在线网站| 91精品国产aⅴ一区二区| 玖草视频在线观看| 在线观看特色大片免费视频| 欧美理论片在线| 午夜理伦三级做爰电影| 老司机深夜福利在线观看| 欧美日韩二区三区| 国产一区二区三区四区五区六区 | 天天av天天爽| 性欧美videos另类喷潮| 91亚洲精华国产精华| 四虎免费视频| 久久午夜精品| 久久99国产精品99久久| 免费激情小视频| 久久综合色8888| 久久精品免费一区二区| 欧美一区二区视频| 狠狠色综合日日| 亚洲精品第一区二区三区| 国产无遮挡又黄又爽免费软件| 中国色在线观看另类| 男人天堂网视频| 影音先锋日韩av| 韩国av一区二区三区四区| 手机在线观看国产精品| 亚洲四虎av| 亚洲精品久久久蜜桃| 亚洲区 欧美区| 成人性教育av免费网址| 亚洲欧美日韩国产中文| 日日夜夜操视频| 亚洲夜间福利| 激情一区二区三区| eeuss第一页| 亚洲你懂的在线视频| 91精品又粗又猛又爽| 欧美色网一区| 亚洲人成网站在线播| 久久久久久av无码免费看大片| 99久久99热这里只有精品| 91夜夜未满十八勿入爽爽影院| 91九色蝌蚪| 国产亚洲欧美一区在线观看| 亚洲男人天堂色| yellow字幕网在线| 日韩精品免费在线视频观看| 日日摸天天添天天添破| 伊人久久大香线蕉综合热线| 日韩精品一区二区三区外面 | 中文字幕av无码一区二区三区| 亚洲盗摄视频| 疯狂蹂躏欧美一区二区精品| 日本特黄在线观看| 欧美美女被草| 欧美大片免费观看| 一区二区三区免费视频播放器| 久久久xxx| eeuss中文| 国产三区在线观看| 精品性高朝久久久久久久| 无码久久精品国产亚洲av影片| 欧美午夜不卡| 欧美日韩精品久久久免费观看| 未来日记在线观看| 欧美日韩精品欧美日韩精品一综合| 国产一级在线免费观看| 亚洲激情自拍| 在线视频91| 国产精品久久麻豆|