📄 main.c
字号:
#include <spce061a.h>
extern void keyscan(void);
extern void up(void);
extern void down(void);
extern void run(void);
extern void hongwai(void);
extern void write(int,int);
extern void dis_key(void);
extern void reset1(void);
int key_code[16];
int floor=1; //层位置
int flag=2; //运行方向标志 0为上 1为下 2为停止
int next_floor;
int hongw_flag=0; //红外中断标志
void main(void)
{
reset1();
reset1();
write(0x0008,floor);
while(1)
{
*P_IOB_Dir|=0x0c00;
*P_IOB_Attrib|=0x0c00;
*P_IOB_Data&=0xf3ff;
keyscan();
run();
if(next_floor>floor) //上升,状态标志为0
{
*P_IOB_Dir|=0x0c00;
*P_IOB_Attrib|=0x0c00;
*P_IOB_Data&=0xf3ff;
if(flag==1)
key_code[5+floor*2]=0;
key_code[6+floor*2]=0;
flag=0;
while(1)
{
up(); //电机正转,上升
keyscan();
dis_key();
hongwai();
if (hongw_flag) //已经平层,则跳出去进行下一个判断
break;
}
floor++;
key_code[floor]=0;
write(0x0008,floor);
}
else if(next_floor<floor) //下降,状态标志为1
{
*P_IOB_Dir|=0x0c00;
*P_IOB_Attrib|=0x0c00;
*P_IOB_Data&=0xf3ff;
if(flag==0)
key_code[6+floor*2]=0;
key_code[5+floor*2]=0;
flag=1;
while(1)
{
down();
keyscan();
dis_key();
hongwai();
delay(3);
if (hongw_flag) //已经平层,则跳出去进行下一个判断
break;
}
floor-=1;
key_code[floor]=0;
write(0x0008,floor);
}
else //没有
{
flag=2;
hongwai();
keyscan();
dis_key();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -