芯片破解单片机通过蓝牙将停车位信息发送到手机APP
芯片破解单片机源程序如下:
- /********************************************************************
- * 文件名 : 串口接收试验.c
- * 描述 : 该文件实现通过单片机从电脑接收数据。
- 该试验使用的晶振是11.0592
- ***********************************************************************/
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar uart_receive_buffer[30]; //从串口接收的数据
- uchar uart_receive_number=0; //指示串口接收个数
- /********************************************************************
- * 名称 : Delay_1ms()
- * 功能 : 延时子程序,延时时间为 1ms
- * x * 输入 : x (延时一毫秒的个数)
- * 输出 : 无
- ***********************************************************************/
- void Delay_1ms(uint i)//1ms延时
- {
- uchar x,j;
-
- for(j=0;j<i;j++)
- for(x=0;x<=148;x++);
- }
- /********************************************************************
- * 名称 : Com_Int()
- * 功能 : 串口中断子函数
- * 输入 : 无 * 输出 : 无
- ***********************************************************************/
- void Com_Int(void) interrupt 4
- {
- static uchar i = 7; //定义为静态变量,当重新进入这个子函数时 i 的值不会发生改变
-
- EA = 0;
- if(RI == 1){ //当硬件接收到一个数据时,RI会置位
- RI = 0;
- uart_receive_buffer[uart_receive_number] = SBUF; //这里减去48是因为从电脑中发送过来的数据是ASCII码。
- uart_receive_number++;
- }
- EA = 1;
- }
- /********************************************************************
- * 名称 : Com_Init()
- * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中断
- * 输入 : 无
- * 输出 : 无
- ***********************************************************************/
- void Com_Init(void) {
- TMOD = 0x20;
- PCON = 0x00;
- SCON = 0x50;
- TH1 = 0xFd; //设置波特率 9600
- TL1 = 0xFd;
- TR1 = 1; //启动定时器1
- ES = 1; //开串口中断
- EA = 1; //开总中断
- }
- /********************************************************************
- * 名称 : Main()
- * 功能 : 主函数
- * 输入 : 无
- * 输出 : 无
- ***********************************************************************/
- void Main()
- {
- uchar uart_receive_number_old=0;
-
- Com_Init();
-
- while(1){
-
- if(uart_receive_number_old!=uart_receive_number){
- uart_receive_number_old=uart_receive_number;
- }
-
- //如果单片机接收来自HC-xx模块不少于1字节的串口数据,一定要加延时后再判断是否
- //还有串口数据在发送,这样才能完整的接收一帧串口数据
- Delay_1ms(30);
-
- //一段时间之后仍然相等,表示上位机发来的一串数据结束
- if(uart_receive_number_old==uart_receive_number){
- if(uart_receive_number)
- break;
- }
- }
-
- if(uart_receive_number){
- //串口有数据时,该做些什么就做什么吧
- }
-
- while(1);
- }

芯片解密