__c51_2
来自「一整套电梯控制器源程序」· 代码 · 共 890 行 · 第 1/2 页
TXT
890 行
enum Direct{ D_Down=0, D_Up }; enum DoorActionState{ Door_OpenOK=0, Door_CloseOK, Door_Opening, Door_Closing, Door_ERROR }; enum{ Weight_Null, Weight_Light, Weight_Heavy, Weight_Full, Weight_Over, Weight_ERROR }; struct tag_InterData{ unsigned char bFloorCanStop; unsigned char bVeto; unsigned char b2FloorMove; unsigned int nTime; unsigned char cWeight; unsigned char bSameDirection; unsigned char cStopCount; unsigned char cPRINo; }; struct tag_DT_SCC{ unsigned char ReadFlg; unsigned char m_ReadBuf[32]; unsigned char dwReadReqSize; unsigned char nReadCount; unsigned char WriteFlg; unsigned char m_WriteBuf[32]; unsigned char dwWriteReqSize; unsigned char nWriteCount; }; sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_2=P3^2; sbit P3_3=P3^3; sbit P3_4=P3^4; sbit P3_5=P3^5; extern xdata unsigned char *can3_cs; extern xdata unsigned char *can2_cs; extern xdata unsigned char *can1_cs; extern xdata unsigned char *can0_cs; extern struct tag_L_Data *m_pL_Data; extern struct tag_E_InputData *m_pE_InputData; extern struct tag_E_OutputData *m_pE_OutputData; extern struct tag_Temp_Timer *m_pTimer; extern unsigned char m_nNextStopLIdx[8]; extern unsigned char m_bDirect[8]; extern struct tag_InterData m_InterData[8]; extern unsigned char m_cCurStageStartFloor[8]; extern unsigned char m_cOvertime[8]; extern unsigned char m_CalUpLIdx; extern unsigned char m_CalDownLIdx; extern unsigned char m_year; extern unsigned char m_month; extern unsigned char m_date; extern unsigned char m_time; extern unsigned char m_minute; extern unsigned char m_set_time; extern unsigned char m_read_time; extern unsigned char sbuf_rec; extern unsigned char m_get_senddata_flg; extern unsigned char m_comm_enable_flg; extern unsigned char m_host_flg; extern unsigned int m_ST_60s_count; extern unsigned char m_comm_data_flg; extern unsigned char m_comm_60sover_flg; extern unsigned char m_msg_monitor_flg; extern unsigned char m_msg_quit_flg; extern unsigned char m_msg_set_flg; extern unsigned char m_monitor_delay_flg; extern unsigned char m_monitor_delay_count; extern unsigned char m_active_idx; extern unsigned char m_add_type_idx; extern unsigned char m_resolve_flg; extern xdata unsigned int m_monitor_ad[5]; extern xdata unsigned char m_monitor_type[5]; extern xdata struct tag_DT_SCC m_scc; extern xdata unsigned char m_restore_flg; extern xdata unsigned char m_save_flg; extern xdata unsigned char m_factory_flg; extern xdata unsigned char m_save_over_flg; extern xdata unsigned char m_once_param_over_flg; extern xdata unsigned int canx_cs[8]; extern unsigned char e_out_call_flag; extern unsigned char m_state_20ms; extern unsigned char can_send_count; extern unsigned char e_lamp_call_flag; extern unsigned char e_display_reflash_floor[8]; extern unsigned char e_up_down; extern unsigned char e_frame_number; extern unsigned char e_online[8]; extern unsigned char bdata abit; extern bit abit_0; extern bit abit_1; extern bit abit_2; extern bit abit_3; extern bit abit_4; extern bit abit_5; extern bit abit_6; extern bit abit_7; extern unsigned char bdata abit0; extern bit abit0_0; extern bit abit0_1; extern bit abit0_2; extern bit abit0_3; extern bit abit0_4; extern bit abit0_5; extern bit abit0_6; extern bit abit0_7; struct group_out { unsigned char call_up_out[6]; unsigned char call_down_out[6]; }; extern xdata struct group_out group_assign[8]; extern unsigned char choose_out[8]; extern unsigned char yes_no[8]; extern unsigned int e_online_time_count[4]; extern unsigned char e_online_flag[4]; extern unsigned int e_single_comm_count[4]; extern unsigned int e_group_comm_count[4]; extern unsigned char e_1_second_flag[4]; extern unsigned char m_SendOpenDoorFlg[8]; extern unsigned char m_LastDoorState[8]; extern unsigned char m_SendStaticInSelDataFlg[8]; extern unsigned char m_IsExistWaiInFlg; extern unsigned char m_SendPeekInSelDataFlg[8]; extern unsigned int m_nTestTimer; void maininit(void); void main_process(); void WithdrawVetoEle(void); void WithdrawOutCall(void); void InitData(void); unsigned char GetMinBottomFloor(); unsigned char GetMaxTopFloor(); unsigned char GetCanDistEleCount(); void SetPartInterVal(void); void SetInterVal_FloorCanStop(unsigned char cLIdx, unsigned char updown_flg); void SetInterVal_2FloorMove(unsigned char cLIdx, unsigned char updown_flg); void SetInterVal_SameDirection(unsigned char cLIdx, unsigned char updown_flg); unsigned char GetDoorOvertime(unsigned char cEIdx); void UpdateDoorOvertimer(void); unsigned char GetDoorActionState(unsigned char cEIdx); void DistributeEle(void); void SetOutCallLight(unsigned char cLIdx, unsigned char updown_flg, unsigned char bVal); void SetOutCallDistribution(unsigned char cLIdx, unsigned char updown_flg, unsigned char bVal); unsigned char IsWithdrawOutLight(unsigned char cLIdx, unsigned char updown_flg); unsigned char GetNextStopLIdx(unsigned char cEIdx, unsigned char cStartFloorIdx, unsigned char bStartDirect, unsigned char *bDirect, unsigned char *cStartSearchEnd); unsigned char GetNoDirectEleTrend(unsigned char cEIdx); void OptimizeArrange(unsigned char cLIdx, unsigned char updown_flg); void SetStaticStopFloor(); void SetPeekStopFloor(); unsigned char IsPeekTime(struct tag_L_SysTime *pSysTime, struct tag_L_GaoFeng *pGaoFeng); unsigned char IsExistCurFloorUp(unsigned char cEIdx); unsigned char IsExistCurFloorDown(unsigned char cEIdx); void time_x1203(void); unsigned char eread(unsigned char t_addr1); void ewrite(unsigned char t_addr2,unsigned char t_data); void serial_comm(void); void comm_check(void); void monitor_rec(void); void message_quit(void); void command(unsigned char *pBuf); void monitor_send(void); void make_send_buf(void); unsigned char __toascii(unsigned char c); unsigned char __tofig(unsigned char cAscii); unsigned int GetValidAdd(unsigned char *pBuf); void SetParamVal(unsigned char *pSrcBuf, unsigned char *pDestBuf, unsigned char type); void serial_command_resolve(void); void serial_make_senddata(void); void data_init(void); void orgdata_init(void); void orgdata_init_total(void); void orgdata_init_input(void); void orgdata_init_output(void); void GetUserParamSaveOverFlg(); void SetUserParamSaveOverFlg(); void restore_user_param(void); void save_user_param(void); void restore_factory_param(void); unsigned char erase(unsigned int addr); unsigned char writef(unsigned int x,unsigned char y); void can_init(unsigned int point); void can_reset(void); void can_call_in(unsigned char a); can_receive_more(unsigned char a); can_receive_only(unsigned char a); clear_unknow_code(unsigned char a); void can_call_assign(); can_call_lamp(); #line 1 ".\param_save_restore.c" /0 void restore_factory_param(void) { if(m_factory_flg==1){ orgdata_init(); m_factory_flg=0; } } void restore_user_param(void) { unsigned int data i; unsigned char xdata *data p; unsigned char xdata *data s; unsigned int xdata count=sizeof(struct tag_L_Data)+sizeof(struct tag_E_InputData)+sizeof(struct tag_E_OutputData)+sizeof(struct tag_Temp_Timer); if(m_restore_flg==1){ if(m_save_over_flg==1){ EA=0; p=0xa000; s=0x1000; for(i=0;i<count;i++){ *(s+i)=*(p+i); } m_restore_flg=0; EA=1; } } } void save_user_param(void) { unsigned int xdata i; unsigned char xdata *s=0x1000; unsigned int xdata count=sizeof(struct tag_L_Data)+sizeof(struct tag_E_InputData)+sizeof(struct tag_E_OutputData)+sizeof(struct tag_Temp_Timer); if(m_save_flg==1){ EA=0; erase(0xa000); for(i=0;i<count;i++) writef((0xa000+i),*(s+i)); m_save_flg=0; m_save_over_flg=1; SetUserParamSaveOverFlg(); EA=1; } } unsigned char erase(unsigned int addr) { unsigned char xdata *s; unsigned char b,c,d,e; s=(0x555+addr); *s=0xaa; s=(0xaaa+addr); *s=0x55; s=(0x555+addr); *s=0x80; s=(0x555+addr); *s=0xaa; s=(0xaaa+addr); *s=0x55; s=addr; *s=0x30; d=0; e=0; do{b=*s; c=b&0x20; b=b&0x80; if(b==0x80) d=1; if(c==0x20) e=1; }while((d==0)&&(e==0)); if(e==1) {b=*s; b=b&0x80; if(b==0x80) d=1; s=0x555+addr; *s=0xf0; } return(d); } unsigned char writef(unsigned int x,unsigned char y) { unsigned char xdata *s; unsigned char xdata a,b,c,d,e; unsigned int addr=0; if((x>=0x4000)&&(x<0x6000)) addr=0x4000; if((x>=0x6000)&&(x<0x8000)) addr=0x6000; if((x>=0x8000)&&(x<0xa000)) addr=0x8000; if((x>=0xa000)&&(x<0xc000)) addr=0xa000; if(x>=0xc000) addr=0xc000; s=0x555+addr; *s=0xaa; s=0xaaa+addr; *s=0x55; s=0x555+addr; *s=0xa0; s=x; *s=y; d=e=0; a=y; do { b=*s; c=b&0x20; if(b==a) d=1; else if(c==0x20) e=1; } while((d==0)&&(e==0)); if(e==1) { b=*s; if(b==a) d=1; s=0x555+addr; *s=0xf0; } if(d==1) return(d); else {s=0x555+addr; *s=0xaa; s=0xaaa+addr; *s=0x55; s=0x555+addr; *s=0xa0; s=x; *s=y; d=e=0; a=y; do { b=*s; c=b&0x20; if(b==a) d=1; else if(c==0x20) e=1; } while((d==0)&&(e==0)); if(e==1) { b=*s; if(b==a) d=1; s=0x555+addr; *s=0xf0; } } return(d); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?