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

📄 ka.asm

📁 湖北XX县电能卡表写卡机
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;------------------------------------------------------------------
;------------------------------------------------------------------
        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 + -