首页 » 网站推广 » phprecvflag技巧_单片机应用之判读数据帧头来接收一串数据的串口通信轨范代码

phprecvflag技巧_单片机应用之判读数据帧头来接收一串数据的串口通信轨范代码

访客 2024-11-21 0

扫一扫用手机浏览

文章目录 [+]

/程序功能:单片机判读数据帧头来吸收一串数据的串口通信程序 数据帧头:55 AA 55上位机发送:55 AA 55 01 02 LED点亮上位机发送:55 AA 55 02 01 LED熄灭下位机返回:55 AA 55 01 02/55 AA 55 02 01/#include <reg51.h>#include "delay.h"#include "uart.h"sbit LED = P1^0;void uart_service(unsigned char buf);void Timer0Init(void);void main(){Timer0Init();//定时器初始化UartInit();//串口初始化EA = 1;//使能中断总开关//打印提示信息printf("Wait for Serial Communication Test Start.\r\n");printf("Please Send a string of data:\r\n");while(1){//串口吸收做事函数uart_service(recv_buf);}}void uart_service(unsigned char buf){unsigned char recv_move_index;if(recv_flag){recv_flag = 0;start_timer = 0;//关定时器sendString(buf);//返回上位机吸收到的数据,用于测试,实际运用可注释while((recv_cnt >= 5) && (recv_move_index <= recv_cnt - 5)){//帧头判断 55 AA 55 【十六进制】if((buf[recv_move_index+0] == 0x55) && (buf[recv_move_index+1] == 0xAA) && (buf[recv_move_index+2] == 0x55)){if((buf[recv_move_index+3] == 0x1)&& (buf[recv_move_index+4] == 0x2)){LED = 0;//点亮LED}if((buf[recv_move_index+3] == 0x2)&& (buf[recv_move_index+4] == 0x1)){LED = 1;//熄灭LED}break;//跳出循环}recv_move_index++;}recv_cnt = 0;clr_recvbuffer(recv_buf);//打消缓冲buffer}}void Timer0Init(void)//1毫秒@11.0592MHz{TMOD &= 0xF0;//设置定时器模式TMOD |= 0x01;//设置定时器模式TL0 = 0x66;//设置定时初值TH0 = 0xFC;//设置定时初值TF0 = 0;//打消TF0标志ET0 = 1;TR0 = 1;//定时器0开始计时}void timer0_ISR() interrupt 1{TR0 = 0;if(start_timer == 1){recv_timer_cnt++;//1、累加定时韶光计数器if(recv_timer_cnt > MAX_REV_TIME)//2、判断定时韶光是否超过了设定的最大的阈值, //超过则解释等待一段韶光后没有新的数据到,我们 //判断一包数据吸收完毕{recv_timer_cnt = 0;//3、打消定时计数器 处理数据 打消buffer(放到数据处理之后)recv_flag = 1;}}TL0 = 0x66;//设置定时初值TH0 = 0xFC;//设置定时初值TR0 = 1;}

发送55 AA 55 01 02 点亮LED

发送55 AA 55 02 01 熄灭LED

phprecvflag技巧_单片机应用之判读数据帧头来接收一串数据的串口通信轨范代码

帧头发送缺点时,吸收后并不实行干系LED动作

phprecvflag技巧_单片机应用之判读数据帧头来接收一串数据的串口通信轨范代码
(图片来自网络侵删)

大家感兴趣的,可以结合上节的代码,调试下,完成相应的功能,当然协议命令和帧头数据也可以自行调度,可以减少或增加帧头的字节数,也可以选用其他分外字符的帧头,后续的协议命令也可以根据自己的情形去调度,然后修正解析代码完成相应的功能。
感兴趣的可以关注我,后续会连续分享关于自定义通信协议的代码解析的程序代码。

标签:

相关文章

phppdo属性技巧_PHP编程 PDO

PDO 供应了一个数据访问抽象层,这意味着,不管利用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。PDO随PHP5.1发...

网站推广 2024-12-13 阅读0 评论0