📄 ka.asm
字号:
;------------------------------------------------------------------
;------------------------------------------------------------------
TITLE "PCMS type:A Program V1.0( DL )"
;list p=16F73, r=dec, x=on
list p=16F73, x=on
;name = DDSF73 METER
;湖北英山县售电写卡机2004。4。23.
; Register Definitions
;------------------------------------------------------------------
; Register Bank0 (00h - 7Fh) 专用寄存器1
;------------------------------------------------------------------
W EQU 0
INDF EQU 0
TMR0 EQU 1 ; real timer
PCL EQU 2 ; Prog
STATUS EQU 3 ; PIC status byte
FSR EQU 4 ; File Select Register
RA EQU 5 ; Port A
RB EQU 6 ; Port B
RC EQU 7 ; Port C
; ;特殊寄存器地址空间不连序
PCLATH EQU 0AH
INTCON EQU 0BH
PIR1 EQU 0CH
PIR2 EQU 0DH
TMR1L EQU 0EH
TMR1H EQU 0FH
T1CON EQU 10H
TMR2 EQU 11H
T2CON EQU 12H
SSPBUF EQU 13H
SSPCON EQU 14H
CCPR1L EQU 15H
CCPR1H EQU 16H
CCP1CON EQU 17H
RCSTA EQU 18H
TXREG EQU 19H
RCREG EQU 1AH
CCPR2L EQU 1BH
CCPR2H EQU 1CH
CCP2CON EQU 1DH
;
ADRES EQU 1EH ;16C73新增的.
ADCON0 EQU 1FH ;16C73新增的.
;----------------------------------------------------------
;------ (20h-7fh)---Register Bank0 通用寄存器0(自定义)
;----------------------------------------------------------
GENR0 EQU 20h ; temp_1
GENR1 EQU 21h ; temp_2
GENR2 EQU 22h ; temp_3
GENR3 EQU 23h ; temp_4
;
temp_1 EQU 20h
temp_2 EQU 21h
temp_3 EQU 22h
temp_4 EQU 23h
;--------
W_TEMP EQU 24h ;1 W 临时备份 ;0A4h
STATUS_TEMP EQU 25h ;2 OTHERS BANK
PCLATH_TEMP EQU 26h ;3 used as INT
FSR_TEMP EQU 27h ;4
GENR0_TEMP EQU 28h ;5
GENR1_TEMP EQU 29h ;6
GENR2_TEMP EQU 2Ah ;7
GENR3_TEMP EQU 2Bh ;8
;---------------
TXBUF EQU 2Ch ; TX buffer,I2C Bus
RXBUF EQU 2Dh ; RX buffer
COUNT EQU 2Eh ; Bit counter
byte_num EQU 2Fh ; R/W data buffer
address EQU 30h ; Address register
DLY_cnt1 EQU 31h
DLY_cnt2 EQU 32h ; DLY_cnt2 = temp_5
temp_5 EQU 32h ; ok?
;
;----备份(b0)---------------------------------------
;dsp_flag1 EQU 33h
error_flag EQU 33h ;IC卡读/写错误标志
dsp_flag2 EQU 34h ; display flag_2
meter_error EQU 35h ; 电表故障标志
prs_but_stat equ 35h ; 按键状态字
display_stat equ 35h ;???
Wt_epm_count EQU 36h ;写EPM 0.1kWh计数.
RWepmSTA EQU 37h ; write EEPROM status
Current_Date equ RWepmSTA+1 ; 3 byte(year,months,day)
Current_Time equ Current_Date+3 ; 3 bytes(hour,mintes,sencond)
;;-----变量,对应于E2PROM(存储次序)--------------
Mter_Add EQU Current_Time+3 ; 6 bytes
Mter_Pws EQU Mter_Add+6 ; 3 bytes
Mter_Num EQU Mter_Pws+3 ; 6 bytes
User_Num EQU Mter_Num+6 ;(4D) 6 bytes
Constat EQU User_Num+6 ;表常数 2 bytes
Record_Day EQU Constat+2 ;结算日 1 bytes
disp_digit EQU Record_Day+1 ;显示小数位数 1 byte
disp_time EQU disp_digit+1 ;显示时间 2 byte,GL/1 BYTE
dsp_flag1_bk EQU disp_time+2 ; 1 bytes
dsp_flag2_bk EQU dsp_flag1_bk+1 ; 1 bytes
;----------------------------------------;需存储于E2prom(14)
disp_ti_count EQU dsp_flag2_bk+1 ;显示"时间变量"1 byte
Record_flag1 EQU disp_ti_count+1 ;结算标志 1 byte
dsp_flag3 EQU Record_flag1 ;同一个字节
met_stat EQU dsp_flag3+1 ;表状态/费率状态 1 byte
clear_met_sw equ met_stat+1 ;清"00"电表计数.
;----------- ---------------
timer_Acount EQU clear_met_sw+1 ;广播表地址30S计时用.
press_sw_delay EQU timer_Acount+1 ;"按键"检测延时用
;------
kWh_Tst_Word EQU press_sw_delay+1 ;当月test word 1 bytes
aSLAVE EQU kWh_Tst_Word+1
IR_Rec EQU aSLAVE+1 ;?? ;红外收到的数据(1 byte)
dspbuf EQU IR_Rec+2
Lcd_RW_Buf EQU IR_Rec+2 ;+1 ;11 Bytes (ok)
Epm_RW_Buf EQU dspbuf+11 ;16 bytes
;------------------------------------------------------
;------------------------------------------------------
; Register Bank1 (80h - 0FFh) 专用寄存器1 |
;------------------------------------------------------
INDF_bak EQU 80h
OPTION1 EQU 81h
PCL_bak EQU 82h
STATUS_bak EQU 83h ; PIC status byte
FSR_bak EQU 84h ; File Select Register
TRISA EQU 85h ; Port A
TRISB EQU 86h ; Port B
TRISC EQU 87h ; Port C
;
PCLATH_bak EQU 8Ah
INTCON_bak EQU 8Bh
PIE1 EQU 8Ch
PIE2 EQU 8Dh
PCON EQU 8Eh
;
PR2 EQU 92h
SSPADD EQU 93h
SSPSTAT EQU 94h
;
TXSTA EQU 98h
SPBRG EQU 99h
ADCON1 EQU 9FH ;16C73新增的.
;-----------------------------------------------------------
;----------(0A0h-0FFh) Bank1(自定义)------------------------
;-----------------------------------------------------------
buzzer EQU 0A0h ;蜂鸣器鸣叫时间 1 byte.
Lamp_on EQU 0A1h ;校表led点亮时间控制.
COUNT485 EQU 0A2h ;485发送/接收到的字节(临时)计数
kWh_stat EQU 0A3h ;电量状态字(和按键共用)
broadcast_stat EQU 0A3h ;广播状态标志
W_TEMP1 EQU 0A4h ;W 临时备份 24h (bank0),不能动用!!!
CSCOM485 EQU 0A5h ;"485" 超时控制字
CONTROL485 EQU 0A6h ;485发送/接收控制
;
RCOUNT EQU CONTROL485+1 ;同上
temp_ir1 EQU RCOUNT+1 ;?
temp_ir2 EQU temp_ir1+1 ;??
;
TX_data EQU temp_ir2+1
Verified EQU TX_data+1 ;不可和TX_data同时使用
;
kWhsgn_cnt_hi EQU Verified+1 ;1 byte
kWhsgn_cnt_lo EQU kWhsgn_cnt_hi+1 ;1 byte
kWh_cnst EQU kWhsgn_cnt_lo+1 ;2 byte,表运行时用(初始值同Constat)
;kWh_cnst_l EQU kWh_cnst_h+1 ;1 byte,表运行时用(初始值同Constat)
;---------对应于E2PROM 内的数值-------------------------------
Tolt_kWh EQU kWh_cnst+2 ;当月总 4 bytes.
Peak_kWh EQU Tolt_kWh+4 ;当月峰 4 bytes.
Flat_kWh EQU Peak_kWh+4 ;当月平 4 bytes.
Vale_kWh EQU Flat_kWh+4 ;当月谷 4 bytes.
;
Revers_kWh EQU Vale_kWh+4 ;当月反 4 bytes.
program_count EQU Revers_kWh+4 ;编程次数 2 byte.
;编程时间(月,日,时,分 4byte)
;-------------------------------------------------------------
;;-------以下变量地址复用(红外缓冲区/时段)----------;;有6个空字节
IR_TXcv_Buf EQU program_count+2 ;红外收发缓冲区
; ;和费率时段"RAM"复用
met_Time1 EQU IR_TXcv_Buf+12 ;费率 (3*12) 3bytes
met_Time2 EQU met_Time1+3 ;费率 3 bytes
met_Time3 EQU met_Time2+3 ;费率 3 bytes
met_Time4 EQU met_Time3+3 ;费率 3 bytes
met_Time5 EQU met_Time4+3 ;费率 3 bytes
met_Time6 EQU met_Time5+3 ;费率 3 bytes
met_Time7 EQU met_Time6+3 ;费率 3 bytes
met_Time8 EQU met_Time7+3 ;费率 3 bytes
met_Time9 EQU met_Time8+3 ;费率 3 bytes
met_Time10 EQU met_Time9+3 ;费率 3 bytes
met_Time11 EQU met_Time10+3 ;费率 3 bytes
met_Time12 EQU met_Time11+3 ;费率 3 bytes
;
; ;红外收发缓冲区/和费率时段"RAM"复用
;
;------------------cpu变量定义结束-----------------------------
;--------------------------------------------------------------
;------------------CONTROL485(RegBnk1)-------------------------
ir_read equ 7 ;红外读标志
ir_write equ 6 ;红外写标志
speaker equ 4 ;蜂鸣器,1--响,0-不响.
ir_Rec_err equ 5 ;接收的数据错误.
ir_ident equ 3 ;1--数据标识码相等
ir_Txing equ 2 ;1----正在发送数据
ir_prs_end equ 1 ;1----接收的数据处理完成
ir_Recing equ 0 ;1----红外处在接收状态
;0----数据已接收完毕,可以去处理
;-------------------CONTROL485_bk(RegBnk0)-------------------------------
ir_ture_Recing equ 0 ;1----红外"真正"在接收数据
;0----数据"真正已接收完毕"可以去处理
;---------------------------------------------------------------
;-----"display_stat/meter_error/prs_but_stat"-------------------
;---------------------------------------------------------------
disp_bit equ 7 ;0---1位,1--2位小数位显示
dip_loop_time equ 6 ;1---循显时间到标志,0--未到.
disp_mode EQU 5 ;显示方式,0->按键方式,1->循显方式
press_sw EQU 4 ;0--无键按下,1--键已按下(无弹起)
NO_IC_error EQU 3 ;1---没插卡(2004.5.5)
test_code EQU 2 ;故障检测标志
E2PROM_error EQU 1 ;1----IC卡无应答(2004.5.5)
;Batton_flag EQU 0 ;1--电池LOW--ERROR
Verfy_Sum_err EQU 0 ;1--校验和错误
;-------------------------------------------------------------
; met_stat Bits
;-------------------------------------------------------------
Peak_Rate EQU 7 ;"峰"费率状态 (和时间同屏显示)
Flat_Rate EQU 6 ;"平"费率状态
Vale_Rate EQU 5 ;"谷"费率状态
;
kWh_test_falg EQU 4 ;电量检测标志位.
zero_timer EQU 3 ;零点标志(23:59:59)
minite_zero EQU 2 ;"整分钟"标志位.
au_updata_time EQU 1 ;"自动对时"标志位.
AD_convert EQU 0 ;1--START A/D CONVERT
;----------------------------------------------------------
; kWh_stat/broadcast_stat Bits (A3)
;----------------------------------------------------------
broad_Add equ 4 ;"广播写设备地址"标志
communct_okey equ 3 ;1--"通讯"成功,0--通讯失败.
kWhsgn_impuls EQU 2 ;LCD脉冲指示,1---有脉冲,0---没有脉冲.
kWhsgn EQU 1 ;1---high stat, 0---low stat
kWhsgn_add1 EQU 0 ;1---update ++0.1kwh
brd_cast_time equ 6 ;"广播校时"标志
read_data_time equ 5 ;"抄表校时"标志
soft_tol_clr equ 7 ;1--软件"总清,0--"表号->表地址".
;--------------------------------------------------------
; dsp_flag1 Bits
;--------------------------------------------------------
disp_ctime EQU 7 ; display "时间"
disp_date EQU 6 ; display "日期"
disp_Mter_Numl EQU 5 ;显示表号L
disp_User_Nubl EQU 4 ;显示户号L
disp_Tolt_kWh EQU 3 ; display "当月总"
disp_Peak_kWh EQU 2 ; dsiplay "当月峰"
disp_Flat_kWh EQU 1 ; display "当月平"
disp_Vale_kWh EQU 0 ; display "当月谷"
;-------------------------------------------------------
;
;---------------------------------------------------------------
; dsp_flag2 Bits
;---------------------------------------------------------------
disp_Revers_kWh EQU 7 ; display"反向总电量"
dispr_Tolt_kWh EQU 6 ; display "上月总"
dispr_Peak_kWh EQU 5 ; dsiplay "上月峰"
dispr_Flat_kWh EQU 4 ; display "上月平"
dispr_Vale_kWh EQU 3 ; display "上月谷"
dispr_Revers_kWh EQU 2 ; display"上反向总电量"
;--------------------------------------------------------------
;
;--------------------------------------------------------------
; dsp_flag3\Record_flag1 bits
;--------------------------------------------------------------
Record_1 equ 0 ;1-当月已结算过了,0-未结算过.
Record_2 equ 1 ;1--上月已结算,0-未结算过.
RTC_err_dsp equ 2 ;0---时钟RTC故障未显示.
broad_time_dsp equ 3 ;1---是广播时间后显示时间.
;
disp_dengli1 equ 5 ;display "dengli"
disp_met_Add equ 6 ;1--显示表地址.
disp_No_updata EQU 7 ;显示更新否 1--no
;--------------------------------------------------------------
; RWepmSTA Bits
;--------------------------------------------------------------
Rd_Rate_segment EQU 7 ;读费率时段
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -