分析代码void NOW_floor(u8 x,u8 y,u8 floor) { static u8 last_floor=0; if(last_floor != floor)//切换楼层 { display0(64,1,floor);//显示当前楼层 if(FLOOR_FLAG[floor] == 1)//开门检测 { BEEP = 0; DUOJI_FLAG = 1; BUJ_Mode = 0; OFF_START = 0; while(1) { if(OFF_START == 1) break; } FLOOR_FLAG[floor] = 0; GET_SX_FLOOR(0,DIRECTION); BUJ_Mode = 1;//开启电机控制 } GET_SX_FLOOR(0,DIRECTION); last_floor = floor; } } u8 TAG_FLOOR(u8 floor) //屏幕电梯楼层标记 { static u8 str[5]; if(FLOOR_FLAG[floor] == 0) { FLOOR_FLAG[floor] = 1; return 0; } } u8 __weak GET_SX_FLOOR(u8 floor,u8 lastdirection)//获取电梯目标运行 { u8 i; if(AIM_COUNT == BUJ_COUNT) //脉冲相等计算电梯运行方向 { DIRECTION = 0; for(i=1;i<(FLOOR_NUM+1);i++)//判断电梯运行方向 { if(FLOOR_FLAG[i]==1) { if(i>FLOOR) DIRECTION = 1; if(i<FLOOR) DIRECTION = 2; } } } }
时间: 2024-04-02 18:34:02 浏览: 75
这是一段嵌入式系统中电梯控制的代码。函数NOW_floor用于切换电梯的楼层,如果需要切换楼层,则会显示当前楼层,进行开门检测,开启电机控制。函数TAG_FLOOR用于屏幕电梯楼层标记,将电梯的楼层标记在屏幕上。函数GET_SX_FLOOR用于获取电梯目标运行,计算电梯运行方向。该代码的具体实现可能需要结合硬件环境进行分析。
阅读全文