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 + -
显示快捷键?