#include "stc12c5a60s2.h"
#include "init.h"
#include "uart.h"
#include "delay.h"
#include "ad.h"
#include "flash.h"
#include "iic.h"
//串口数据的格式
#define HEAD 0XF1 //帧头
#define VERSION 0X15 //发送版本
#define YUAN 0XB1 //源
#define FH_VERSION 0XB1 //接收版本
#define FH_YUAN 0XBF //接收版本
#define ZI 0XD1 // 控制字
#define LEN1 0X28 //24 =4+20+1
extern uchar i;
uchar uart1_flag=0;
//数组定义
uchar xdata fs_buf[46];
uchar xdata rbuf[]={
0x7E,0x80, 0x00, 0x01,
0x00, 0x00, 0x80, 0xAA,
0x00, 0x01, 0x001, 0x00,
0xDE, 0x62, 0x7E};
void receive_deal();
void uart_js();
void uart_js();
sbit jdq1=P0^0;
sbit jdq2=P0^1;
void main()
{
Time_init(); //定时器初始化
PCA_init(); //pca端口初始化
InitUart();
jdq1=jdq2=0;
EA=1;
ES=1;
uart1_flag=0;
while(1)
{
mDelay(100000);
jdq1=~jdq1;
}
}
void uart_js() interrupt 4 //RI==1时执行串口中断
{
static unsigned char count;
uchar xdata receive1_xorg=0;
if(RI==1)
{
RI=0;
rbuf[count]=SBUF; //保存数据
if(uart1_flag!=0)
{
count=0;
return;
}
count++;
if((count==1)&&(rbuf[0]!=0x7E))//0 0xf1
{
count=0;
}
else if((count==2)&&(rbuf[1]!=0x80)) //1 0xb1
{
count=0;
}
else if((count==3)&&(rbuf[2]!=0x00)) //1 0xbf
{
count=0;
}
else if((count==4)&&(rbuf[3]!=0x01)) //rbuf[3]
{
count=0;
}
else if((count==5)&&(rbuf[4]!=0x00)) //rbuf[4]
{
count=0;
}
else if(count==6&&rbuf[5]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4])) //count=6 实际接收6个字节 0-5 rbuf[5]
{
count=0 ;
uart1_flag=rbuf[3];
ES=0;
}
else if(count==7&&(rbuf[6]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]^rbuf[5]))) //count=7 实际接收7个字节 0-6
{
count=0 ;
uart1_flag=rbuf[3];
ES=0;
}
else if(count==8&&(rbuf[7]==(rbuf[0]^rbuf[1]^rbuf[2]^rbuf[3]^rbuf[4]^rbuf[5]^rbuf[6])))
{
count=0 ;
uart1_flag=1;
uart1_flag=rbuf[3];
ES=0;
}
else if(count>8)
{
count=0;
}
}
}
|