?? jbmain.c
字號:
/*************************************************************
*
* 文 件 名: jbMain.c
* 說 明: JJF24-1B新型計費器主程序文件
* 起始日期: 99-11-26 8:02
* 完成日期:
* 原型函數: void Main(void)
* bool CheckProgramSum(void)
* void _Second(void) interrupt 0 using 1
* void _Time0(void) interrupt 1 using 1
* void _ModemInt(void) interrupt 2 using 1
* void _Uart(void) interrupt 4 using 1
* void _Time1(void) interrupt 3 using 1
* void _Time2(void) interrupt 5 using 1
*
************************************************************/
//#pragma SRC
//#pragma DEBUG
#include <jbMain.h>
/*************************************************************
*
* 函數名: Main.c
* 說 明: JJF24-1B型計費器主函數
*
************************************************************/
void Main(void)
{
while(1){
EA=0; // 屏蔽所有中斷
PSW=0x00; // 選擇寄存器組1
P1=0xff; // 端口初始化
P3=0xff;
DlpPage(6);
OutBuf=0xc3; // 1110 0001 d1=RLY
XBYTE[OUT_CE]=OutBuf;
bRecSBUF=XBYTE[RTC_CONTROLC];
bRecSBUF=XBYTE[IN_CE]&0xf0;
DlpPage(5);
bDlpReason=0;
bFailTimes=0;
fWaitExit=0;
fFirstCmd=0;
bLastCmd=0xff;
fTxFSKStart=0;
// 按鍵機可直接進入串口接收等待狀態:
if(bRecSBUF==K234)
bDlpReason=3; // 轉入串口接收等待過程
else if((!CheckProgramSum())||(bRecSBUF==K134))
bDlpReason=2;
while(TRUE){
if(bDlpReason==TO_INIT) // 程序重新開始入口
break;
else if(bDlpReason==0)
ApiProgram();
else
DlpProgram();
}
}
// 計費器工作主循環程序
}
// End function: Main()
/*******************************************************************************
*
* Function: CheckProgramSum
* Descrip: 特定算法計算應用程序檢驗和
* Return: right return 1;
* error return 0.
*
******************************************************************************/
bool CheckProgramSum(void)
{
uint CheckSum1=0;
uint CheckSum2=0;
byte code *Dpnt;
uint xdata *Dpnt1;
uint i;
byte j;
DlpPage(0);
for(i=0x2000,j=0;i!=0;i+=0x100){
Dpnt=i+j;
CheckSum1+=*Dpnt;
j++;
}
DlpPage(5);
Dpnt1=PROGRAM_CHECKSUM_ADDR;
DlpPage(1);
CheckSum2=*Dpnt1;
DlpPage(5);
if(CheckSum1==CheckSum2)
return 1;
else
return 0;
}
// End function: CheckProgramSum()
void _Second(void) interrupt 0 using 1
{
if(bDlpReason==0)
_ApiSecond();
else
DlpSecond();
}
// End function: _Second()
void _Time0(void) interrupt 1 using 1
{
if(bDlpReason==0)
_ApiTime0();
else
DlpTime0();
}
// End function: _Time0()
void _ExtInt1(void) interrupt 2 using 1
{
if(bDlpReason==0)
_ApiInt1();
else
DlpInt1();
}
// End function: _VccLow()
void _Uart(void) interrupt 4 using 1
{
if(bDlpReason==0)
_ApiUart();
else
DlpUart();
}
// End function: _Uart()
// 下為備用中斷服務程序,用于將來的擴展:
void _Time1(void) interrupt 3 using 1
{
if(bDlpReason==0)
_ApiTime1();
else
DlpTime1();
}
// End function: _Time1()
void _Time2(void) interrupt 5 using 1
{
if(bDlpReason==0)
_ApiTime2();
else
DlpTime2();
}
// End function: _Time2()
//
// End file: jbMain.c
//
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -