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

📄 cd64k.asm

📁 Keil中文版
💻 ASM
📖 第 1 页 / 共 5 页
字号:
			LJMP	PF50D

;读取 DELAY TIME
PF518:			MOV	A,PROGPRTM
			CLR	C
			SUBB	A,#02H
			CLR	A
			JC	PF519
			LJMP	PF51C
	PF519:		JB	HSBERRENB,PF51C
			MOV	A,#05H
			ADD	A,PROGPRTM
			MOV	R6,A
			MOV	R7,#00H
			LCALL	HSBMSGRET
			JNZ	PF519
	PF51A:		MOV	A,#35H
			ADD	A,PROGPRTM
			XRL	A,R4
			JNZ	PF518
			MOV	A,R5
			CLR	C
			SUBB	A,#50H
			JC	PF51B
			MOV	R5,#50H
	PF51B:		MOV	A,R5
	PF51C:		RET
;-------------------------------------------------------------
;触摸屏
PF541:			MOV	A,B
			ANL	A,#0FH
			MOV	R1,A
			SUBB	A,#02H
			JNC	PF542
			MOV	PROGPRTM,R1
			MOV	R4,#00H
			LJMP	PF501K1
	PF542:		MOV	PROGSTATE,#00H
			LJMP	PF001
;-------------------------------------------------------------
;DELAY TIME
PF500:			MOV	R4,#00H
			MOV	A,PROGPRTM
			CJNE	A,#02H,PF500K1
			MOV	PROGSTATE,#00H
			LJMP	PF001
	PF500K1:	INC	PROGPRTM
	PF500K2:	MOV	A,PROGPRTM
			CLR	C
			SUBB	A,#03H
			JC	PF501K1
PF501:			MOV	R4,#00H
			MOV	PROGPRTM,#00H
	PF501K1:	MOV	A,#06H
			LCALL	DISPWIN		;显示一窗口

	PF502:		LCALL	CLRWINBCK
			MOV	A,PROGPRTM
			CJNE	A,#00H,PF508
			;CENTER
			MOV	DPX0,#58
			MOV	DPX1,#100
			MOV	DPY0,#2
			MOV	DPY1,#20
			LCALL	FilRect
			MOV	R4,#00H
			LJMP	PF50D
	PF508:		CJNE	A,#01H,PF50C
			;REAR
			MOV	DPX0,#2
			MOV	DPX1,#28
			MOV	DPY0,#130
			MOV	DPY1,#156
			LCALL	FilRect
			MOV	DPX0,#130
			MOV	DPX1,#156
			MOV	DPY0,#130
			MOV	DPY1,#156
			LCALL	FilRect
			MOV	R4,#00H
			LJMP	PF50D

	PF50D:		LCALL	PF51A
			MOV	PROGPRTS,A
			LCALL	DISPDTL		;显示DELAY TIME
			LCALL	PF520
			LJMP	PF50E

	PF50C:		MOV	DPX0,#51	;RETURN
			MOV	DPX1,#110
			MOV	DPY0,#134
			MOV	DPY1,#153
			LCALL	FilRect
	PF50E:		LJMP	WLEND

;-------------------------------------------------------------
;显示BAR
PF520:			MOV	A,PROGPRTM
			JNZ	PF522
			;CENTER
			MOV	A,PROGPRTS
			CLR	C
			SUBB	A,#05H
			JC	PF521
			MOV	PROGPRTS,#05H
	PF521:		MOV	A,PROGPRTS
			MOV	B,#12H
			MUL	AB
			MOV	PROGPRTS,A
			SJMP	PF525
	PF522:		MOV	A,PROGPRTS
			CLR	C
			SUBB	A,#0FH
			JC	PF523
			MOV	PROGPRTS,#0FH
	PF523:		MOV	A,PROGPRTS
			MOV	B,#06H
			MUL	AB
			MOV	PROGPRTS,A
	PF525:		MOV	A,PROGPRTS
			JZ	PF52C
			CLR	C
			SUBB	A,#90
			JNC	PF52D
	PF526:		
			MOV	DPX0,#35
			MOV	A,PROGPRTS
			ADD	A,#35
			MOV	PROGPRTS,A
			MOV	DPX1,A
			MOV	DPY0,#106
			MOV	DPY1,#125
			LCALL	FilRect

			MOV	DPX0,PROGPRTS
			MOV	DPX1,#125
			MOV	DPY0,#106
			MOV	DPY1,#125
			LCALL	ClrRect
			RET

	PF52C:		;0
			MOV	DPX0,#35
			MOV	DPX1,#125
			MOV	DPY0,#106
			MOV	DPY1,#125
			LCALL	ClrRect
			RET
	PF52D:		;所有
			MOV	DPX0,#35
			MOV	DPX1,#125
			MOV	DPY0,#106
			MOV	DPY1,#125
			LCALL	FilRect

			RET

;-------------------------------------------------------------
;读取 LEVEL TRIM
PF618:			MOV	A,PROGPRTM
			CLR	C
			SUBB	A,#04H
			CLR	A
			JC	PF619
			LJMP	PF61C
	PF619:		JB	HSBERRENB,PF61C
			MOV	A,#18H
			ADD	A,PROGPRTM
			MOV	R6,A
			MOV	R7,#00H
			LCALL	HSBMSGRET
			JNZ	PF619
	PF61A:		MOV	A,#48H
			ADD	A,PROGPRTM
			XRL	A,R4
			JNZ	PF618
			MOV	A,R5
			CLR	C
			SUBB	A,#15H
			JC	PF61B
			MOV	R5,#14H
	PF61B:		MOV	A,R5
	PF61C:		RET
;设置 LEVEL TRIM
;++
PF612:			MOV	A,PROGPRTM
			CLR	C
			SUBB	A,#04H
			JC	PF613
			LJMP	PF60E
	PF613:		JB	HSBERRENB,PF613K3
			MOV	A,#18H
			ADD	A,PROGPRTM
			MOV	R6,A
			MOV	R7,#0C0H
			LCALL	HSBMSGRET
			JNZ	PF613
	PF613K3:	LJMP	PF603
;--
PF614:			MOV	A,PROGPRTM
			CLR	C
			SUBB	A,#04H
			JC	PF615
			LJMP	PF60E
	PF615:		JB	HSBERRENB,PF613K3
			MOV	A,#18H
			ADD	A,PROGPRTM
			MOV	R6,A
			MOV	R7,#80H
			LCALL	HSBMSGRET
			JNZ	PF615
			LJMP	PF603
;触摸屏
PF641:			MOV	A,B
			ANL	A,#0FH
			MOV	R1,A
			SUBB	A,#04H
			JNC	PF642
			MOV	PROGPRTM,R1
			MOV	R4,#00H
			LJMP	PF602
			
	PF642:		MOV	PROGSTATE,#00H
			LJMP	PF001

;DO LEVEL TRIM
PF631:			MOV	R4,#00H
			MOV	A,PROGPRTM
			CLR	C
			SUBB	A,#04H
			JC	PF635
			MOV	PROGSTATE,#00H
			LJMP	PF001
	PF635:		INC	PROGPRTM
			LJMP	PF602


;LEVEL TRIM
PF601:			MOV	R4,#00H
			MOV	PROGPRTM,#00H
	PF602:		MOV	A,#07H
			LCALL	DISPWIN		;显示一窗口
			LCALL	CLRWINBCK

			MOV	A,PROGPRTM
			CJNE	A,#00H,PF605
			;CENTER
			MOV	DPX0,#58	;CENTER
			MOV	DPX1,#100
			MOV	DPY0,#2
			MOV	DPY1,#20
			LCALL	FilRect
			LJMP	PF60C
	PF605:		CJNE	A,#01H,PF608
			;SUPPWOOFER
			MOV	DPX0,#5		;SW
			MOV	DPX1,#27
			MOV	DPY0,#97
			MOV	DPY1,#125
			LCALL	FilRect
			LJMP	PF60C
	PF608:		CJNE	A,#02H,PF60A
			;REAR LEFT
			MOV	DPX0,#2		;REAR
			MOV	DPX1,#28
			MOV	DPY0,#130
			MOV	DPY1,#156
			LCALL	FilRect
			LJMP	PF60C
	PF60A:		CJNE	A,#03H,PF60B
			;REAR RIGHT
			MOV	DPX0,#130	;REAR
			MOV	DPX1,#156
			MOV	DPY0,#130
			MOV	DPY1,#156
			LCALL	FilRect
			SJMP	PF60C
	PF60B:		;RETURN
			MOV	DPX0,#49
			MOV	DPX1,#110
			MOV	DPY0,#134
			MOV	DPY1,#153
			LCALL	FilRect
			LJMP	WLEND

	PF60C:		MOV	R4,#00H

	PF603:		LCALL	PF61A
			MOV	R1,A
			CLR	C
			MOV	A,#14H
			SUBB	A,R1
			MOV	PROGPRTS,A
			LCALL	DISPDTL		;显示LEVEL TRIM

			MOV	A,PROGPRTS
			MOV	B,#04H
			MUL	AB
			MOV	DPX0,A
			MOV	A,#129
			SUBB	A,DPX0
			MOV	DPX0,A

			MOV	DPX1,#132
			MOV	DPY0,#106
			MOV	DPY1,#125
			LCALL	ClrRect

			MOV	A,PROGPRTS
			MOV	B,#04H
			MUL	AB
			MOV	DPX1,A
			MOV	A,#129
			SUBB	A,DPX1
			MOV	DPX1,A
			MOV	DPX0,#31
			MOV	DPY0,#106
			MOV	DPY1,#125
			LCALL	FilRect

	PF60E:		LJMP	WLEND
;-------------------------------------------------------------
	PIV00F:		POP	ACC
			POP	PSW
			RETI
PINT0:			PUSH	PSW		;遥控接收处理
			PUSH	ACC
			MOV	PSW,#08H	;RS=01
			JNB	RMTSNLHI,PIV01E
	PIV011:		MOV	A,RMTSNLWCTR
			SUBB	A,#0FAH
			JNC	PIV00F

			MOV	A,RMTSNLWCTR
			SUBB	A,#0F7H
			JNC	PIV01E

			MOV	A,RMTSNLWCTR
			SUBB	A,#0F3H		;F6-F3
			JC	PIV013
			MOV	A,RMTSNLWCTR
			CLR	C	;BIT 0
			SJMP	PIV021

	PIV013:		MOV	A,RMTSNLWCTR
			SUBB	A,#0ECH
			JNC	PIV01E
			MOV	A,RMTSNLWCTR
			SUBB	A,#0E8H		;EB-E8
			JC	PIV015
			MOV	A,RMTSNLWCTR
			SETB	C	;BIT 1
			SJMP	PIV021
	PIV015:		MOV	A,RMTSNLWCTR
			SUBB	A,#98H
			JNC	PIV01E	;>11.4ms
			MOV	A,RMTSNLWCTR
			SUBB	A,#88H
			JC	PIV016	;<10.9ms
			;连续按键前导信号
			JNB	RMKEYENB,PIV01E
			MOV	RMKEYINPUT,#INPUTENB
			SETB	RMKEYCNTUE	;为连续键有效标志
			MOV	RMKEYCTR,#1BH	;<120 ms

			MOV	RMTSNLWCTR,#00H
			SETB	RMTSNLHI
			POP	ACC
			POP	PSW
			RETI
	PIV016:		MOV	A,RMTSNLWCTR
			SUBB	A,#7FH
			JNC	PIV01E	;>13.9ms
			MOV	A,RMTSNLWCTR
			SUBB	A,#73H
			JC	PIV01E	;<13.1ms
			;新按键前导信号
			SETB	RMKEYBUFENB	 ;有效标志
			MOV	RMKEYBUFPNT,#00H ;缓冲区指针
			MOV	RMKEYINPUT,#ISNULL
			CLR	RMKEYENB	 ;命令标志

			MOV	RMTSNLWCTR,#00H
			SETB	RMTSNLHI
			POP	ACC
			POP	PSW
			RETI
	PIV01E:		MOV	RMTSNLWCTR,#00H
			SETB	RMTSNLHI
			CLR	RMKEYBUFENB	 ;有效标志
			POP	ACC
			POP	PSW
			RETI

	PIV021:		NOP	;新按键数据位
			JNB	RMKEYBUFENB,PIV01E
			MOV	A,RMKEYBUF+3
			RRC	A
			MOV	RMKEYBUF+3,A
			MOV	A,RMKEYBUF+2
			RRC	A
			MOV	RMKEYBUF+2,A
			MOV	A,RMKEYBUF+1
			RRC	A
			MOV	RMKEYBUF+1,A
			MOV	A,RMKEYBUF
			RRC	A
			MOV	RMKEYBUF,A
			INC	RMKEYBUFPNT	;缓冲区指针
			MOV	A,RMKEYBUFPNT
			XRL	A,#20H
			JNZ	PIVEFF
			;接收命令完成
			MOV	A,RMKEYBUF
			CPL	A
			XRL	A,RMKEYBUF+1
			JNZ	PIV01E
			MOV	A,RMKEYBUF
			XRL	A,#14H
;			JNZ	PIV01E
			

			MOV	A,RMKEYBUF+2
			CPL	A
			XRL	A,RMKEYBUF+3
			JNZ	PIV01E

			CLR	RMKEYBUFENB
			SETB	RMKEYENB		;命令标志
			MOV	RMKEYWORD,RMKEYBUF+2	;命令字节
			MOV	RMKEYINPUT,#INPUTENB
			CLR	RMKEYCNTUE		;开始按键
			MOV	RMKEYCTR,#0FH	 ;<120-45 ms
			CLR	A
			MOV	RMKEYBUF,A
			MOV	RMKEYBUF+1,A
			MOV	RMKEYBUF+2,A
			MOV	RMKEYBUF+3,A

	PIVEFF:		MOV	RMTSNLWCTR,#00H
			SETB	RMTSNLHI
			POP	ACC
			POP	PSW
			RETI
;-------------------------------------------------------------------
TIME0:			DJNZ	RMTSNLWCTR,PTI001
			CLR	RMTSNLHI	;信号宽度最大溢出
	PTI001:		DJNZ	SYSTCRL,PTI00E
			PUSH	PSW
			PUSH	ACC
			MOV	SYSTCRL,#32H	;5ms定时
			MOV	C,HSBSEND
			ORL	C,HSBRECEIVE
			ORL	C,HSBREQUEST
			JNC	PTI011
			DJNZ	HSBTCNT,PTI011
			MOV	A,22H
			CLR	HSBSEND		;HSB命令超时
			CLR	HSBRECEIVE
			CLR	HSBREQUEST	;已请求标志
			SETB	HSBHOLD
			SETB	HSBSDA
			SETB	HSBBCK

	PTI011:		JNB	RMKEYENB,PTI012
			DJNZ	RMKEYCTR,PTI012
			CLR	RMKEYENB	;命令超时
	PTI012:		DJNZ	SYSTCRH,PTI013
			MOV	SYSTCRH,#0AH	;50ms定时
			SETB	INKEYENB	;接收按键
			SETB	GETPENENBLED	;读触摸屏使能
	PTI012K:	DJNZ	HSBERRNUMTCR,PTI013	;出错次数
			MOV	HSBERRNUMTCR,#10H
			SETB	HSBERRENB	;出错使能

	PTI013:		DJNZ	DSPFLCTR,PTI014	;其它处理
			MOV	DSPFLCTR,#64H	;500ms
			SETB	DSPFLENB	;闪动标志
	PTI014:		DJNZ	PROGHSBTCR,PTI01F
			SETB	PROGHSBERR
	PTI01F:		POP	ACC
			POP	PSW
	PTI00E:		RETI

;------------------------------------------------------------
;发送/接收命令
;参数:命令于R6-R7
;返回:A(如成功 A=0x00) R4R5:回收数据



HSBMSGRET:		
;			JNB	HSBKEYENB,MPM01
;			LCALL	GDSFMTROK
;			CLR	HSBKEYENB
;			MOV	A,#02H
;			RET
	MPM01:		LCALL	HSBSENDMSG
			JZ	HSBMSGR01
	HSBMSGR00:	RET
	HSBMSGR01:	MOV	PROGHSBTCR,#64H	;=100*5ms
			NOP
			CLR	PROGHSBERR
			CLR	HSBCMDENB
	HSBMSGR03:	MOV	A,#05H		;回收数据出错
			JB	PROGHSBERR,HSBMSGR00
			NOP
			JB	HSBCMDENB,HSBMSGR05
			NOP
			SJMP	HSBMSGR03
	HSBMSGR05:	MOV	R4,HSBCMDBUF
			MOV	R5,HSBCMDBUF+1
			CLR	HSBCMDENB
			CLR	A
			RET
;------------------------------------------------------------
;发送/接收命令
;参数:命令于R6-R7
;返回:A(如成功 A=0x00) R4R5:回收数据
HSBKEYRET:		LCALL	HSBSENDMSG
			JZ	HSBKEYR01
	HSBKEYR00:	RET
	HSBKEYR01:	MOV	PROGHSBTCR,#64H	;=100*5ms
			NOP
			CLR	PROGHSBERR
			CLR	HSBKEYENB
	HSBKEYR03:	MOV	A,#05H		;回收数据出错
			JB	PROGHSBERR,HSBKEYR00
			NOP
			JB	HSBKEYENB,HSBKEYR05
			NOP
			SJMP	HSBKEYR03
	HSBKEYR05:	MOV	R4,HSBKEYBUF
			MOV	R5,HSBKEYBUF+1
			CLR	HSBKEYENB
			CLR	A
			RET
;------------------------------------------------------------
TIME1:			PUSH	ACC
			SETB	RPSNL
			JB	RPSNL,PTI1EE
			MOV	A,#05H
	PTI111:		NOP
			NOP
			DEC	A
			JNZ	PTI111
			JB	RPSNL,PTI1EE
			MOV	A,#05H
	PTI112:		NOP
			NOP
			DEC	A
			JNZ	PTI112
			JB	RPSNL,PTI1EE
			MOV	A,#05H
	PTI113:		NOP
			NOP
			DEC	A
			JNZ	PTI113
			MOV	A,#05H
	PTI114:		NOP
			NOP
			DEC	A
			JNZ	PTI114

			JB	RPSNL,PTI1EE
			SETB	RPDIRSNL	;数码电位器中断
			SETB	RPENB
			JB	RPDIRSNL,PTI101
			CLR	RPDIR	;反方向
			POP	ACC
			RETI
	PTI101:		SETB	RPDIR		;正方向
	PTI1EE:		POP	ACC
			RETI
;------------------------------------------------------------
PINT1:			JB	HSBSEND,PIV1FE	;发送中
			PUSH	PSW		;HSB处理
			PUSH	ACC
			MOV	PSW,#10H	;RS=01
			JB	HSBRECEIVE,PIV131	;接收中
			JB	HSBHOLD,PIV1FF
;			JNB	HSBCMDENB,PIV111
;			SETB	HSBREQUEST	;设置已请求标志
;			MOV	HSBTCNT,#29H
;			SJMP	PIV1FF
	PIV111:		MOV	HSBBUFPNT,#00H
			MOV	HSBTCNT,#29H
			SETB	HSBRECEIVE
			CLR	HSBBCK
	PIV1FF:		POP	ACC
			POP	PSW
	PIV1FE:		RETI

PIV131:			MOV	A,#0FH
			CLR	C
			SUBB	A,HSBBUFPNT
			JC	PIV133		;已完成
			MOV	C,HSBSDA	;接收一位
			MOV	A,HSBBUF+1
			RLC	A
			MOV	HSBBUF+1,A
			MOV	A,HSBBUF
			RLC	A
			MOV	HSBBUF,A
			INC	HSBBUFPNT
			MOV	A,HSBBUFPNT
			MOV	C,ACC.0
			MOV	HSBBCK,C
			SJMP	PIV1FF
	PIV133:		CLR	HSBRECEIVE
			MOV	A,HSBBUF
			CLR	C
			SUBB	A,#30H
			JNC	PIV134
			SETB	HSBKEYENB
			MOV	HSBKEYBUF,HSBBUF
			MOV	HSBKEYBUF+1,HSBBUF+1
			SETB	HSBBCK
			SJMP	PIV1FF
	PIV134:		JB	HSBCMDENB,PIV135 ;命令缓冲区已满
			MOV	HSBCMDBUF,HSBBUF
			MOV	HSBCMDBUF+1,HSBBUF+1
			SETB	HSBCMDENB
	PIV135:		SETB	HSBBCK
			SJMP	PIV1FF

;-------------------------------------------------------------------
;发送命令
;参数:命令于R6-R7
;返回:A(如成功 A=0x00)
HSBSENDMSG:		MOV	A,#0FH
			CLR	EX1
			JB	HSBRECEIVE,HSBSMSGFF
			JB	HSBREQUEST,HSBSMSGFF

⌨️ 快捷键说明

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