📄 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 + -