📄 被动式.c
字号:
#include <reg51.H>
unsigned char bdata dat;
unsigned char bdata biaoz=0;
sbit b7=biaoz^7;
sbit sd7=dat^7;
sbit sd6=dat^6;
sbit sd5=dat^5;
sbit sd4=dat^4;
sbit sd3=dat^3;
sbit sd2=dat^2;
sbit p_7=P3^7;
sbit p_6=P3^6;
sbit p_5=P3^5;
sbit p_4=P3^4;
sbit p_3=P3^3;
sbit p_2=P3^2;
sfr WDTRST = 0xA6;
void delay(unsigned char a);
//void delay1(unsigned long a);
void chu_shi();
void CLRWDT();
unsigned char n=0;
unsigned char data RAM[3];
///////////////////////////////////////////////////
/**********************主程序*****************/
void main ()
{
chu_shi();
while(1)
{
CLRWDT();//喂狗
if(b7==1)//缓冲区有数据
{
b7=0;
ES=0;//不允许串口中断
EA=0;//关总中断
switch(RAM[0])
{
case 0:
switch(RAM[1])
{
case 0:
P0=~RAM[2];
break;
case 1:
SBUF=P0;
while(!TI);
TI=0;
break;
}
break;
case 1:
switch(RAM[1])
{
case 0:
P1=RAM[2];
break;
case 1:
SBUF=P1;
while(!TI);
TI=0;
break;
}
break;
case 2:
switch(RAM[1])
{
case 0:
P2=RAM[2];
break;
case 1:
SBUF=P2;
while(!TI);
TI=0;
break;
}
break;
case 3:
switch(RAM[1])
{
case 0:
p_7=sd7;
p_6=sd6;
p_5=sd5;
p_4=sd4;
p_3=sd3;
p_2=sd2;
break;
case 1:
SBUF=P3;
while(!TI);
TI=0;
break;
}
break;
}
ES=1;//允许串口中断
EA=1;//开总中断
}
else
delay(10);
}
}
void delay(unsigned char a)
{
unsigned char b;
for(b=a;b>0;b--)
{
CLRWDT();//喂狗
}
}
/*
void delay1(unsigned long a)
{
unsigned long b;
for(b=a;b>0;b--)
{
CLRWDT();//喂狗
}
}
*/
void CLRWDT()
{
WDTRST=0x1E;
WDTRST=0xE1;//看门狗
}
///////////////////////////////////////////////////
/**********************系统初始化*****************/
void chu_shi(void)
{
CLRWDT();//初始化看门狗
TMOD=0X20; //定时器1方式2
//PCON=0X80;//波特率*2
TH1=0XFD;//波特率9600
TL1=0XFD;
SCON=0X50;//串口方式允许接受
ES=1;//允许串口中断
EA=1;//开总中断
TR1=1;//启动定时器1
}
//////////////////////////////////////////////////
void uart1()interrupt 4 using 1
{
unsigned char temp;
CLRWDT();//喂狗
if(RI==1)//是接受中断
{
RI=0;
temp=SBUF;//接受数据
RAM[n]=temp;//保存数据
//SBUF=temp;//返回数据
n=n+1;
if(n==3)
{
n=0;
b7=1;
dat=RAM[2];
CLRWDT();//喂狗
}
}
else
TI=0;//是发射中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -