📄 main.c
字号:
#include "reg51.h"
#include "intrins.h"
//引脚定义
sbit CSB = P3^5;
sbit SDI = P3^2;
sbit SDO = P3^3;
sbit SCK = P3^4;
/* 变量定义 */
unsigned char bdata control1=0;
sbit sleep = control1^0;
sbit soft_reset = control1^1;
sbit self_test0 = control1^2;
sbit self_test1 = control1^3;
sbit ee_w = control1^4;
sbit update_image= control1^5;
sbit reset_int = control1^6;
sbit reserved = control1^7;
unsigned char bdata control2=0;
sbit enable_LG = control2^0;
sbit enable_HG = control2^1;
sbit count_LG0 = control2^2;
sbit count_LG1 = control2^3;
sbit count_HG0 = control2^4;
sbit count_HG1 = control2^5;
sbit any_motion = control2^6;
sbit alert = control2^7;
unsigned char bdata control3=0;
sbit wake_up = control3^0;
sbit wake_up_pause0 = control3^1;
sbit wake_up_pause1 = control3^2;
sbit shadow_dis = control3^3;
sbit latch_int = control3^4;
sbit new_data_int = control3^5;
sbit enable_adv_int = control3^6;
sbit SPI4 = control3^7;
unsigned char data chip_ID=0;
unsigned char data LG_thres=0;
unsigned char data LG_dur=0;
unsigned char data HG_thres=0;
unsigned char data HG_dur=0;
unsigned char data any_motion_thres=0;
unsigned char data any_motion_dur=0;
unsigned char data range_bandwidth=0;
unsigned char data command;
unsigned char data comaddr,comdata;
unsigned char data rec_new;
unsigned char data index;
/* 函数声明 */
extern void WriteByte(unsigned char addr, unsigned char dat);
extern unsigned char ReadByte(unsigned char addr);
extern unsigned char ReadID(unsigned char addr);
void Delay30mS(void);
void SystemInit(void);
void SetParameter(void);
void main(void)
{
CSB=1;
SDI=1;
SDO=1;
SCK=1;
Delay30mS();
SystemInit();
rec_new=0;
index=0;
SetParameter();
while(1)
{
if(rec_new==1)
{
rec_new=0;
switch(command)
{
case 0x80:
comdata=ReadByte(comaddr+0x80);
Delay30mS();
index=0;
SBUF=command;
break;
case 0x00:
WriteByte(comaddr,comdata);
Delay30mS();
index=0;
SBUF=command;
break;
}
}
}
}
void Delay30mS(void)
{
/*11.0592MHz晶振下~30mS*/
register unsigned char i,j;
i=100;
j=50;
while(j--)
{
while(i--);
i=100;
};
}
void SystemInit(void)
{
TMOD = 0x20;
TH1 = 0xfd; //9600bits/s
TL1 = 0xfd;
TCON = 0x40;
PCON = 0x00;
SCON = 0x50;
IE = 0x90;
}
void SetParameter(void)
{
SPI4=1;
WriteByte(0x15,control3);
Delay30mS();
ee_w=1;
WriteByte(0x0a,control1);
Delay30mS();
any_motion=1;
WriteByte(0x2b,control2);
Delay30mS();
any_motion_thres=0x05;
WriteByte(0x30,any_motion_thres);
Delay30mS();
any_motion_dur=0x00;
WriteByte(0x31,any_motion_dur);
Delay30mS();
range_bandwidth=0x02;
WriteByte(0x34,range_bandwidth);
Delay30mS();
wake_up=1;
wake_up_pause0=0;
wake_up_pause1=0;
enable_adv_int=1;
SPI4=1;
WriteByte(0x35,control3);
Delay30mS();
ee_w=0;
WriteByte(0x0a,control1);
while(1){};
}
void serialINT(void) interrupt 4
{
if(RI)
{
RI=0;
if(index==0)
command=SBUF;
else if(index==1)
comaddr=SBUF;
else if(index==2)
{
comdata=SBUF;
rec_new=1;
index=0;
}
index++;
}
else if(TI)
{
TI=0;
index++;
if(index==1)
SBUF=comaddr;
else if(index==2)
SBUF=comdata;
else if(index==3)
index=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -