📄 project1.c
字号:
/*------------------------------------------------------------------------------
alarm 2004-4-29
------------------------------------------------------------------------------*/
#include "reg52.h"
#include "main.h"
bit P0_flag;
bit flag_ea = 1;
unsigned char data flag_Ysd = 0;
unsigned char idata *boot_flag;
unsigned char idata *data1_status;
unsigned char idata *data2_status;
unsigned char idata *ysd_status;
unsigned char data Led_Cum=0;
unsigned char data P0_sbuf;
unsigned char data Camera;
unsigned char data Cummun;
unsigned char data in_p1;
unsigned char data baut;
unsigned char data P0_buf;
unsigned char data P2_buf;
unsigned char data check_flag;
unsigned char data wdt_count;
unsigned char data R_count=0;
unsigned char data data2;
unsigned char data data1;
unsigned int r_out=1;
unsigned int r_in=0;
unsigned char rbuf [8];
extern dvr_set;
/*--------------------------
MAIN()
----------------------------*/
extern void input(void);
//void delay(void);
extern void output(void);
extern void howell(unsigned char rbuf1[8]);
extern void ysd(unsigned char rbuf1[8]);
extern void se600hb(unsigned char rbuf1[8]);
extern void auto_alarm(void);
extern void alarm2_in(void);
extern void st5008(unsigned char rbuf1[8]);
extern void master2_in(void);
extern void slave(void);
//extern void com_isr(void);
static void com_isr (void) interrupt 4 using 2
{
wdt_count++;
if (RI != 0)
{
RI = 0;
if ((r_in + 1) != r_out)
rbuf [r_in++] = SBUF;
else
{
rbuf[r_in]=SBUF;
flag_ea=0;
r_in=0;
EA=0;
// i=rbuf[0];
}
}
}
void main (void)
{
boot_flag=0xff;
data1_status=0xfe;
data2_status=0xfd;
ysd_status=0xfc;
T0 = 0;
EA =1;
in_p1=~P1;
BU=0;
PCON = 0x00;
SCON = 0x40; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD = 0x21;
if(*boot_flag!=0xaa)
{
*boot_flag=0xaa;
data1=0x00;
data2=0x00;
flag_Ysd=0x00;
}
else
{
data1=*data1_status;
data2=*data2_status;
flag_Ysd=*ysd_status;
}
baut = in_p1 & 0x30; /* TMOD: timer 1, mode 2, 8-bit reload */
check_flag = in_p1 & 0xc0;
Cummun = in_p1 & 0x0f;
if (baut==0x00)
{
TH1 = 0xFD; /* TH1: reload value for 9600 baud */
}
else if (baut==0x30)
{
TH1 = 0xFA; /* TH1: reload value for 4800 baud */
}
else if (baut==0x20)
{
TH1 = 0xF4; /* TH1: reload value for 2400 baud */
}
else
{
TH1 = 0xE8; /* TH1: reload value for 1200 baud */
}
REN = 1;
TH0=0x3c; //timer0 50ms
TL0=0xb0;
TR1= 1; /* TR1: timer 1 run */
ES = 1;
WDTRST=0x1E; //SET the WDT
WDTRST=0xE1;
if(1)
{
auto_alarm();
}
// EA=0;
while(1)
{
*data1_status=data1;
*data2_status=data2;
*ysd_status=flag_Ysd;
Led_Cum++;
if(P0!=0xFF)
BU=1;
else
BU=0;
if(Led_Cum>0xFE)
{
Led_Cum=0;
CODE_LED=~CODE_LED;
}
if(wdt_count<15)
{
WDTRST=0x1E;
WDTRST=0xE1;
}
if(flag_Ysd==0x01 && P0_sbuf!=P0 )
{
wdt_count=0;
P0_sbuf=P0;
if(Cummun==0x00)
alarm2_in();
if(Cummun==0x02)
slave();
wdt_count=0;
}
RT_CON=0;
if(flag_ea) /*wait the interrupt*/
{
EA=1;
input(); //Scan the alarm input
}
else if(rbuf[0]==0xf6) //howell
{
if(r_out!=7)
{
r_out=7;
r_in=1;
flag_ea=1;
}
else if(rbuf[1] != Cummun && Cummun != 0x00) //2004-8-2 added
{
r_out=1;
r_in=0;
flag_ea=1;
}
else
{
howell(rbuf);
r_out=1;
r_in=0;
flag_ea=1;
}
wdt_count=0;
}
else if(rbuf[0]==0x2a) //ysd M卡
{
flag_Ysd=0x01;
if(r_out!=6 && rbuf[1]==0x04)
{
r_in=r_out;
r_out = 6;
//r_in = 1;
// flag_ea = 1;
}
else if(r_out!=8&&rbuf[1]==0x06)
{
r_in = r_out;
r_out = 8;
// flag_ea=1;
}
else if (rbuf[1]!=0x04 && rbuf[1]!=0x06)
{
r_in=r_out;
r_out=2;
}
else
{
ysd(rbuf);
r_out=2;
r_in=0;
//flag_ea=1;
}
flag_ea=1;
wdt_count=0;
}
else if(rbuf[0]==0x5a) //seboohb M卡
{
if(r_out!=5)
{
r_out=5;
r_in=1;
flag_ea=1;
}
else
{
se600hb(rbuf);
r_out=1;
r_in=0;
flag_ea=1;
}
wdt_count=0;
}
else if(rbuf[0]==0xF8) //公司协议
{
if(r_out!=7)
{
r_out=7;
r_in=1;
flag_ea=1;
}
else if(rbuf[1] != Cummun && Cummun != 0x00) //2004-8-2 added
{
r_out=1;
r_in=0;
flag_ea=1;
}
else
{
st5008(rbuf);
r_out=1;
r_in=0;
flag_ea=1;
}
wdt_count=0;
}
else
flag_ea=1;
// output();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -