⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cjq3.0v.asm

📁 本程序为集中抄表系统中低压电力线载波数据采集器程序源代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;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 + -