📄 fl_date_chk.asm
字号:
;************************************************************
;文档类型: 原代码
;项目编号:
;文档编号:
;修订版本: v1.0
;生成日期: 2004.12.2
;文档作者: li
;审 核:
;************************************************************
;相关文档: 费率时段判别
;文档编号 说明
;************************************************************
;修订版本:
;修订版本:
;************************************************************
$INCLUDE (RAML128.INC)
$INCLUDE (RAMH128.INC)
$INCLUDE (PL3200.INC)
$INCLUDE (24ADDR.INC)
$INCLUDE (IO.INC)
NAME FL_DATE_CHK
CODE_REG SEGMENT CODE
RSEG CODE_REG
PUBLIC FL_DATE_CHK
;*******************************;调用子程序情况:
EXTRN CODE(RD_FL)
;*************************************************************************
;费率时段判别,共有8个可设时段,如果前面时段有一个为无效,后面时段将不判.
;费率时段应该递增,不能跨0点 OUT ==FL_NUM_JS
;*************************************************************************
;*************************************************************************
;费率时段判别,共有8个可设时段,如果前面时段有一个为无效,后面时段将不判.
;费率时段应该递增,不能跨0点 OUT ==FL_NUM_JS
;如果当前时间大于等于费率N的时间,则FL_NUM_JS=当前费率值,如果小于则退出
;R5=每包数据的费率数:4个
;R6=共2包费率数数据
;2004.6.25: 读取费率表时考虑当前执行的 费率表数
;*************************************************************************
FL_DATE_CHK: MOV EXT_ADR,#83H ;读时,时钟
MOV A,EXT_DAT
MOV R0,#HOUR
MOV @R0,A
MOV FL_NUM_JS,#4 ;默认谷时段
MOV FL_NUM_JS_BAK,#5CH
;检查第一个时段的时分情况
MOV A,#0
CALL RD_FL
MOV A,RD_BUF0 ;第1时段费率号
JNZ FL_NOW_TIME_CHK ;费率号为0,直接默认费率4
FL_CHK_RET: RET
FL_NOW_TIME_CHK: ;检查当前时间是否小于第一个时段的时间
MOV A,RD_BUF0 ;第1时段费率号
MOV FL_NUM_JS,A
ADD A,#'X'
MOV FL_NUM_JS_BAK,A
MOV R0,#HOUR
MOV A,@R0
CLR C
SUBB A,RD_BUF2 ;2004.6.15,时小于,运行最后一个费率
JC NOW_HOUR_LESS
JNZ FL_NOW_DATE_CHK ;时不等时,直接比较时段
MOV R0,#MINUTE
MOV A,@R0
CLR C
SUBB A,RD_BUF1 ;2004.6.15,时相等,比较分钟
JC NOW_HOUR_LESS ;2004.6.15,分钟小时,应该执行最后一个时段
JMP FL_NOW_DATE_CHK
NOW_HOUR_LESS: ;当前时间小于第一个时段,应该执行最后一个时段,将时置25H
MOV R0,#HOUR
MOV @R0,#25H
FL_NOW_DATE_CHK:MOV R6,#7
FL_NOW_X: CLR C
MOV A,#8
SUBB A,R6
MOV B,#4
MUL AB
CALL RD_FL
FL_DATE_CHK0:
MOV A,RD_BUF0 ;第N时段费率号
JZ FL_DATE_CHK_RET ;费率号为0,无效
;RD_BUF2;第N费率时段(时)
MOV R0,#HOUR
MOV A,@R0
CLR C
SUBB A,RD_BUF2 ;时比较
JC FL_DATE_CHK_RET ;时小于,执行上一个时段
JNZ CHK_NEXT_FL_HOUR ;时大于,执行本时段
MOV R0,#MINUTE
MOV A,@R0
CLR C
SUBB A,RD_BUF1 ;2004.6.15,时相等,比较分钟
JC FL_DATE_CHK_RET ;分小,执行上一个时段
CHK_NEXT_FL_HOUR:
CHK_NEXT_FL_MIN:
MOV A,RD_BUF0 ;第N费率号
MOV FL_NUM_JS,A ;第N费率号
ADD A,#'X'
MOV FL_NUM_JS_BAK,A ;第N费率号BAK
DJNZ R6,FL_NOW_X
FL_DATE_CHK_RET:
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -