📄 cjq3.0v.bak
字号:
;C04_RESOLUTION_11 EQU C04_RESOLUTION_0+11 ;--+7:分辨率=电表常数/ 100,每表1字节
;C04_RESOLUTION_12 EQU C04_RESOLUTION_0+12 ;--+7:分辨率=电表常数/ 100,每表1字节
;C04_RESOLUTION_13 EQU C04_RESOLUTION_0+13 ;--+7:分辨率=电表常数/ 100,每表1字节
;C04_RESOLUTION_14 EQU C04_RESOLUTION_0+14 ;--+7:分辨率=电表常数/ 100,每表1字节
;C04_RESOLUTION_15 EQU C04_RESOLUTION_0+15 ;--+7:分辨率=电表常数/ 100,每表1字节
;--------
C04_PULSE_COMPENSATE_0 EQU 51H ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_1 EQU C04_PULSE_COMPENSATE_0+1 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_2 EQU C04_PULSE_COMPENSATE_0+2 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_3 EQU C04_PULSE_COMPENSATE_0+3 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_4 EQU C04_PULSE_COMPENSATE_0+4 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_5 EQU C04_PULSE_COMPENSATE_0+5 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_6 EQU C04_PULSE_COMPENSATE_0+6 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_7 EQU C04_PULSE_COMPENSATE_0+7 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_8 EQU C04_PULSE_COMPENSATE_0+8 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_9 EQU C04_PULSE_COMPENSATE_0+9 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_10 EQU C04_PULSE_COMPENSATE_0+10 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_11 EQU C04_PULSE_COMPENSATE_0+11 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_12 EQU C04_PULSE_COMPENSATE_0+12 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_13 EQU C04_PULSE_COMPENSATE_0+13 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_14 EQU C04_PULSE_COMPENSATE_0+14 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_PULSE_COMPENSATE_15 EQU C04_PULSE_COMPENSATE_0+15 ;--+8:0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;--------当前电量整数
C04_COUNTER_INTEGER_0 EQU 61H ;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_1 EQU C04_COUNTER_INTEGER_0+3 ;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_2 EQU C04_COUNTER_INTEGER_0+6 ;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_3 EQU C04_COUNTER_INTEGER_0+9 ;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_4 EQU C04_COUNTER_INTEGER_0+12;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_5 EQU C04_COUNTER_INTEGER_0+15;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_6 EQU C04_COUNTER_INTEGER_0+18;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_7 EQU C04_COUNTER_INTEGER_0+21;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_8 EQU C04_COUNTER_INTEGER_0+24;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_9 EQU C04_COUNTER_INTEGER_0+27;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_10 EQU C04_COUNTER_INTEGER_0+30;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_11 EQU C04_COUNTER_INTEGER_0+33;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_12 EQU C04_COUNTER_INTEGER_0+36;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_13 EQU C04_COUNTER_INTEGER_0+39;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_14 EQU C04_COUNTER_INTEGER_0+42;--本月电量整数部分低(0)字节,
;C04_COUNTER_INTEGER_15 EQU C04_COUNTER_INTEGER_0+45;--本月电量整数部分低(0)字节,
;---------------------------
C04_RELAY_STATE_0 EQU 00H ;电表对应当前继电器状态字;100H
;C04_RELAY_STATE_1 EQU C04_RELAY_STATE_0+1
;C04_RELAY_STATE_2 EQU C04_RELAY_STATE_0+2
;C04_RELAY_STATE_3 EQU C04_RELAY_STATE_0+3
;C04_RELAY_STATE_4 EQU C04_RELAY_STATE_0+4
;C04_RELAY_STATE_5 EQU C04_RELAY_STATE_0+5
;C04_RELAY_STATE_6 EQU C04_RELAY_STATE_0+6
;C04_RELAY_STATE_7 EQU C04_RELAY_STATE_0+7
;C04_RELAY_STATE_8 EQU C04_RELAY_STATE_0+8
;C04_RELAY_STATE_9 EQU C04_RELAY_STATE_0+9
;C04_RELAY_STATE_10 EQU C04_RELAY_STATE_0+10
;C04_RELAY_STATE_11 EQU C04_RELAY_STATE_0+11
;C04_RELAY_STATE_12 EQU C04_RELAY_STATE_0+12
;C04_RELAY_STATE_13 EQU C04_RELAY_STATE_0+13
;C04_RELAY_STATE_14 EQU C04_RELAY_STATE_0+14
;C04_RELAY_STATE_15 EQU C04_RELAY_STATE_0+15
;--------
C04_CONSTANT_0 EQU C04_RELAY_STATE_0+16 ;电表常数,110H+0:C45_CONSTANT(0),+1:C45_CONSTANT(1)
;C04_CONSTANT_1 EQU C04_CONSTANT_0+2 ;--+2:C45_CONSTANT(0),+3:C45_CONSTANT(1)
;C04_CONSTANT_2 EQU C04_CONSTANT_0+4 ;--+4:C45_CONSTANT(0),+5:C45_CONSTANT(1)
;C04_CONSTANT_3 EQU C04_CONSTANT_0+6 ;--+6:C45_CONSTANT(0),+7:C45_CONSTANT(1)
;C04_CONSTANT_4 EQU C04_CONSTANT_0+8 ;--+8:C45_CONSTANT(0),+9:C45_CONSTANT(1)
;C04_CONSTANT_5 EQU C04_CONSTANT_0+10 ;--+10:C45_CONSTANT(0),+11:C45_CONSTANT(1)
;C04_CONSTANT_6 EQU C04_CONSTANT_0+12 ;--+12:C45_CONSTANT(0),+13:C45_CONSTANT(1)
;C04_CONSTANT_7 EQU C04_CONSTANT_0+14 ;--+14:C45_CONSTANT(0),+15:C45_CONSTANT(1)
;C04_CONSTANT_8 EQU C04_CONSTANT_0+16 ;--+16:C45_CONSTANT(0),+17:C45_CONSTANT(1)
;C04_CONSTANT_9 EQU C04_CONSTANT_0+18 ;--+18:C45_CONSTANT(0),+19:C45_CONSTANT(1)
;C04_CONSTANT_10 EQU C04_CONSTANT_0+20 ;--+20:C45_CONSTANT(0),+21:C45_CONSTANT(1)
;C04_CONSTANT_11 EQU C04_CONSTANT_0+22 ;--+22:C45_CONSTANT(0),+23:C45_CONSTANT(1)
;C04_CONSTANT_12 EQU C04_CONSTANT_0+24 ;--+24:C45_CONSTANT(0),+25:C45_CONSTANT(1)
;C04_CONSTANT_13 EQU C04_CONSTANT_0+26 ;--+26:C45_CONSTANT(0),+27:C45_CONSTANT(1)
;C04_CONSTANT_14 EQU C04_CONSTANT_0+28 ;--+28:C45_CONSTANT(0),+29:C45_CONSTANT(1)
;C04_CONSTANT_15 EQU C04_CONSTANT_0+30 ;--+30:C45_CONSTANT(0),+31:C45_CONSTANT(1)
;--------
C04_INIT_VAL_0 EQU C04_CONSTANT_0+32 ;表底数,130H+0:C45_INIT_VAL(小数),+1:C45_INIT_VAL(0)
;C04_INIT_VAL_1 EQU C04_INIT_VAL_0+4 ;--+4:C45_INIT_VAL(小数),+5:C45_INIT_VAL(0)
;C04_INIT_VAL_2 EQU C04_INIT_VAL_0+8 ;--+8:C45_INIT_VAL(小数),+9:C45_INIT_VAL(0)
;C04_INIT_VAL_3 EQU C04_INIT_VAL_0+12 ;--+12:C45_INIT_VAL(小数),+13:C45_INIT_VAL(0)
;C04_INIT_VAL_4 EQU C04_INIT_VAL_0+16 ;--+16:C45_INIT_VAL(小数),+17:C45_INIT_VAL(0)
;C04_INIT_VAL_5 EQU C04_INIT_VAL_0+20 ;--+20:C45_INIT_VAL(小数),+21:C45_INIT_VAL(0)
;C04_INIT_VAL_6 EQU C04_INIT_VAL_0+24 ;--+24:C45_INIT_VAL(小数),+25:C45_INIT_VAL(0)
;C04_INIT_VAL_7 EQU C04_INIT_VAL_0+28 ;--+28:C45_INIT_VAL(小数),+29:C45_INIT_VAL(0)
;C04_INIT_VAL_8 EQU C04_INIT_VAL_0+32 ;--+32:C45_INIT_VAL(小数),+33:C45_INIT_VAL(0)
;C04_INIT_VAL_9 EQU C04_INIT_VAL_0+36 ;--+36:C45_INIT_VAL(小数),+37:C45_INIT_VAL(0)
;C04_INIT_VAL_10 EQU C04_INIT_VAL_0+40 ;--+40:C45_INIT_VAL(小数),+41:C45_INIT_VAL(0)
;C04_INIT_VAL_11 EQU C04_INIT_VAL_0+44 ;--+44:C45_INIT_VAL(小数),+45:C45_INIT_VAL(0)
;C04_INIT_VAL_12 EQU C04_INIT_VAL_0+48 ;--+48:C45_INIT_VAL(小数),+49:C45_INIT_VAL(0)
;C04_INIT_VAL_13 EQU C04_INIT_VAL_0+52 ;--+52:C45_INIT_VAL(小数),+53:C45_INIT_VAL(0)
;C04_INIT_VAL_14 EQU C04_INIT_VAL_0+56 ;--+56:C45_INIT_VAL(小数),+57:C45_INIT_VAL(0)
;C04_INIT_VAL_15 EQU C04_INIT_VAL_0+60 ;--+60:C45_INIT_VAL(小数),+61:C45_INIT_VAL(0)
;----------------------------------------------
;二级中继器地址,中继号可通过掌上电脑下发。
REPEATER_ADDR EQU 70H ;中继器地址(50001...10)C351..C35A,2字节
ZJQ_REC_FRM_BUF EQU 80H ;中继抄表时,接收到的集中器下发帧存储到存储器,为2级中继用
;---------------------------
;电表类型标记,为1标识为电子表,0为机械表,区分办法:电表常数除以800,能整除表示为电子表,停电后丢掉脉冲计数;有余数表示为
;机械表,停电后在上电时恢复掉电前脉冲数。
DDS_MAK1 EQU 0B0H ;第1路电表类型标记
DDS_MAK2 EQU 0B1H ;第2路电表类型标记
DDS_MAK3 EQU 0B2H ;第3路电表类型标记
DDS_MAK4 EQU 0B3H ;第4路电表类型标记
DDS_MAK5 EQU 0B4H ;第5路电表类型标记
DDS_MAK6 EQU 0B5H ;第6路电表类型标记
DDS_MAK7 EQU 0B6H ;第7路电表类型标记
DDS_MAK8 EQU 0B7H ;第8路电表类型标记
DDS_MAK9 EQU 0B8H ;第9路电表类型标记
DDS_MAK10 EQU 0B9H ;第10路电表类型标记
DDS_MAK11 EQU 0BAH ;第11路电表类型标记
DDS_MAK12 EQU 0BBH ;第12路电表类型标记
DDS_MAK13 EQU 0BCH ;第13路电表类型标记
DDS_MAK14 EQU 0BDH ;第14路电表类型标记
DDS_MAK15 EQU 0BEH ;第15路电表类型标记
DDS_MAK16 EQU 0BFH ;第16路电表类型标记
;-------------------------------
;C04_START: 第一次初始化标志55H;
;C04_TO_0DOT1_FLAG_0: 0.1度电到标志#55H
;C04_0DOT01_COUNTER_0: 0.01度电计数器1--10
;C04_COUNTER_DECIMAL_0:本月电量的小数部分
;C04_COUNTER_INTEGER_0:本月电量整数部分低(0)字节
; 本月电量整数部分1字节
; 本月电量整数部分2字节
;C04_PULSES1_0: 脉冲数
;C04_RESOLUTION_0: 分辨率=电表常数/ 100,每表1字节
;C04_PULSE_COMPENSATE_0: 0.1度电脉冲补偿(定值),电表常数不能被100或10整除时的余数,作为脉冲补偿
;C04_RELAY_STATE_0: 继电器状态
;C04_CONSTANT_0: 电表常数的低(0)字节
; :电表常数的1字节
;C04_INIT_VAL_0: 电表底数的小数部分
; :电表底数整数部分的低(0)字节
; :电表底数整数部分的1字节
; :电表底数整数部分的2字节
;----------------------------------------------------------------------------------------
;16路继电器状态4字节数值真值表:2004-03-25
;表通道号: 闭合状态(01) 断开状态(00)
;4字节状态寄存器 2FH,30H,31H,32H 2FH,30H,31H,32H
;第4片74HC595
;表1 01 00 00 00 02 00 00 00
;表2 04 00 00 00 08 00 00 00
;表3 10 00 00 00 20 00 00 00
;表4 40 00 00 00 80 00 00 00
;第3片74HC595
;表5 00 01 00 00 00 02 00 00
;表6 00 04 00 00 00 08 00 00
;表7 00 10 00 00 00 20 00 00
;表8 00 40 00 00 00 80 00 00
;第2片74HC595
;表9 00 00 01 00 00 00 02 00
;表10 00 00 04 00 00 00 08 00
;表11 00 00 10 00 00 00 20 00
;表12 00 00 40 00 00 00 80 00
;第1片74HC595
;表13 00 00 00 01 00 00 00 02
;表14 00 00 00 04 00 00 00 08
;表15 00 00 00 10 00 00 00 20
;表16 00 00 00 40 00 00 00 80
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
P_LED BIT P1.0 ;电源灯
S_LEDC BIT P1.1 ;载波发送灯
R_LEDC BIT P1.2 ;载波接收灯
S_LEDR BIT P1.3 ;红外发送灯
R_LEDR BIT P1.4 ;红外接收灯
SER BIT P1.5 ;74HC595串行数据线
SRCLK BIT P1.6 ;74HC595串行时钟线
RCLK BIT P1.7 ;继电器控制寄存器74HC595输出控制
;---
C245_E_0_7 BIT P2.0 ;第一片245控制线
C245_E_8_15 BIT P2.1 ;第二片245控制线
ZB_HW BIT P2.3 ;载波或红外串行口通信复用选择控制端,0为载波用,1为红外用
SDA1 BIT P2.4 ;存储器数据存储I2C线
SCL1 BIT P2.5 ;存储器数据存储I2C线
RX_TX BIT P2.6 ;CPU与MODEM间数据收发控制线 ,0为接收状态,1为发送状态
HW_CONTRA BIT P2.7 ;红外收发控制线HW,0接收,1发送
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RXD BIT P3.0 ;串行数据接收端口
TXD BIT P3.1 ;串行数据发送端口
SYNC BIT P3.2 ;载波同步中断信号线CLR/T
PFO BIT P3.3 ;系统电压检测中断输入
WATCH_DOG BIT P3.4 ;看门狗清除信号线
RST BIT P3.5 ;时钟DS1302数据SPI通信总线的操作控制线。
SDA BIT P3.6 ;时钟数据读写数据线
SCL BIT P3.7 ;时钟数据读写时钟线
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H
LJMP START
ORG 0003H
NOP
NOP
LJMP CARRIER ;外部中断0:CPU与ST7536通信
ORG 000BH
NOP
NOP
LJMP PULSE_ACQUIRE ;定时器T0
ORG 0013H
NOP
NOP
LJMP SNARE
ORG 001BH
NOP
NOP
LJMP SNARE
ORG 0023H
NOP
NOP
RETI
LJMP INFRA_CARRIER ;红外串行中断
SNARE: CLR EA
CPL WATCH_DOG
AJMP $ ;等待MAX706重新复位
;初始化------------------------------------------------------------------------------------
ORG 0030H
START:
CLR SER ;禁止继电器状态输出变化
CPL WATCH_DOG ;清看门狗
MOV AUXR,#19H
MOV AUXR1,#0FEH
;--------------------------------------
;系统复位时通信灯闪烁3次
;--------------------------------------
CLR P_LED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -