📄 hwspsb0613.asm
字号:
#INCLUDE "C:\PIC-OnLine\MplabFile\P16F73.INC"
; INCLUDE "D:\Program Files\北京集万讯电子\P16F73.INC"
;**********define e2prom pin ***********************
SCL equ 3 ;24c02 clock pin
SDA equ 4 ;24c02 data pin
;********** define wtire and read card pin*******************
DYK equ 2 ;power of card control pin
INT0 equ 0 ;lock card pin
CARDDATA equ 5 ;translate datd pin
CLK equ 6 ;clock of card pin
RST equ 7
CFE equ 7 ;card reset pin
;*********** define lcd display pin*************************
WR equ 2 ;lcd write pin
CS equ 3 ;lcd select pin
LCDDATA equ 4 ;lcd tranlate data pin
LEGD equ 5 ;lcd enable pin
;***********valve control pin*******************************
VALVEOP equ 0 ;control valve open pin(1/0)
VALVECL equ 1 ;control valve close pin(1/0)
VALCLOSE equ 2 ;valve colse status pin
FW1 equ 3 ;sing pin
;VALOPEN equ 3 ;valve open status pin
VALSIG1 equ 6 ;signe input 1 pin
VALSIG2 equ 7 ;signe input 2 pin
OVERCUR equ 1 ;over current pin
VALVEPOWER equ 0 ;
;***********power compare pin********************************
UPPOWER equ 5 ;power up-limit pin
DOWNPOWER equ 4 ;power down-limit pin
PCP equ 1 ;power pin
;************define bit **************************************
ONETHREE equ 4 ;if onethree=1;then one cord three watermeter
ONE equ 0 ;the first watermeter
TWO equ 1 ;the second watermeter
THREE equ 2 ;the three watermeter
;*************************************************************
FLAG1 equ 0X20 ;define bit
ICV_ERR equ 0 ;ic card password check is error flag
ACK equ 1 ;e2prom
INCARD equ 2 ;insert card falg
ICRWERR equ 3 ;write-read ic card is error flag
VALVEERR equ 4 ;open-close valve is error flag
MEMERR equ 5 ;write-read e2prom is error flag
YZWATER equ 6 ;prefabricate water executing is yes or not
LOWPOWER equ 7 ;power low flag
FLAG2 equ 0X21 ;define bit
PULSE1 equ 0
PULSE2 equ 1
FORBITE equ 2
WARN equ 3
ZERO equ 4
ENBLEDIS equ 5
EMIB equ 6
OVERWATER equ 7
FLAG3 equ 0X22
PASS equ 0
ICERR equ 1
EMI equ 2
POWERD equ 3
SALEWATR equ 4
M3 equ 5
BUYFLAG equ 6
FLAG equ 7
FLAG4 equ 0X23
TOTAL equ 0
BALA equ 1
BUY equ 2
FMQCSF equ 3
SPEFLAG equ 4
INITFLAG equ 5
SETBG2 equ 6
BCD_CY equ 7
FLAG5 equ 0X7E
DWPOWER equ 0
FH EQU 3
INCD EQU 7
TEMP EQU 0X7C
ATEMP EQU 0X7D
;***********************************
#DEFINE READDRESS 0X24 ;read e2prom first address
#DEFINE READLENGTH 0X25 ;the length of read data
#DEFINE DEL1 0X26
#DEFINE DEL2 0X27
#DEFINE DEL3 0X28
#DEFINE DEL4 0X29
#DEFINE DEL5 0X2A
#DEFINE LCDBYTECNT 0X2B
#DEFINE LCDBITCNT 0X2C
#DEFINE SHIFT 0X2D
#DEFINE LCDCOMMAND 0X2E
#DEFINE R0 0X3C
#DEFINE R1 0X3D
#DEFINE PULVALVE 0X31 ;(3)
#DEFINE FMCOUNT 0X34
#DEFINE REICCOM 0X35
#DEFINE ICMIMA 0X36 ;(3)
#DEFINE COUNTADD 0X39
#DEFINE INSERCC 0X3A
#DEFINE POBLICC 0X3B
#DEFINE ISRCON1 0X2F
#DEFINE ISRCON2 0X30
#DEFINE STATUSBUF 0X3E
#DEFINE WBUFFER 0X3F
#DEFINE COUNT 0X40
#DEFINE E2PCOUNT 0X41
#DEFINE REICADDR 0X42
#DEFINE CARDBITCNT 0X43
#DEFINE ICDATA 0X44
#DEFINE DBUFFER 0X45
#DEFINE DISCOUNT 0X46
#DEFINE ZBNO 0X47
#DEFINE DISBUFFER 0X48 ;48h-57h display buffer(20)
#DEFINE RECBUFFER 0X58 ;58h-7Bh receive buffer(32)
;*************************外部存储器单元****************************************
#DEFINE CLEAR 0X00 ; 清零标志(2)
#DEFINE CLEARST 0X02 ; 保留(27)
#DEFINE COPYSERIAL 0X1D ; serial num copy
#DEFINE WICMIMA 0X1E ; IC卡密码(随机数取反)(3)
#DEFINE WICMIMA1 0X21 ; IC卡密码备份1(3)
#DEFINE WYZWATER 0X24 ; 预置水量(3)
#DEFINE WMCONSTB 0X27 ; 脉冲常数备份(1)
#DEFINE WMNUMB 0X28 ; 水表表号备份(5)
#DEFINE WCISHUB 0X2D ; 购水次数备份(2)
#DEFINE WBCWATER 0X2F ; 本次购水量<上次>(3)
#DEFINE WBCWATER1 0X32 ; 本次购水量(3)
#DEFINE CLEARST1 0X35 ; 保留(9)
#DEFINE WWATER 0X3F ; 购水量(3)
#DEFINE WSYWATER 0X42 ; 剩余水量(3)
#DEFINE WLJYWATER 0X45 ; 累计用水量(3)
#DEFINE WGLWATER 0X48 ; 过零水量(3)
#DEFINE WFFCARD 0X4B ; 非法插卡次数(2)
#DEFINE WSKBFLAG 0X4D ; 水卡表状态字(1)
#DEFINE WMCONST 0X4E ; 脉冲常数(1)
#DEFINE WMNUM 0X4F ; 表号(5)
#DEFINE WCISHU 0X54 ; 购水次数(2)
#DEFINE WBJWATER 0X56 ; 报警水量(3)
#DEFINE WXGWATER 0X59 ; 限购水量(3)
#DEFINE WDCCS 0X5C ; 断磁次数(1)
#DEFINE RANDOMPASS 0X5d ;随机密?
#DEFINE WDSPNT 0X60 ; 水表底数(4)
#DEFINE ZBNUM 0X68
#DEFINE WARNF 0X6A
#DEFINE RAMBF 0X80 ;20-25
#DEFINE TEMPBF 0X90 ;PORTB
;********************************************************************************
ORG 0X0000
GOTO BEGIN
; ORG 0X0004
; GOTO PIC_ISR
ORG 0X0060
BEGIN: MOVLW B'11111111'
MOVWF PORTC
BSF STATUS, RP0
MOVLW B'00000111'
MOVWF ADCON1
MOVLW B'10000010'
MOVWF OPTION_REG
CLRWDT
CLRW
MOVWF INTCON
MOVWF PIE1
MOVWF PIR1
MOVWF PIE2
MOVWF TXSTA
MOVWF RCSTA
MOVWF TRISA
NOP
NOP
NOP
MOVLW 0XF7
MOVWF TRISB
MOVLW B'01000000'
MOVWF TRISC
BCF STATUS, RP0
MOVLW B'00111111'
MOVWF PORTA
MOVLW B'11111111'
MOVWF PORTC
;************************************************
CLRWDT
BCF PCLATH, 4
BCF PCLATH, 3
MOVLW 0X53
MOVWF RECBUFFER+.31
MOVLW 0X20
MOVWF FSR
CLRW
INIT1: MOVWF INDF
INCF FSR, 1
DECFSZ RECBUFFER+.31, 1
GOTO INIT1
NOP
;BCF FLAG3, PASS
;BSF PCLATH, 3
;CALL VALVE
;BCF PCLATH, 3
MOVLW DISBUFFER
MOVWF FSR
MOVLW CLEAR
MOVWF READDRESS
MOVLW 0X02
MOVWF READLENGTH
CALL READ24C02
MOVF DISBUFFER, 0
XORLW 0XFF
BTFSC STATUS, Z
GOTO INIT2
MOVF DISBUFFER+.1, 0
XORLW 0XFF
BTFSC STATUS, Z
GOTO INIT2
GOTO INIT3
INIT2: BSF PCLATH, 3
CALL CLEARSTOCK
BCF PCLATH, 3
;BCF STATUS, RP0
;BSF FLAG2, ENBLEDIS
;BSF PCLATH, 3
;CALL DISPLCD
;BCF PCLATH, 3
INIT3: ;BSF PCLATH, 3
;CALL CLEARSTOCK
;BCF PCLATH, 3
MOVLW DISBUFFER
MOVWF FSR
MOVLW RAMBF
MOVWF READDRESS
MOVLW 0X04
MOVWF READLENGTH
CALL READ24C02
MOVLW 0X48
MOVWF FSR
MOVF INDF,0
MOVWF FLAG1
INCF FSR,1
MOVF INDF,0
MOVWF FLAG2
INCF FSR,1
MOVF INDF,0
MOVWF FLAG3
INCF FSR,1
MOVF INDF,0
MOVWF FLAG4
MOVLW DISBUFFER
MOVWF FSR
MOVLW TEMPBF
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
MOVF DISBUFFER,0
MOVWF ATEMP
MOVLW DISBUFFER
MOVWF FSR
MOVLW ZBNUM
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
MOVF DISBUFFER, 0
MOVWF ZBNO
ANDLW 0XF0
BTFSC STATUS, Z
GOTO L1
CLRF ZBNO
CLRF DISBUFFER
MOVLW DISBUFFER
MOVWF FSR
MOVLW ZBNUM
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL WR24C02
L1: MOVLW DISBUFFER
MOVWF FSR
MOVLW WARNF
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
MOVF DISBUFFER, 0
MOVWF FMCOUNT
MOVLW DISBUFFER
MOVWF FSR
MOVLW WSKBFLAG
MOVWF READDRESS
MOVLW 0X01
MOVWF READLENGTH
CALL READ24C02
BTFSC DISBUFFER, 3
BSF FLAG1, LOWPOWER
;BTFSC DISBUFFER, 2
BCF FLAG1, YZWATER
BTFSC DISBUFFER, 1
BSF FLAG1, MEMERR
BTFSC DISBUFFER, 0
BSF FLAG1, VALVEERR
;********************************************************
MAIN: CLRWDT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -