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

📄 okupd6464_0929.asm

📁 upd 6464a 取得程序 51 汇编指令
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;///显示测试程序,用内部信号显示0~9///
;**********************************************************
upd_clk		bit  	p1.0    ;upd时钟线引脚
upd_ncs		bit  	p1.1   ;upd片选线引脚
upd_io		bit  	p1.2    ;upd数据线引脚
clrpower	bit	p1.3	;power control
updown		bit	p1.5	;4811
clk		bit	p1.4	;4811
VOLADDKEY	BIT	P1.6	;KEY VOL ADD
VOLMIUSKEY		BIT	P1.7	;KEY VOL MIUS
;---------------------------------------------------
	status		equ	20h	; status.0 =0 miuse ,status.0 =1 tv,
					; status.2 =0 send power code  ,status.2 =1  no send power code ,
  					; status.1=0 lose key flag,  status.1=1 no lose key flag
  					; status.3=0 display dismain no banduan,  status.3=1 display dismain  banduan
  	searchstaus	equ	21h	;searchstaus.0=1 搜索歌名,searchstaus.0=0 没搜索歌名,
  					;searchstaus.1=1  is select, searchstaus.1=0  no select,
  				;ok	;searchstaus.2 =0 no search status ,searchstaus.2 =1 search status ,
  				;ok	;searchstaus.3 =0 no select status ,searchstaus.3 =1 select status
  				        ;searchstaus.4 =0 no searchselect status ,searchstaus.4 =1 searchselect status
  				;ok	;searchstaus.5 =0  no exit
  				; searchstaus.5 =1 exit search status
       KEYSTATUS		EQU	22H
  					;23,24,25,26 irdata

	row		equ	30h
	nbx		equ	31h
	nby		equ	32h
        temp    	equ     33h
        temp1		equ	34h
        disdata		equ	35h
        hour		equ	36h
        mimute		equ	37h
        second		equ	38h
        senddata	equ	39h
        countername	equ	3ah
  	move_time	equ	3bh
  	datatemp	equ	3eh
 	count		equ	3fh
  	losetimes	equ	40h
  	minute		equ	42h
  	checksum	equ	44h
  	tracknb		equ	45h
  	lrcurson	equ	46h
  	udcurson	equ	47h
  	titlechar	equ	48h
  	titlechar1	equ	49h
  	searchcount	equ	4ah
  	searchcode	equ	4bh	; 4bh-57h
  	searchtime	equ	58h
  	flashtime	equ	59h
  	searchsx	equ	5ah
  	sendpowtime	equ	5bh
  	inexmodule	equ	5ch
  	volcount	equ	5dh
  	voldiscount	equ	5eh
  	LISTCOUNT	EQU	5FH
  	LISTCOUNT1	EQU	60H
  	LISTCOUNT2	EQU	61H
  	totaltime	equ	62h
  	totaltime1	equ	63h
  	totaltime2	equ	64h
  	totaltime3	equ	65h
	jinxtime	equ	66h
	jinxtime1	equ	67h
	jinxtime2	equ	68h
	jindu           equ	69h
	jinxinjishu	equ	6ah
	plpastuse	equ	6bh
        ricount         equ     6ch
        ricount1	equ	6dh
        ritotal		equ	6eh
        duizao		equ	6fh
;**********************************************************
        ORG	00h
 	aJMP	resert
	org	03h
	ljmp	int_0
	org	50h
resert:
       	MOV	SP, #0deH		; sp set cfh
       	call	clrram
       call	iniuart
	setb	clrpower
	call	iniuart
	call	delay80ms
	mov	r7,#20
rset4811:
	call	volm
	djnz	r7,rset4811
        call	ipodini
	call	vola
	call	vola
	call	vola
	mov	volcount,#3
	mov	inexmodule,#01000001b
	call	ini6464
	SETB	IT0 ;		设定INT0的触发方式为脉冲负边沿触发
	SETB	EX0 ;		打开INT0中断请求
	mov	p2,#11100111b
	SETB EA 	;		打开CPU总中断请求
;--------------------------------------------------------------------------
main:
	SETB	IT0 ;		设定INT0的触发方式为脉冲负边沿触发
	SETB	EX0 ;		打开INT0中断请求
	mov	p2,#11100111b
	SETB	EA ;		打开CPU总中断请求
	SETB	VOLADDKEY
	SETB	VOLMIUSKEY
	JNB	VOLADDKEY,TOVOLADD
	JNB	VOLMIUSKEY,TOVOLMIUS
	jb	status.0,loop
	jmp	main
;----------------------------------------
TOVOLMIUS:
	CALL	DELAY
	JNB	VOLMIUSKEY,TOVOLMIUS_1
	JMP	MAIN
TOVOLMIUS_1:
	CALL	DELAY
	JNB	VOLMIUSKEY,TOVOLMIUS_2
	JMP	MAIN
TOVOLMIUS_2:
	JMP	KEYVOLMIUS
;-----------------------------------
TOVOLADD:
	CALL	DELAY
	JNB	VOLADDKEY,TOVOLADD_1
	JMP	MAIN
TOVOLADD_1:
	CALL	DELAY
	JNB	VOLADDKEY,TOVOLADD_2
	JMP	MAIN
TOVOLADD_2:
	JMP	KEYVOLADD
;---------------------------
loop:
       ; jb        status.2,loop_1
loop_1:
	jnb	status.0,main
	jb	searchstaus.2,loop
    	call	displaymain
    	SETB	IT0 ;		设定INT0的触发方式为脉冲负边沿触发
	SETB	EX0 ;		打开INT0中断请求
	mov	p2,#11100111b
	SETB	EA ;		打开CPU总中断请求
	JNB	VOLADDKEY,STOVOLADD
	JNB	VOLMIUSKEY,STOVOLMIUS
    	call	delay3s
 	jmp	loop
;--------------------------------------
STOVOLMIUS:
	CALL	DELAY
	JNB	VOLMIUSKEY,STOVOLMIUS_1
	JMP	loop
STOVOLMIUS_1:
	CALL	DELAY
	JNB	VOLMIUSKEY,STOVOLMIUS_2
	JMP	loop
STOVOLMIUS_2:
	JMP	KEYVOLMIUS
;-----------------------------------
STOVOLADD:
		CALL	DELAY
	JNB	VOLADDKEY,STOVOLADD_1
	JMP	loop
STOVOLADD_1:
	CALL	DELAY
	JNB	VOLADDKEY,STOVOLADD_2
	JMP	loop
STOVOLADD_2:
	JMP	KEYVOLADD
;**********************************************************
keydisplaypause:
	call	delay80ms
	call	delay80ms
	mov	dptr,#exttab15		; get play sdstaus display hour
	mov	duizao,#1dh
    	call	readwriteipod
    	mov	r0,#8eh
    	mov	a,@r0
    	cjne	a,#0,keydisplaypause_1
    	mov	dptr,#dplaypausetab
    	jmp	keydisplaypause_3
keydisplaypause_1:
	cjne	a,#1,keydisplaypause_2
	mov	dptr,#dplaypausetab1
	jmp	keydisplaypause_3
keydisplaypause_2:
	mov	dptr,#dplaypausetab2
keydisplaypause_3:
	mov	nbx,#0
	mov	nby,#0
	mov	r7,#0
keydisplaypause_30:
	mov	a,r7
	movc	a,@a+dptr
	cjne	a,#88h,keydisplaypause_4
	jmp	keydisplaypauseend
keydisplaypause_4:
	mov	disdata,a
	inc	r7
	LCALL   displaychar
	inc	nbx
	jmp	keydisplaypause_30
keydisplaypauseend:
	ret
;**********************************************************
zzdisplaymain:
              jmp       displaymain_1
;===================================display total timemov
displaymain:
	call	delay80ms
	call	delay80ms
        clr     ea
	mov	dptr,#exttab15		; get play sdstaus display hour
	mov	duizao,#1dh
    	call	readwriteipod
    	mov	r0,#86h
    	mov	a,@r0
    	cjne	a,totaltime,zzdisplaymain
    	inc	r0
    	mov	a,@r0
    	cjne	a,totaltime1,zzdisplaymain
    	inc	r0
    	mov	a,@r0
    	cjne	a,totaltime2,zzdisplaymain
    	inc	r0
    	mov	a,@r0
    	cjne	a,totaltime3,zzdisplaymain
    	mov	r0,#8ah
    	mov	a,@r0
	mov	08h,a
	inc	r0
	mov	a,@r0
	mov	09h,a
	inc	r0
	mov	a,@r0
	mov	0ah,a
	inc	r0
	mov	a,@r0
	mov	0bh,a
    	mov	0ch,#0
    	mov	0dh,jinxtime
	mov	0eh,jinxtime1
	mov	0fh,jinxtime2
	call	CHU40
	mov	jindu,r7	;
	jnb     status.3,zzdisplaymain	; key no bi jiao
	mov	nbx,#0
	mov	nby,#11
	mov	disdata,#7ch
	lcall	displaychar
	mov	jinxinjishu,#17
	mov	a,jindu
	cjne	a,#0,displayjinxi
displaykg:
	inc	nbx
	mov	disdata,#10h
	lcall	displaychar
	djnz	jinxinjishu,displaykg
	mov	nbx,#17
	mov	disdata,#7dh
	lcall	displaychar
	ret
displayjinxi:
	mov	a,jinxinjishu
	subb	a,jindu
	mov	jinxinjishu,a
displayjinxi_1:
	mov	disdata,#1fh
	inc	nbx
	lcall	displaychar
	djnz	jindu,displayjinxi_1
displayjinxi_2:
	mov	disdata,#10h
	inc	nbx
	lcall	displaychar
	djnz	jinxinjishu,displayjinxi_2
	mov	nbx,#17
	mov	disdata,#7dh
	lcall	displaychar
    	ret
;--------------------------------------------
displaymain_1:
    	call	clrscreen
    	mov	r0,#8eh
    	mov	a,@r0
    	mov	plpastuse,a	; save play/pause stause
    	mov	r0,#86h
    	mov	a,@r0
	mov	08h,a
	mov	totaltime,a
	inc	r0
	mov	a,@r0
	mov	09h,a
	mov	totaltime1,a
	inc	r0
	mov	a,@r0
	mov	0ah,a
	mov	totaltime2,a
	inc	r0
	mov	a,@r0
	mov	0bh,a
	mov	totaltime3,a
	mov	0ch,#0h
	mov	0dh,#0h
	mov	0eh,#0h
	mov	0fh,#17		; ji shuang mei ge shijian
	call	CHU40
	mov	jinxtime,r5
	mov	jinxtime1,r6
	mov	jinxtime2,r7
;----------------------------
    	mov	r0,#86h
    	mov	a,@r0
	mov	08h,a
	inc	r0
	mov	a,@r0
	mov	09h,a
	inc	r0
	mov	a,@r0
	mov	0ah,a
	inc	r0
	mov	a,@r0
	mov	0bh,a
	mov	0ch,#0h
	mov	0dh,#36h
	mov	0eh,#0eeh
	mov	0fh,#80h
	call	CHU40
	mov	hour,r7		; hour
	mov	08h,10h
	mov	09h,11h
	mov	0ah,12h
	mov	0bh,13h
	mov	0ch,#0
	mov	0dh,#0
	mov	0eh,#0eah
	mov	0fh,#60h
	call	CHU40
	mov	minute,r7	; minute
	mov	08h,10h
	mov	09h,11h
	mov	0ah,12h
	mov	0bh,13h
	mov	0ch,#0
	mov	0dh,#0
	mov	0eh,#03h
	mov	0fh,#0e8h
	call	CHU40
	mov	second,r7	;second
	mov	r6,#0
	mov	r7,minute
	call	HB2	; hix to bcd
	mov	minute,r5
	mov	r6,#0
	mov	r7,second
	call	HB2	; hix to bcd
	mov	second,r5
;--------------------------------------display play/paust  playpausetab
	mov	a,plpastuse
	cjne	a,#0,displayplaypause
	mov	dptr,#dplaypausetab
	jmp	displayplaypauseend
displayplaypause:
	cjne	a,#1,displayplaypause_1
	mov	dptr,#dplaypausetab1
	jmp	displayplaypauseend
displayplaypause_1:
	mov	dptr,#dplaypausetab2
displayplaypauseend:
	mov	nby,#0
	mov	nbx,#0
	mov	r7,#0
displayplaypauseend_0:
	mov	a,r7
	movc	a,@a+dptr
	cjne	a,#88h,displayplaypauseend_1
	jmp	displayplaypauseend_12
displayplaypauseend_1:
	mov	disdata,a
	inc	r7
	LCALL   displaychar
	inc	nbx
	jmp	displayplaypauseend_0
displayplaypauseend_12:
;-------------------------display hour
   	mov	nbx,#0
    	mov	nby,#1
    	mov	disdata,hour
        LCALL   displaychar
;--------------------------------display dot
	mov	nbx,#1
    	mov	nby,#1
	mov	disdata,#0ah
        LCALL   displaychar
;---------------------------------display  minute ten
   	mov	nbx,#2
    	mov	nby,#1
    	mov	a,minute
    	swap	a
    	anl	a,#0fh
    	mov	disdata,a
        LCALL   displaychar
;---------------------------------display  minute one
   	mov	nbx,#3
    	mov	nby,#1
    	mov	a,minute
    	anl	a,#0fh
    	mov	disdata,a
        LCALL   displaychar
;----------------------------------------------;display dot
	mov	nbx,#4
    	mov	nby,#1
    	mov	disdata,#0ah
        LCALL   displaychar
;---------------------------------display  second ten
   	mov	nbx,#5
    	mov	nby,#1
    	mov	a,second
    	swap	a
    	anl	a,#0fh
    	mov	disdata,a
        LCALL   displaychar
;---------------------------------display  second one
   	mov	nbx,#6
    	mov	nby,#1
    	mov	a,second
    	anl	a,#0fh
    	mov	disdata,a
        LCALL   displaychar
;;=================================================; display repeat icon
	mov	nbx,#12
	mov	nby,#1
	mov	disdata,#22h	;display "r"
	LCALL   displaychar
	mov	nbx,#13
	mov	nby,#1
	mov	disdata,#15h	;display "e"
	LCALL   displaychar
	mov	nbx,#14
	mov	nby,#1
	mov	disdata,#0ah	;display ":"
	LCALL   displaychar
	mov	nbx,#15
	mov	nby,#1
	mov	disdata,#10h	;display " "
	LCALL   displaychar
   	mov	nbx,#16
    	mov	nby,#1
    	mov	dptr,#exttab11
    	mov	duizao,#30h
    	call	readwriteipod
    	mov	r0,#86h		; 86h
    	mov	a,@r0
    	cjne	a,#00,repeat
    	mov	disdata,#1eh	;no repeat
    	jmp	repeataddr
repeat:
	cjne	a,#01h,repeat_1
	mov	disdata,#00h	; repeat one
	jmp	repeataddr
repeat_1:
	mov	disdata,#0x11	; repeat all
repeataddr:
        LCALL   displaychar
;==================================; display shuffle icon
   	mov	nbx,#12
    	mov	nby,#2
    	mov	disdata,#23h	; display "s"
    	LCALL   displaychar
    	mov	nbx,#13
    	mov	nby,#2
    	mov	disdata,#18h	; display "f"
    	LCALL   displaychar
    	mov	nbx,#14
    	mov	nby,#2
    	mov	disdata,#0ah	; display ":"
    	LCALL   displaychar
    	mov	nbx,#15
    	mov	nby,#2
    	mov	disdata,#10h	; display " "
    	LCALL   displaychar
    	mov	nbx,#16
    	mov	nby,#2
    	mov	dptr,#exttab24
    	mov	duizao,#2dh
    	call	readwriteipod
    	mov	r0,#86h
    	mov	a,@r0
    	cjne	a,#00,shuffle
    	mov	disdata,#1eh	;no shuffle
    	jmp	shuffleddr
shuffle:
	cjne	a,#01h,shuffle_1
	mov	disdata,#0x00	; repeat one
	jmp	shuffleddr
shuffle_1:
	mov	disdata,#0x11	; repeat all
shuffleddr:
        LCALL   displaychar
;-----------------------------------------
        call     delay80ms
        mov	dptr,#exttab16        ; get currentplaytrackindex
        mov	duizao,#1fh
	call	readwriteipod
	mov	r0,#89h
	mov	a,@r0
	mov	senddata,a
	mov	tracknb,A
	mov	dptr,#exttab17
	mov	duizao,#21h
	call	readwritebd
	mov	r0,#82h
	mov	a,@r0
    	subb	a,#4
    	mov	 countername,a
    	mov	r0,#86h
    	mov	nbx,#0
    	mov	nby,#5
displaytittle:
    	mov	a,@r0
    	cjne	a,#20h,displaytittle_kg
    	mov	a,#10h
    	jmp	displaytittle_3
displaytittle_kg:
        cjne     a,#4fh,displaytittle_o
        mov      a,#5fh
        jmp      displaytittle_3
displaytittle_o:
    	cjne	a,#61h,displaytittle_1
displaytittle_1:
	jc	displaytittle_2	;a xiaoto displaytittle_2
        clr    c
	subb	a,#10h
	jmp	displaytittle_3
displaytittle_2:
        clr    c
	subb	a,#30h
displaytittle_3:
    	mov	disdata,a
        LCALL   displaychar
        inc	r0
        inc	nbx
        djnz	 countername,displaytittle
;-------------------------------------------------------display play track artist name
	mov	dptr,#exttab27
	mov	duizao,#23h
	call	readwritebd
	mov	r0,#82h
	mov	a,@r0
    	subb	a,#4
    	mov	 countername,a
    	mov	r0,#86h
    	mov	nbx,#0
    	mov	nby,#6
displaytittleartist:
    	mov	a,@r0
    	cjne	a,#20h,displaytittleartist_kg
    	mov	a,#10h
    	jmp	displaytittleartist_3
displaytittleartist_kg:
        cjne     a,#4fh,displaytittleartist_o
        mov      a,#5fh
        jmp      displaytittleartist_3
displaytittleartist_o:
    	cjne	a,#61h,displaytittleartist_1
displaytittleartist_1:
	jc	displaytittleartist_2	;a xiaoto displaytittleartist_2
        clr    c
	subb	a,#10h
	jmp	displaytittleartist_3
displaytittleartist_2:
        clr    c
	subb	a,#30h
displaytittleartist_3:
    	mov	disdata,a
        LCALL   displaychar
        inc	r0
        inc	nbx
        djnz	 countername,displaytittleartist
;-------------------------------------------------------display play ablum artist name
	mov	dptr,#exttab28
	mov	duizao,#25h
	call	readwritebd
	mov	r0,#82h
	mov	a,@r0
    	subb	a,#4
    	mov	 countername,a
    	mov	r0,#86h
    	mov	nbx,#0
    	mov	nby,#7
displaytittleablum:
    	mov	a,@r0
    	cjne	a,#20h,displaytittleablum_kg
    	mov	a,#10h
    	jmp	displaytittleablum_3
displaytittleablum_kg:
        cjne     a,#4fh,displaytittleablum_o
        mov      a,#5fh
        jmp      displaytittleablum_3
displaytittleablum_o:
    	cjne	a,#61h,displaytittleablum_1
displaytittleablum_1:
	jc	displaytittleablum_2	;a xiaoto displaytittleartist_2
        clr    c
	subb	a,#10h
	jmp	displaytittleablum_3
displaytittleablum_2:
        clr    c
	subb	a,#30h
displaytittleablum_3:
    	mov	disdata,a
        LCALL   displaychar
        inc	r0
        inc	nbx
        djnz	 countername,displaytittleablum
;-----------------------------------------------------DISPLAY LIST COUNT
	MOV	R6,#0
	MOV	R7,tracknb
	CALL	HB2
	;MOV	LISTCOUNT,R3
	MOV	LISTCOUNT1,R4
	MOV	LISTCOUNT2,R5
	MOV	A,LISTCOUNT
;-----------------------------------
	mov	a,LISTCOUNT1
	anl	a,#0fh
	mov	disdata,a
	mov	nby,#2
	mov	nbx,#0
	LCALL   displaychar
;-----------------------------------
	mov	a,LISTCOUNT2
	swap	a
	anl	a,#0fh
	mov	disdata,a
	mov	nby,#2
	mov	nbx,#1
	LCALL   displaychar
;-----------------------------------
	mov	a,LISTCOUNT2
	anl	a,#0fh
	mov	disdata,a
	mov	nby,#2
	mov	nbx,#2
	LCALL   displaychar
;--------------------------------------DISPLAY "/"
	mov	disdata,#6DH
	mov	nby,#2
	mov	nbx,#3
	LCALL   displaychar
;--------------------------------------------------------
        mov	dptr,#exttab25       ; get numplaying tyracks
        mov	duizao,#36h
	call	readwriteipod
	mov	r0,#89h
	mov	a,@r0
	MOV	R7,A

⌨️ 快捷键说明

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