?? 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 + -