📄 main.c
字号:
#define __SYSTEM_VAR__
#include "REG931.H"
#include "memory.h"
#include "system.h"
#include "key.h"
#include "vfd.h"
#include "display.h"
#include "uart.h"
extern void Init_MCU(void);
extern void Init_WDT(void) ;
extern void ClrWDT(void); // clear watch dog timer
void WatchDogResetCheck(void){
uchar RstFlag;
if(RSTSRC & 0x04){ // happen watch dog reset
RstFlag=0x20;
RSTSRC &= ~0x04; // clear watch dog reset flag
SendData2TxBuff(SYS_RST_FLAG_CMD, &RstFlag);
}
}
void Event_Cancel(unsigned char Event){
if (OS_FETCH_EVENT != Event)
return;
OS_FETCH_EVENT=OS_EVENT_IDLE;
}
//Input: Keydata, key event information
//output:key information
uchar GetKeyInfor(uchar key, uchar event){
uchar uc;
uc = key & 0x0f;
uc |= event << 4;
return uc;
}
void SysKey(void){
uchar keytemp;
uchar KeyInfor;
keytemp=KeyData&0x3f;
switch(KeyEvent){
case PRESS_DOWN:
switch(keytemp){
case K_1:
case K_2:
case K_3:
case K_4:
KeyInfor = GetKeyInfor(keytemp, SG_PRESS_DOWN);
SendData2TxBuff(TXD_KEY_EVENT_CMD, &KeyInfor);
break;
case K_12:
case K_13:
case K_14:
case K_23:
case K_24:
case K_34:
KeyInfor=keytemp&0x0f;
KeyInfor |= DB_PRESS_DOWN<<4;
KeyInfor = GetKeyInfor(keytemp, DB_PRESS_DOWN);
SendData2TxBuff(TXD_KEY_EVENT_CMD, &KeyInfor);
break;
}
KeyEvent=IDLE;
break;
case PRESS_HOLD:
switch(keytemp){
case K_1:
case K_2:
case K_3:
case K_4:
if(Timer64ms)
break;
// Timer64ms=T64ms_3SEC; // repeat rate
Timer64ms=T64ms_384ms; // repeat rate
KeyInfor = GetKeyInfor(keytemp, SG_REPEAT);
SendData2TxBuff(TXD_KEY_EVENT_CMD, &KeyInfor);
break;
case K_12:
case K_13:
case K_14:
case K_23:
case K_24:
case K_34:
if((!bDBKeyHoldEn)||Timer64ms) // be in first power on
break;
Timer64ms=T64ms_384ms; // repeat rate
KeyInfor = GetKeyInfor(keytemp, DB_REPEAT);
SendData2TxBuff(TXD_KEY_EVENT_CMD, &KeyInfor);
break;
}
break;
case PRESS_UP_SHORT:
switch(keytemp){
case K_1:
case K_2:
case K_3:
case K_4:
KeyInfor = GetKeyInfor(keytemp, SG_PRESS_UP_SHORT);
SendData2TxBuff(TXD_KEY_EVENT_CMD, &KeyInfor);
break;
case K_12:
case K_13:
case K_14:
case K_23:
case K_24:
case K_34:
KeyInfor = GetKeyInfor(keytemp, DB_PRESS_UP_SHORT);
SendData2TxBuff(TXD_KEY_EVENT_CMD, &KeyInfor);
break;
}
KeyEvent=IDLE;
break;
case PRESS_UP_LONG:
switch(keytemp){
case K_1:
case K_2:
case K_3:
case K_4:
KeyInfor = GetKeyInfor(keytemp, SG_PRESS_UP_LONG);
SendData2TxBuff(TXD_KEY_EVENT_CMD, &KeyInfor);
break;
case K_12:
case K_13:
case K_14:
case K_23:
case K_24:
case K_34:
bDBKeyHoldEn=0;
KeyInfor = GetKeyInfor(keytemp, DB_PRESS_UP_LONG);
SendData2TxBuff(TXD_KEY_EVENT_CMD, &KeyInfor);
break;
}
KeyEvent=IDLE;
break;
}
}
void SysMode(void){
uchar keytemp;
keytemp=KeyData&0x3f;
switch(Mode){
case SYS_WORK_PRE:
if(!Timer64ms){
Timer64ms=T64ms_128ms;
Mode=SYS_READY;
}
break;
case SYS_READY:
if(!Timer64ms){
// Counter32ms=95;
Mode=SYS_IDLE;
}
break;
case SYS_IDLE:
#if 0 // for debug
if(Counter32ms>100){
Counter32ms=0;
SelfTestUnit=1;
bSelfTest=1;
Mode=SYS_SCREEN_TEST_SELF;
}
#endif
break;
case SYS_EXIT:
Mode=SYS_IDLE;
break;
case SYS_SCREEN_TEST_SELF:
VFDTestSelf( );
break;
}
}
void main( ){
Init_MCU( );
lpStruct=VFD.FrontBuff;
//#ifdef INCLUDE_UART_CODE
DisplayStr2Buff(LN4, 1, "12345678", NO_FILLSPACE, BACKUP_BUF);
bFlashStr1=1;
//#endif
while (1){
switch(OS_FETCH_EVENT){
case OS_EVENT_4MS: // 4ms
if(Timer4ms)
Timer4ms--;
// I2C_Uart_InforProcess( );
#ifdef INCLUDE_UART_CODE
UartFrameResetCheck( );
#endif
Event_Cancel(OS_EVENT_4MS);
break;
case OS_EVENT_8MS: // 8ms
Event_Cancel(OS_EVENT_8MS);
ClrWDT( );
break;
case OS_EVENT_16MS: //16ms
KeyScan();
CalKeyEvent( );
SysKey( );
Event_Cancel(OS_EVENT_16MS);
break;
case OS_EVENT_32MS: // 32ms
Counter32ms++;
SysMode( );
if(CommTimer){
CommTimer--;
DispIcon(Seg_Pulse, FTimer64ms & CommTimer);
if(!CommTimer)
VFD.BakupBuff[19] &= 0x7f; // clear bit Pulse icon in backup buffer
}
Event_Cancel(OS_EVENT_32MS);
break;
case OS_EVENT_64MS: // 64ms
if(Timer64ms)
Timer64ms--;
FTimer64ms = ~FTimer64ms;
Event_Cancel(OS_EVENT_64MS);
break;
case OS_EVENT_128MS: // 128ms
// if(Timer128ms)
// Timer128ms--;
// FTimer128ms = ~FTimer128ms;
// VFDBack2FrontProc( ); // for debug
WatchDogResetCheck( );
Event_Cancel(OS_EVENT_128MS);
ClrWDT( );
break;
case OS_EVENT_256MS: // 256ms
// if(Timer256ms)
// Timer256ms--;
FTimer256ms = ~FTimer256ms;
VFDRollProcess( );
Event_Cancel(OS_EVENT_256MS);
break;
case OS_EVENT_512MS: // 512ms
FTimer512ms = ~FTimer512ms;
ClrWDT( );
#if 0
// TestChar( );
if(FTimer512ms){
FTimer1s = ~FTimer1s;
// if(FTimer1s){
// FTimer2s = ~FTimer2s;
// }
}
#endif
VFDFlashProcess( NORMAL_SEN );
Event_Cancel(OS_EVENT_512MS);
break;
case OS_EVENT_RECOUNT: // recount
Event_Cancel(OS_EVENT_RECOUNT);
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -