sh69pall.asm
来自「电子秤源代码」· 汇编 代码 · 共 491 行
ASM
491 行
;*****************************************************
;Company :
;File Name : sh69pall.asm
;Author :wf
;Create Data : 2005-10-01
;Last Modified : 2005-10-01
;Description :
;Version : 1.0
;*****************************************************
NUM0 EQU 00H
NUM1 EQU 01H
NUM2 EQU 02H
NUM3 EQU 03H
NUM4 EQU 04H
NUM5 EQU 05H
NUM6 EQU 06H
NUM7 EQU 07H
NUM8 EQU 08H
NUM9 EQU 09H
NUMA EQU 0AH
NUMB EQU 0BH
NUMC EQU 0CH
NUMD EQU 0DH
NUME EQU 0EH
NUMF EQU 0FH
C_HENG EQU 0AH
C_STAR EQU 0BH
C_WELL EQU 0CH
C_NULL EQU 0DH
CHAR_C EQU 0EH
CHAR_E EQU 0FH
CHAR_T EQU 01H
CHAR_N EQU 02H
CHAR_D EQU 03H
CHAR_U EQU 04H
CHAR_L EQU 05H
CHAR_H EQU 06H
CHAR_F EQU 07H
CHAR_A EQU 08H
IE EQU 00H
IRQ EQU 01H
TM0 EQU 02H
TM1 EQU 03H
TL0 EQU 04H
TH0 EQU 05H
TL1 EQU 06H
TH1 EQU 07H
PORT_A EQU 08H ;I/O port_A define
PORT_B EQU 09H ;I/O port_B define
PORT_C EQU 0AH ;I/O port_C define
PORT_D EQU 0BH ;I/O port_D define
PORT_E EQU 0CH ;I/O port_E define
PORT_F EQU 0DH ;I/O port_F define
CPORTA EQU 18H ;I/O port_A define
CPORTB EQU 19H ;I/O port_B define
CPORTC EQU 1AH ;I/O port_C define
CPORTD EQU 1BH ;I/O port_D define
CPORTE EQU 1CH ;I/O port_E define
CPORTF EQU 1DH ;I/O port_F define
INX EQU 0fH
DPL EQU 10H
DPM EQU 11H
DPH EQU 12H
AD_SLC EQU 13H
AD_EN EQU 14H
AD_CON EQU 2fH
SLCDEN EQU 29H
SEGSET EQU 2EH
KEY_SC EQU 28H
TBR EQU 0EH ;table branch register
WDT EQU 1EH
;*******************************************************************
;NORMAL RAM
;*******************************************************************
RAM40 EQU 40H
CT0 EQU RAM40 ;variable 0 register
CT1 EQU RAM40+1 ;variable 1 register
CT2 EQU RAM40+2 ;variable 2 register
PARM EQU RAM40+3 ;parmeter register
COUNTTL EQU RAM40+4
COUNTTH EQU RAM40+5
AC_B EQU RAM40+6
TIME_F EQU RAM40+7
CPLFLG EQU 4BH
DISTMP0 EQU 4CH
DISTMP1 EQU 4DH
DISTMP2 EQU 4EH
DISTMP3 EQU 4FH
TEMP EQU 50H
TEMP0 EQU TEMP
TEMP1 EQU TEMP+1
TEMP2 EQU TEMP+2
TEMP3 EQU TEMP+3
TEMP4 EQU TEMP+4
TEMP5 EQU TEMP+5
TEMP6 EQU TEMP+6
RAM60 EQU 60H
MUS_N EQU RAM60 ;sound number register
FREQ_L EQU RAM60+1 ;FREQ. low register
FREQ_H EQU RAM60+2 ;FREQ. high register
NUM EQU RAM60+3
RAM70 EQU 70H
SEC_L EQU RAM70
SEC_H EQU RAM70+1
MIN_L EQU RAM70+2
MIN_H EQU RAM70+3
HOURL EQU RAM70+4
HOURH EQU RAM70+5
;*******************************
ORG 0000H
JMP RESET
JMP T0_SEVER
JMP T1_SEVER
JMP T2_SEVER
JMP EXINT
T0_SEVER:
RTNI
T1_SEVER:
NOP
LDI IRQ,00H
LDI IE,0100B
SBI COUNTTL,0AH
BAZ ADDTH
ADIM COUNTTL,01H
RTNI
ADDTH:
LDI COUNTTL,00H
SBI COUNTTH,0AH
BAZ ONESEC
ADIM COUNTTH,01H
RTNI
ONESEC:
LDI TIME_F,01H
LDI COUNTTH,00H
RTNI
T2_SEVER:
RTNI
EXINT:
RTNI
RESET:
;******************************
;SYS
;******************************
LDI TL1,NUMC
LDI TH1,NUME
LDI TM1,NUM9 ;1:512
LDI IE,0100B
LDI CT1,00H
;******************************
;RAMINI
;******************************
LDI SEC_L,NUM0
LDI SEC_H,NUM0
LDI MIN_L,NUM0
LDI MIN_H,NUM0
LDI HOURL,NUM0
LDI HOURH,NUM0
LDI COUNTTL,0
LDI COUNTTH,0
CALL CLRLCD
LDI TIME_F,00H
LDI CPLFLG,NUM8
;******************************
;LCD
;******************************
LDI WDT,1000B
LDI CT0,0EH ;set channel 1 enable,volume max
LDA CT0,0
STA SEGSET
LDI CT0,0FH ;set channel 1 enable,volume max
LDA CT0,0
STA SLCDEN
;******************************
;KEY
;******************************
; LDI KEY_SC,01H
;******************************
;TEST
;******************************
LDI CT0,08H
LDA CT0,0
STA CPORTB,0
;******************************
;AD
;******************************
LDI AD_SLC,NUM3
LDI AD_CON,NUMA
LDI AD_EN,NUM8
;******************************************************************
MAINLP:
NOP
NOP
; HALT
NOP
NOP
LDI WDT,1000B
SBI TIME_F,01H
BAZ SECPRC
JMP MAINLP
;===================================================================
;EVENT
;===================================================================
SECPRC:
LDI TIME_F,NUM0
CALL CLOCK
CALL CLRLCD
CALL DISPCLK
LDI DPH,NUM7
LDI DPM,NUM2
LDI DPL,NUMD
LDA INX
STA TEMP1
LDI DPL,NUME
LDA INX
STA TEMP2
LDI DPL,NUMF
LDA INX
STA TEMP3
LDI AD_SLC,NUM3
LDI AD_CON,NUMA
LDI AD_EN,NUM8
SBI CPLFLG,NUM8
BAZ LEDOFF
LDI CPLFLG,NUM8
JMP DSLCD
LEDOFF:
LDI CPLFLG,NUM0
DSLCD:
LDA CPLFLG,NUM0
STA PORT_B,NUM0
JMP MAINLP
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; subprogram
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DELAY:
SBIM PARM,01H
BC $+2
RTNI
LDI CT2,0FH
LDI CT1,0FH
LDI CT0,0FH
SBIM CT0,01H
BC $-1
SBIM CT1,01H
BC $-4
SBIM CT2,01H
BC $-7
LDI WDT,1000B
JMP DELAY
;**************************************************************
CLRLCD:
LDI DPH,6
LDI DPM,0
LDI DPL,0
LDI NUM,00H
SETZ:
LDI MUS_N,00H
SETZLP:
LDI CT0,00H
LDA CT0,0
STA INX
LDI WDT,1000B
ADIM DPL,01H
SBI MUS_N,0FH
BAZ SETTWO
ADIM MUS_N,01H
JMP SETZLP
SETTWO:
SBI NUM,01H
BAZ CLRRET
ADIM NUM,01H
LDI DPH,NUM6
LDI DPM,NUM2
LDI DPL,NUM0
JMP SETZ
CLRRET:
RTNI
;*********************************************************************
CLOCK:
SBI SEC_L,NUM9
BAZ SECHADD
ADIM SEC_L,NUM1
RTNI
SECHADD:
LDI SEC_L,NUM0
SBI SEC_H,NUM6
BAZ MINLADD
ADIM SEC_H,NUM1
RTNI
MINLADD:
LDI SEC_H,NUM0
SBI MIN_L,NUM9
BAZ MINHADD
ADIM MIN_L,NUM1
RTNI
MINHADD:
LDI MIN_L,NUM0
SBI MIN_H,NUM6
BAZ HOURLADD
ADIM MIN_H,NUM1
RTNI
HOURLADD:
LDI MIN_H,NUM0
SBI HOURL,NUM4
BAZ HOURHADD
ADIM HOURL,NUM1
RTNI
HOURHADD:
LDI HOURL,NUM0
SBI HOURH,NUM2
BAZ HOUROV
ADIM HOURH,NUM1
RTNI
HOUROV:
LDI HOURH,NUM0
RTNI
;*********************************************************************
DISPCLK:
LDI DPH,NUM2
LDI DPM,NUM0
LDI DPL,NUM0
LDA HOURH,NUM0
STA INX
ADIM DPL,NUM1
LDA HOURL,NUM0
STA INX
ADIM DPL,NUM1
LDA MIN_H,NUM0
STA INX
ADIM DPL,NUM1
LDA MIN_L,NUM0
STA INX
ADIM DPL,NUM1
LDA SEC_H,NUM0
STA INX
ADIM DPL,NUM1
LDA SEC_L,NUM0
STA INX
ADIM DPL,NUM1
LDI CT1,NUM6
LDI DISTMP0,NUM2
CALL DISPM
RTNI
;*********************************************************************
;IN:DISTMP0(BEGIN),CT1(LEN)
;*********************************************************************
DISPM:
LDI CT0,NUM0
LDI DISTMP1,NUM2
LDI DPH,NUM2
LDI DPM,NUM0
LDI DPL,NUM0
DISPLP:
LDA INX
STA TEMP0
STA DISTMP3
LDI DISTMP2,NUM0
FIND3:
LDA DISTMP3
; BAZ NEXTDS
ADIM DISTMP3,NUM1
LDI AC_B,NUM0
ADCM DISTMP2
; SBIM TEMP0,NUM1
; BAZ NEXTDS
; JMP FIND3
NEXTDS:
CALL DISPONE
SBIM CT1,NUM1
BAZ DISRET
ADIM DISTMP0,NUM2
BAZ NEXTCOM
JMP ADDAD
NEXTCOM:
STA DISTMP1,NUM2
STA DISTMP0,NUM0
SBI CT0,NUM1
BAZ DISRET
ADIM CT0,NUM1
ADDAD:
LDI DPH,NUM2
LDA TEMP2
STA DPM
LDA TEMP3
STA DPL
ADIM DPL,NUM1
LDI AC_B,0
ADCM DPM
JMP DISPLP
DISRET:
RTNI
;*********************************************************************
;IN:DISTMP0(BEGIN),DISTMP1(COM),DISTMP2,DISTMP3
;*********************************************************************
DISPONE:
LDA DPM
STA TEMP2
LDA DPL
STA TEMP3
LDA DISTMP2,NUM0
STA TBR
LDA DISTMP3,NUM0
CALL DISPTAB
STA CT2
LDI DPH,NUM6
LDA DISTMP1,NUM0
STA DPM,NUM0
LDA DISTMP0,NUM0
STA DPL,NUM0
LDA TBR,NUM0
STA INX
ADIM DPL,NUM1
LDA CT2,NUM0
STA INX
RTNI
;*********************************************************************
;TABLE
;*********************************************************************
;lcdtab: ;Dcgb0Efa
; Db 0D7H,50H,0B5H,0F1H,72H,0E3H,0E7H
; 0 1 2 3 4 5 6
; Db 51H,0F7H,0F3H,20H,0D0H,86H, 0H, 87H
; 7 8 9 - * # None C
; Db 0A7H,07H,57H,0F4H,0D6H,086H,76H,27H,77H
; E T N D U L H F A
ORG 0200H
DISPTAB: TJMP
RTNW 07H,0DH ;0
RTNW 00H,05H ;1
RTNW 05H,0BH ;2
RTNW 01H,0FH ;3
RTNW 02H,07H ;4
RTNW 03H,0EH ;5
RTNW 07H,0EH ;6
RTNW 01H,05H ;7
RTNW 07H,0FH ;8
RTNW 03H,0FH ;9
RTNW 00H,02H ;-
RTNW 00H,0DH ;*
RTNW 06H,08H ;#
RTNW 00H,00H ;NONE
RTNW 07H,08H ;C
RTNW 07H,0AH ;E
RTNW 07H,00H ;T
RTNW 07H,05H ;N
RTNW 04H,0FH ;D
RTNW 06H,0DH ;U
RTNW 06H,08H ;L
RTNW 06H,07H ;H
RTNW 07H,02H ;F
RTNW 07H,07H ;A
;===================================================================
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?