?? copy of main.c
字號:
#include "reg52.h"
#define uchar unsigned char
#define unit unsigned int
uchar Data[13];
uchar Databak[13];
uchar sData[13];
uchar number,flag;
sfr WDT=0XE1;
sbit LED=P1^7;
sbit LED1=P1^6;
sbit LED2=P1^5;
bit cansend=0,issend=0,whilerec=0,whilesend=0;
/*********MCU初始化**************/
void MCU_Init(void)
{
TMOD = 0x21;
TH1 = 250;
TL1 = 250;
SCON = 0x50;
PCON = 0x80;
EA = 1;
ES = 1;
TR1=1;
}
/***********串口發(fā)送一個字節(jié)****************/
void send(uchar S_Data)
{
SBUF = S_Data;
while(TI == 0);
TI =0;
}
/*************接收中斷********************/
void Serial() interrupt 4 using 2
{
if(RI == 1)
{
LED2=0;
Data[number++]= SBUF;
Databak[number++]= SBUF;
RI = 0;
flag++;
}
}
/************生成校驗碼子程序***********/
void XiaoYan(uchar *a)
{
uchar i, all=0;
for(i=0;i<12;i++)
all=all+a[i];
all=~all;
all=all-1;
a[i]=all;
}
/************接收數(shù)據(jù)校驗子程序***********/
unsigned int RXiaoYan(uchar *a)
{
uchar rets=0,i, all=0;
for(i=0;i<12;i++)
all=all+a[i];
all=~all;
all=all-1;
if(a[i]==all)
rets=1;
return rets;
}
/****************串口發(fā)送子程序****************/
void sends(uchar *b )
{
uchar count,i;
cansend=0;
count=13;
LED1=0;
for(i=0;i<count;i++)
send(b[i]);
}
//-------------等待接收----------------------
void whileRec(void)
{
}
//-------------等待發(fā)送----------------------
void whileSend(void)
{
}
//-------------WndProc-----------------------
void WndProc(void)
{
}
/**************主程序***********************/
void main(void)
{
unsigned int ld=0;
unsigned char Cmd=0;
MCU_Init();
while(1)
{
LED1=1;
LED2=1;
WDT=0X34;
ld++;
if(ld>3000)
{
ld=0;
LED=!LED;
}
if(flag==12)
{
flag=0;
number=0;
Cmd=0;
Cmd=Data[0];
if(Cmd>0xA0)//接到的是命令偵
{
if(RXiaoYan(Data))
{
switch (Cmd)
{
case 0xA1:
break;
case 0xA2:
break;
case 0xAC://應答ok
cansend=1;
break;
case 0xAB://需要重發(fā)
sends(Databak);
break;
default:
break;
}
}
else
{
XiaoYan(sData);
sends(Data);
}
}
else
{
issend=1;
XiaoYan(Data);
sends(Data);
issend=0;
cansend=0;
}
//break;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -