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

📄 main02.asm

📁 motorala JL8程序代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	ldhx	keyDown
	sthx	keyTemp
	mov	keyDown+2,keyTemp+2
	jsr	keypadSub
	ldhx	keyTemp			; subroutine
	sthx	keyDown
	mov	keyTemp+2,keyDown+2
	bra	keyLP02
keyLP020
	clr	keyDown
	clr	keyDown+1
	clr	keyDown+2
keyLP02:
	brset	3,PORTA,keyLP030
	; ---------------------
	ldhx	keyLamp
	sthx	keyTemp
	mov	keyLamp+2,keyTemp+2
	jsr	keypadSub
	ldhx	keyTemp			; subroutine
	sthx	keyLamp
	mov	keyTemp+2,keyLamp+2
	rts
keyLP030
	clr	keyLamp
	clr	keyLamp+1
	clr	keyLamp+2
	rts
	
	; --------no any keys----------
nokeyLP00:
	lda	#$0c
	ldhx	#keySet
nokeyLP10
	clr	,x
	incx
	dbnza	nokeyLP10
	ldhx	#$bb8
	cphx	nokeyCounter
	blo	nokeyLP01		; 60S
	inc	nokeyCounter+1
	lda	nokeyCounter+1
	beq	nokeyLP02
	rts
nokeyLP02:
	inc	nokeyCounter
	rts
nokeyLP01:
	bset	0,keyFlag		; no any key 60S flag
	rts
; -------------------------------------
; input:	none
; output:	5S,1S,excute flag
; -------------------------------------
keypadSub
	jsr	key5S
	brset	4,keyTemp,keyLP50	; 2S flag
	brset	3,keyTemp,keyLP20	; 1S flag
	brset	0,keyTemp,keyLP21	; confirm flag
	bset	0,keyTemp
	rts
keyLP50:
	dbnz	keyTemp+1,keyRts
	mov	#$05,keyTemp+1
	bset	1,keyTemp
	rts
keyLP20:
	dbnz	keyTemp+1,keyRts
	mov	#$10,keyTemp+1
	bset	1,keyTemp
	rts
keyLP21:
	brset	2,keyTemp,keyRts
	bset	1,keyTemp
	bset	2,keyTemp
	rts
	; -----------------
key5S:
	brset	5,keyTemp,keyRts
	lda	#$20
	cmp	keyTemp+2
	beq	keyLP32
	lda	#$80
	cmp	keyTemp+2
	beq	keyLP33
	lda	#$fa
	cmp	keyTemp+2
	blo	keyLP31
	inc	keyTemp+2
keyRts
	rts
keyLP31
	bset	5,keyTemp		; 5S flag
	rts
keyLP32
	bset	3,keyTemp		; 1S flag
	mov	#$11,keyTemp+1
	inc	keyTemp+2
	rts
keyLP33
	bset	4,keyTemp		; 2S flag
	mov	#$06,keyTemp+1
	inc	keyTemp+2
	rts
; -------------------------------------
; level seting
; -------------------------------------
levoutSet
	brset	1,levelFlag,levelFirst	; first level
	brset	0,levelFlag,levelLP00	; out level
	brclr	3,keySet,levelRts	; key "SET" 1S flag
	brset	7,keySet,levelRts	; key invalid
	inc	levelFlag
	bset	7,keySet
	mov	settemp,settempBak	; --
levelRts
	rts
exitLevout
	clr	levelFlag
	rts
levelLP00
	brset	0,keyFlag,exitLevout	; no any key 60S flag
	jsr	levoutSetting
	jsr	levoutDisplay
	rts
levoutSetting
	brset	1,keySet,levelLP01
	brset	1,keyUp,levelLP02
	brset	1,keyDown,levelLP03
	rts
levelLP01
	brset	7,keySet,levelLP04	; key invalid
	bclr	0,levelFlag
	bset	7,keySet
	bset	6,eepFlag		; save settempBak
	mov	settempBak,settemp	; confirm the new value
	rts
levelLP02
	bclr	1,keyUp
	inc	settempBak
	rts
levelLP03
	bclr	1,keyDown
	dec	settempBak
	rts
levelLP04
	brclr	5,keySet,levelRts
	; ----------------------------------
	inc	levelFlag		; enter the first level
	clr	parameterNum
	clr	settingMode
	; ----------------------------------
	rts
levoutDisplay
	ldhx	#$0a
	lda	settempBak
	div
	psha
	pshh
	pula
	sta	dispBuf0
	pula
	clrh
	div
	sta	dispBuf2
	pshh
	pula
	sta	dispBuf1
	rts
; -------------------------------------
; first level setting
; -------------------------------------
levelFirst
	jsr	levelFirSet
	jsr	levelFirDis
	rts
	; -----------------------------
	; level first setting subrountine
	; -----------------------------
levelFirSet
	brset	7,keySet,levRts
	brset	0,keyFlag,levelFirexit	; no any key for more than 60S
	brset	5,keySet,levFirExitSave	; set key for 5S,exit
	jsr	parasetting
levRts
	rts
levFirExitSave
	bset	7,eepFlag		; save parameter flag
	clr	levelFlag
	ldhx	#sc
levFirLP00
	lda	$14,x			; copy scBak~spaBak to sc~spa
	sta	,x			; 0x14
	incx
	cpx	#spa
	bls	levFirLP00
	rts
levelFirexit
	clr	levelFlag
	rts
	; -----------------------------
	; set key dispose
	; settingMode=0 parameter setting
	; settingMode=1 value setting
	; -----------------------------
levFirSubSet
	brclr	1,keySet,levFirRts
	inc	settingMode
levFirRts
	rts
	; -----------------------------
	; parameter and value setting
	; -----------------------------
parasetting
	brset	1,keySet,levFirSubSet
	brset	0,settingMode,valueSetting
	; -----------------------------
	; parameter order setting
	; -----------------------------
parameterSetting
	brset	1,keyUp,upLP00
	brset	1,keyDown,downLP00
	rts
upLP00
	inc	parameterNum
	lda	#$12
	cmp	parameterNum
	bhi	upLP00Rts
	clr	parameterNum
upLP00Rts
	rts
downLP00
	dec	parameterNum
	brclr	7,parameterNum,upLP00Rts
	mov	#$12,parameterNum
	rts
	; -----------------------------
	; parameter value setting(parameterNum=1)
	; -----------------------------
valueSetting
	clrh
	lda	parameterNum
	lsla
	add	parameterNum
	tax	
	jmp	offsetTable,x
offsetTable
	jmp	setsc
	jmp	sets5
	jmp	setsrd
	jmp	setsr1
	jmp	setsr2
	jmp	setsc0
	jmp	setsc1
	jmp	setsc2
	jmp	setsc3
	jmp	setsc4
	jmp	setsc5
	jmp	setsdl
	jmp	setsdt
	jmp	setsdp
	jmp	setsdd
	jmp	setsds
	jmp	setsal
	jmp	setsah
	jmp	setspa
	rts
setsc
	rts
sets5
	rts
setsrd
	rts
setsr1
	rts
setsr2
	rts
setsc0
	rts
setsc1
	rts
setsc2
	rts
setsc3
	rts
setsc4
	rts
setsc5
	rts
setsdl
	rts
setsdt
	rts
setsdp
	rts
setsdd
	rts
setsds
	rts
setsal
	rts
setsah
	rts
setspa
	rts
	; -----------------------------
	; -----------------------------
levelFirDis
	rts
; -------------------------------------
; 74LS164 shift
; -------------------------------------
shifter:
	ldx	#$08
shifterLP02
	rola
	bclr	CLK,PORTB
	bset	DAT,PORTB
	bcc	shifterLP01
shifterLP03
	bset	CLK,PORTB
	dbnzx	shifterLP02
	rts
shifterLP01
	bclr	DAT,PORTB
	bra	shifterLP03
; -------------------------------------
; LED display segment table
; -------------------------------------
convert:
	fcb	%11000000,%11001111,%10100100,%10000110,%10001011
	fcb	%10010010,%10010000,%11000111,%10000000,%10000010 ; 0~9
	fcb	%10000001,%10011000,%10111100,%10001100,%10110000 ; a~e
	fcb	%10110001,%11111000,%10001001,%10100001,%10111101 ; F 10,L 11,H 12,P 13,r 14
	fcb	%10101101,%10111111,$ff,$ff,$ff			  ; / 15,- 16,

; --------------------------------------
; TIM overflow vector
; --------------------------------------
dispHandler:
	pshh
	clrh
        bclr    7,T2SC
	tst	counterDisp
	beq	dispCom0
	lda	#$1
	cmp	counterDisp
	beq	dispCom1
	lda	#$2
	cmp	counterDisp
	beq	dispCom2
	clr	counterDisp
exitLP00:
	pulh
	rti

dispCom0:
	bclr	7,PORTD
	ldx	dispBuf0
	lda	convert,x
	jsr	shifter
	;sta	PORTB
	bset	5,PORTD
	inc	counterDisp
	bra	exitLP00
dispCom1:
	bclr	5,PORTD
	ldx	dispBuf1
	lda	convert,x
	jsr	shifter
	;sta	PORTB
	bset	6,PORTD
	inc	counterDisp
	bra	exitLP00
dispCom2:
	bclr	6,PORTD
	ldx	dispBuf2
	lda	convert,x
	jsr	shifter
	;sta	PORTB
	bset	7,PORTD
	clr	counterDisp
	inc	flag
	bra	exitLP00
; -----------------------------------
; TIM1 channel 0 input capture interrupt
; -----------------------------------
sampleEnd
	bclr	7,T1SC0
	brset	6,sampleFlag,exitSampleLP00
	clr	sampleCounter
	brclr	0,sampleFlag,sampleEndLP00	; sampleFlag.0=0,res charge

	bclr	0,sampleFlag			; sample shift
	bset	1,sampleFlag			; sample end
	mov	T1CH0H,TMRES
	mov	T1CH0L,TMRES+1			; fix res
	bset	6,sampleFlag
exitSampleLP00:
	rti
sampleEndLP00:
	inc	sampleFlag
	mov	T1CH0H,TMSTR
	mov	T1CH0L,TMSTR+1			; thermister
	bset	6,sampleFlag
	rti
; -----------------------------------
; TIM1 overflow
; -----------------------------------
sampleErr:
	bclr	7,T1SC
	bclr	0,sampleFlag
	clr	sampleCounter
	bset	7,sampleFlag
	mov	#$01,errCode		; TIM overflow err
	rti
; -----------------------------------
; interrupt vector
; -----------------------------------
	org	$FFD0
	fcb	$ff

	org	$FFEC
	fdb	dispHandler	; TIM2 overflow interept vector
	fdb	dummyVector	; TIM2 channel 1
	fdb	dummyVector	; TIM2 channel 0
	fdb	sampleErr	; TIM1 overflow
	fdb	dummyVector	; TIM1 channel 1
	fdb	sampleEnd	; TIM1 channel 0

	; org	$FFFE
	fdb	main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -