📄 电梯.c
字号:
#include <reg51.h>
#include <absacc.h>
#include <stdio.h>
bit bdata up1;
bit bdata up2;
bit bdata up3;
bit bdata up4;
bit bdata up5;
bit bdata down2;
bit bdata down3;
bit bdata down4;
bit bdata down5;
bit bdata down6;
bit bdata to1;
bit bdata to2;
bit bdata to3;
bit bdata to4;
bit bdata to5;
bit bdata to6;
bit bdata up;
unsigned char key;
unsigned char k;
unsigned long time;
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;
sbit P3_7 = P3^7;
sbit P3_6 = P3^6;
sbit P3_5 = P3^5;
sbit P3_4 = P3^4;
sbit P3_3 = P3^3;
void delay();
void delay2();
void main(void)
{
P0_0=1;
P0_1=1;
P0_2=1;
P0_3=1;
P0_4=1;
P0_5=1;
P0_6=1;
P0_7=1;
P3_3=1;
P3_4=1;
P3_5=1;
P3_6=1;
P3_7=1;
up1=0;
up2=0;
up3=0;
up4=0;
up5=0;
down2=0;
down3=0;
down4=0;
down5=0;
down6=0;
to1=0;
to2=0;
to3=0;
to4=0;
to5=0;
to6=0;
up=1;
TMOD=2;
TH0=0;
TL0=0;
TR0=1;
PT0=1;
EA=1;
ET0=1;
g1: P2=0x01;
delay2();
g12: if(up1||to1==1)
{
delay();
up1=0;
P3_7=1;
to1=0;
}
if(down2||down3||down4||down5||down6||up2||up3||up4||up5||to2||to3||to4||to5||to6==1)
{
up=1;
P0_1=0;
P0_2=1;
delay2();
goto g2;
}
else
{
P0_1=1;
P0_2=1;
goto g12;
}
g2: P2=0x02;
delay2();
g22: if(up==1)
{
if(up2||to2==1)
{
delay();
to2=0;
up2=0;
P3_6=1;
}
if(down3||down4||down5||down6||up3||up4||up5||to3||to4||to5||to6==1)
{
P0_2=1;
P0_1=0;
delay2();
goto g3;
}
else
{
if(down2==1)
{
delay();
up=0;
P0_2=0;
P0_1=1;
down2=0;
P0_7=1;
}
if(up1||to1==1)
{
up=0;
P0_2=0;
P0_1=1;
delay2();
goto g1;
}
else
{
P0_1=1;
P0_2=1;
goto g22;
}
}
}
else
{
if(down2||to2==1)
{
delay();
to2=0;
down2=0;
P0_7=1;
}
if(up1||to1==1)
{
P0_2=0;
P0_1=1;
delay2();
goto g1;
}
else
{
if(up2==1)
{
delay();
up=1;
P0_2=1;
P0_1=0;
up2=0;
P3_6=1;
}
if(down3||down4||down5||down6||up3||up4||up5||to3||to4||to5||to6==1)
{
up=1;
P0_2=1;
P0_1=0;
delay2();
goto g3;
}
else
{
P0_1=1;
P0_2=1;
goto g22;
}
}
}
g3: P2=0x03;
delay2();
g32: if(up==1)
{
if(up3||to3==1)
{
delay();
to3=0;
up3=0;
P3_5=1;
}
if(down4||down5||down6||up4||up5||to4||to5||to6==1)
{
P0_2=1;
P0_1=0;
delay2();
goto g4;
}
else
{
if(down3==1)
{
delay();
up=0;
P0_2=0;
P0_1=1;
down3=0;
P0_6=1;
}
if(up1||to1||down2||up2||to2==1)
{
up=0;
P0_2=0;
P0_1=1;
delay2();
goto g2;
}
else
{
P0_1=1;
P0_2=1;
goto g32;
}
}
}
else
{
if(down3||to3==1)
{
delay();
to3=0;
down3=0;
P0_6=1;
}
if(up1||to1||down2||up2||to2==1)
{
P0_2=0;
P0_1=1;
delay2();
goto g2;
}
else
{
if(up3==1)
{
delay();
up=1;
P0_2=1;
P0_1=0;
up3=0;
P3_5=1;
}
if(down4||down5||down6||up4||up5||to4||to5||to6==1)
{
up=1;
P0_2=1;
P0_1=0;
delay2();
goto g4;
}
else
{
P0_1=1;
P0_2=1;
goto g32;
}
}
}
g4: P2=0x04;
delay2();
g42: if(up==1)
{
if(up4||to4==1)
{
delay();
to4=0;
up4=0;
P3_4=1;
}
if(down5||down6||up5||to5||to6==1)
{
P0_2=1;
P0_1=0;
delay2();
goto g5;
}
else
{
if(down4==1)
{
delay();
up=0;
P0_2=0;
P0_1=1;
down4=0;
P0_5=1;
}
if(up1||to1||down2||up2||to2||down3||up3||to3==1)
{
up=0;
P0_2=0;
P0_1=1;
delay2();
goto g3;
}
else
{
P0_1=1;
P0_2=1;
goto g42;
}
}
}
else
{
if(down4||to4==1)
{
delay();
to4=0;
down4=0;
P0_5=1;
}
if(up1||to1||down2||up2||to2||down3||up3||to3==1)
{
P0_2=0;
P0_1=1;
delay2();
goto g3;
}
else
{
if(up4==1)
{
delay();
up=1;
P0_2=1;
P0_1=0;
up4=0;
P3_4=1;
}
if(down5||down6||up5||to5||to6==1)
{
up=1;
P0_2=1;
P0_1=0;
delay2();
goto g5;
}
else
{
P0_1=1;
P0_2=1;
goto g42;
}
}
}
g5: P2=0x05;
delay2();
g52:if(up==1)
{
if(up5||to5==1)
{
delay();
to5=0;
up5=0;
P3_3=1;
}
if(down6||to6==1)
{
P0_2=1;
P0_1=0;
delay2();
goto g6;
}
else
{
if(down5==1)
{
delay();
up=0;
P0_2=0;
P0_1=1;
down5=0;
P0_4=1;
}
if(up1||to1||down2||up2||to2||down3||up3||to3||down4||up4||to4==1)
{
up=0;
P0_2=0;
P0_1=1;
delay2();
goto g4;
}
else
{
P0_1=1;
P0_2=1;
goto g52;
}
}
}
else
{
if(down5||to5==1)
{
delay();
to5=0;
down5=0;
P0_4=1;
}
if(up1||to1||down2||up2||to2||down3||up3||to3||down4||up4||to4==1)
{
P0_2=0;
P0_1=1;
delay2();
goto g4;
}
else
{
if(up5==1)
{
delay();
up=1;
P0_2=1;
P0_1=0;
up5=0;
P3_3=1;
}
if(down6||to6==1)
{
up=1;
P0_2=1;
P0_1=0;
delay2();
goto g6;
}
else
{
P0_1=1;
P0_2=1;
goto g52;
}
}
}
g6: P2=0x06;
delay2();
g62: if(down6||to6==1)
{
delay();
down6=0;
P0_3=1;
to6=0;
}
if(down2||down3||down4||down5||up1||up2||up3||up4||up5||to2||to3||to4||to5||to1==1)
{
up=0;
P0_2=0;
P0_1=1;
delay2();
goto g5;
}
else
{
P0_1=1;
P0_2=1;
goto g62;
}
}
void delay()
{
time=40000;
P0_0=0;
while(time>0)
{
time=time-1;
}
P0_0=1;
time=80000;
while(time>0)
{
time=time-1;
}
P0_0=0;
time=40000;
while(time>0)
{
time=time-1;
}
P0_0=1;
}
timer0( ) interrupt 1
{
P1=0xf0;
k=P1;
if(k!=0xf0)
{
k=k&0xf0;
key=k;
k=k|0x0f;
P1=k;
k=P1;
k=k&0x0f;
key=key|k;
switch (key)
{
case 0xee: {up1=1;P3_7=0;} break;
case 0xeb: {up2=1;P3_6=0;} break;
case 0xdb: {up3=1;P3_5=0;} break;
case 0xbb: {up4=1;P3_4=0;} break;
case 0x7b: {up5=1;P3_3=0;} break;
case 0xe7: {down2=1;P0_7=0;} break;
case 0xd7: {down3=1;P0_6=0;} break;
case 0xb7: {down4=1;P0_5=0;} break;
case 0x77: {down5=1;P0_4=0;} break;
case 0xed: {down6=1;P0_3=0;} break;
case 0xde: to1=1; break;
case 0xdd: to2=1; break;
case 0xbe: to3=1; break;
case 0xbd: to4=1; break;
case 0x7e: to5=1; break;
case 0x7d: to6=1; break;
}
}
}
void delay2()
{
time=40000;
while(time>0)
{
time=time-1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -