固定协议串口程序芯片解密
芯片解密程序功能如下:
(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; //通信过程中字节之间的超时定时器,“喂狗”的对象

芯片解密