📄 door.c
字号:
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#define uchar unsigned char
sbit gate=P2^0; /*0-门开状态;1-门关状态*/
bit direct; /*设置电机正反转标志,0-正转;1-反转*/
sbit moto1=P1^2;
sbit moto2=P1^3; /*10-正转;01-反转*/
uchar astring[];
uchar i;
uchar record;
/*主程序,定义中断源和串口工作方式。*/
void main (void)
{
EA=1; /*开INT0的中断源和决定中断方式
EX0=1;
IT0=1;
TMOD=0x20; /*在11.0592MHz晶振下,设置串行口9600数据传输率,方式3*/
TL1=0xfd;TH1=0xfd;
SCON=0xd8;PCON=0x00; /*串口接收字符RI置位,允许串口接收*/
TR1=1;
for (;;)
{
gate=1; /*依据活动门的状态决定开关按下时活动门的动作*/
if (gate) direct=0;
else direct=1;
}
}
/*外中断0的服务程序,判断电机转动方向*/
void int0svr (void) interrupt 0 using 1
{
if (direct)
{
moto1=0;
moto2=1;
}
else
{
moto1=1;
moto2=0;
}
}
serial () interrupt 4 using 1
{
RI=0; /*软件清楚中断标志位*/
if (SBUF==0x24)
{
record=1;
i=0;
astring[i]=0; /*记录数据字符数量的变量*/
}
if (record==1) /*开始处理数据信息*/
{
astring [i]=SBUF;
i++;
/*判断是否收到字符"*",如果收到则结束记录,开始处理。*/
if (SBUF=='*')
{
astring [i]='\0'; /*给出结束数据字符串的结束符*/
record=0;
if (astring=="#1,CW")
{
moto1=0;
moto2=1;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -