#include
#define uchar unsigned char
#define uint unsigned int
#define TIME_COUNT 11//22.1184MHz晶振10us定时中断
#define FOSC 11059200L//22118400L
sfr P2M1=0x95;
sfr P2M0=0x96;
sbit sb=P3^2;//开门信号
sbit sq1=P3^3;//开门限位
sbit sq2=P3^4;//关门限位
sbit s4=P3^5;//关门防夹
sbit x0=P1^0; //延时关门时间选择
sbit x1=P1^1;
sbit x2=P1^2;
sbit x3=P1^3;
sbit x4=P1^4;
sbit x5=P1^5;
sbit x6=P1^6;
sbit x7=P1^7;//延时关门时间选择
sbit kai=P2^1;//开门(正转)
sbit guan=P2^0;//关门(反转)
uchar aa[3],bb; //串口收到数据寄存器
uchar z0,z1,z2,z3,z4,z5,z6,z7,z8,z9,z10; //时间继电器
uint t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; //时间继电器
uint num1,n,n1,n2,n3,n4,n5,n6,n7,n8;//延时关门设置
uchar a=0,m;//门当前状态
void delayms(uint xms);
void kaimen();
void guanmen();
void delayms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=330;j>0;j--);
}
void init()
{
P2=0; P2M0=0xff;P2M1=0;
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;ET0=1;TR0=1;
if(x0==0){delayms(5);if(x0==0)n1=20;} if(x0==1){delayms(5);if(x0==