📄 init.c
字号:
#include "public.h"
void init(void)
{
P2_0=1;
P2_1=1;
P2_2=1;
P2_3=1;
P2_5=1;
P2_6=1;
P3=0xFF;
P2_4=!P2_4; //sja1000片选选中 //LHM QUESTION: 是否应该是P2_4=0更好一些
PA377=0xff;
PB377=0xff;
PC377=0xff;
PD377=0x00;
PE377=0x00;
// PF377=0xff;
PF377=0x00;
//定时器初始化(定时器0,16位定时器,50ms定时)
TMOD=0x01;
TH0=-50000/256; //12M晶振
TL0=-50000%256; //12M晶振
IP=0x08; //LHM QUESTION : 设置T1最高优先级,为什么? 用了T0,并没用T1啊
EA=1;
ET0=1; //T0开中断
TR0=1; //启动计数
}
void init_data(void)
{
m_cSrcDirect=0xFF; //方向行缓冲区
m_cSrcFloorHigh=0xFF; //楼层高字符缓冲区
m_cSrcFloorLow=0xFF; //楼层低字符缓冲区
m_cLineIdx=0; //行索引(自上而下0-14)
m_RecData.cCurFloor=0xFF; //保证新楼层的接收
m_RecData.cDirect=0xFF;
m_RecData.cMaxFloor=1;
m_cFuncCnt=0;
m_cFuncTimer=TIMER_FUNC_NUM;
m_cSettingFuncFlg=0;
m_cNewFuncFlg=0;
m_cSubFuncCnt=0; //各功能计数(F0:1-8 F1:1-48 F2:1-3 F3:0/1 F4:0/1)
m_cSubFuncTimer=TIMER_SUBFUNC_NUM;//功能切换计数器(每500毫秒切换一次)
m_cSettingSubFuncFlg=0;
m_cNewSubFuncFlg=0;
m_cSubToParTimer=TIMER_SUBTOPAR_NUM; //
m_cSubToParLess2sFlg=0; //2004.08.31 14:25 LHM
m_cWholeMoveOKFlg=0;
m_cMoveCnt=0;
m_cMoveTimer=TIMER_ONELINE_NUM;
m_cNewLineFlg=0;
m_set5045flg=0;
time_nocan_count=TIMER_NOCANDATA_NUM; //无CAN数据计数(若200ms没有CAN数据则认为应该复位CAN)
time_nocan_flg=0; //无CAN数据标志
time_nocan200ms_flg=0; //无CAN数据计时到标志
time_report_count=TIMER_REPORT_NUM; //报站计数
time_report_flg=0; //报站标志
time_report2s_flg=0; //报站计时到标志
m_cReportIdx=1;
//六状态
m_cFireFlg=0;
m_cRepairFlg=0;
m_cLockFlg=0;
m_cLockDarkFlg=0;
m_cOverloadFlg=0; //lhm for debug
m_cReportFlg=0;
m_cReportingFlg=0; //2005.03.01
m_cReportData=0xFF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -