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

📄 okupd6464_0929.asm

📁 upd 6464a 取得程序 51 汇编指令
💻 ASM
📖 第 1 页 / 共 4 页
字号:
        jmp	simplesend_1_1
;===========================================
sendpower:
         setb       status.2
	mov	count,#00h
	mov	dptr,#powerontab
sendpower_1:
	mov	a,count
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,sendpower_2
	call	delay20ms
;----------------------------------- losekey exit
	mov	count,#00h
sendpower_1_1:
	mov	a,count
	mov	dptr,#buttomuptab
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,sendpower_3
	call	delay20ms
	ret
;--------------------------------
sendpower_2:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	sendpower_1
 ;------------------------------
sendpower_3:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	sendpower_1_1
;=====================================exit EIX MODE
exitexmode:
	mov	count,#00h
exitexmode_2:
	mov	a,count
	mov	dptr,#exttab4
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,exitexmode_1
	JMP	exitexmodeex
exitexmode_1:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	exitexmode_2
exitexmodeex:
	ret
;-------------------------------------------enter EIX MODE
inexmode:
	mov	count,#00h
inexmode_2:
	mov	a,count
	mov	dptr,#exttab3
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,inexmode_1
	JMP	inexmodeexit
inexmode_1:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	inexmode_2
inexmodeexit:
	ret
;******************************************   calculat
;4字节除4字节商为4字节除法子程序CHU40
;被除数放在内部08H.09H.0AH.0BH 单元中,除数放在0C.0D.0E.0F单元中
;商数放在内部R4.R5.R6.R7单元中,余数放在10H.11H.12H.13H单元中.
;溢出时商为零。余数为被除数
;资源影响;R0--16H共24字节   PSW      运行总时间1.977毫秒
CHU40:    MOV R0, #20H
          MOV 10H, #00H
          MOV 11H, #00H
   	  MOV 12H, #00H
          MOV 13H, #00H
CHU47:    CLR C
          MOV A, 0BH
          RLC A
          MOV 0BH, A
          MOV A, 0AH ;被除和扩充位左移
          RLC A
          MOV 0AH, A
          MOV A, 09H
          RLC A
          MOV 09H, A
          MOV A, 08H
          RLC A
          MOV 08H, A
   	MOV A, 13H
          RLC A
          MOV 13H, A
          MOV A, 12H
          RLC A
          MOV 12H, A
          MOV A, 11H
          RLC A
          MOV 11H, A
          MOV A, 10H
          RLC A
          MOV 10H, A
          MOV A, R7; 商数左移
          RLC A
          MOV R7, A
          MOV A, R6
          RLC A
          MOV R6, A
          MOV A, R5
          RLC A
          MOV R5, A
          MOV A, R4
          RLC A
          MOV R4, A
          CLR C
          MOV A, 13H ;判断
          SUBB A, 0FH
          MOV R1, A
          MOV A, 12H ;判断
          SUBB A, 0EH
          MOV 14H, A
          MOV A, 11H
          SUBB A, 0DH
          MOV 15H, A
   MOV A, 10H ;判断
          SUBB A, 0CH
          MOV 16H, A
          JC  LOP490
          INC R7
          MOV 13H,R1; 建立余数
          MOV 12H,14H
          MOV 11H,15H
          MOV 10H,16H
LOP490:   DJNZ R0, CHU47
          RET
;-----------------------------------
 ;(17)  标号: HB2   功能:双字节十六进制整数转换成双字节BCD码整数

;入口条件:待转换的双字节十六进制整数在R6、R7中。
;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
;影响资源:PSW、A、R2~R7    堆栈需求:  2字节

HB2:	CLR	A	;BCD码初始化
	MOV	R3,A
	MOV	R4,A
	MOV	R5,A
	MOV	R2,#10H	;转换双字节十六进制整数
HB3:	MOV	A,R7	;从高端移出待转换数的一位到CY中
	RLC	A
	MOV	R7,A
	MOV	A,R6
	RLC	A
	MOV	R6,A
	MOV	A,R5	;BCD码带进位自身相加,相当于乘2
	ADDC	A,R5
	DA	A	;十进制调整
	MOV	R5,A
	MOV	A,R4
	ADDC	A,R4
	DA	A
	MOV	R4,A
	MOV	A,R3
	ADDC	A,R3
	MOV	R3,A	;双字节十六进制数的万位数不超过6,不用调整
	DJNZ	R2,HB3	;处理完16bit
	RET
;===================================================================
writ8byt:		; upd6464 programm
          clr   upd_ncs
          mov   r4,    #08h
          mov   a ,    b
ibit1:    rlc   a
          mov   upd_io,  c
          nop
          clr   upd_clk
          nop
          setb  upd_clk
          nop
          djnz  r4,   ibit1
          nop
          setb  upd_clk
          nop
          nop
          setb  upd_ncs
          ret
;**********************************************************
writ16byt:
           clr   upd_ncs
           mov   r4,    #08h
           mov   a ,    temp
ibit2:     rlc   a
           mov   upd_io,  c
           nop
           clr   upd_clk
           nop
           setb  upd_clk
           nop
           djnz  r4,   ibit2
           nop
           nop
           nop
           nop
           nop
           nop
           setb  upd_clk
           mov   r5,   #08h
           mov   a ,    temp1
ibit3:     rlc   a
           mov   upd_io,  c
           nop
           clr   upd_clk
           nop
           setb  upd_clk
           nop
           djnz  r5,   ibit3
           nop
           setb  upd_clk
           nop
           setb  upd_ncs
           ret
;**********************************************************
clrrow:	; in row	clear one line
	mov	r7,#24
	mov    nbx,#0
        mov	disdata,#10h
      ;  mov     nby,#0
clrrow_1:
	call	displaychar
	inc	nbx
	djnz	r7,clrrow_1
	ret
;--------------------------
clrscreen:	;	clear screen
        mov	disdata,#10h
        mov     nby,#0
  	mov	r6,#12
clrscreen_2:
        mov	r7,#24
	mov    nbx,#0
clrscreen_1:
	call	displaychar
	inc	nbx
	djnz	r7,clrscreen_1
	inc	nby
	djnz	r6,clrscreen_2
	ret
;----------------------------
displaychar:
	mov	a,nby
        RRC    A
        RRC    A
        RRC    A
        ANL    A, #01H
        orl    A, #88H
        MOV    temp, A
        MOV    A,nby
        swap	a
        rlc	a
        anl	a,#0e0h
        orl	a,nbx
        mov	temp1,a
        call	writ16byt
        mov	temp,#0c0h
        mov	temp1,disdata
        call	writ16byt
        RET
;=======================================================================; delay programm
delay3s:
	mov	r7,#200
delay3s_1:
	mov	r6,#150
delay3s_2:
	JNB	VOLADDKEY,delay3s_3
	JNB	VOLMIUSKEY,delay3s_3
	mov	r5,#76
	djnz	r5,$
	djnz	r6,delay3s_2
	djnz	r7,delay3s_1
delay3s_3:
	ret
;------------------------------
delay100ms:
	mov	r7,#200
	jmp	delay
delay80ms:
	mov	r7,#160
	jmp	delay
delay40ms:
	mov	r7,#80
	jmp	delay
delay20ms:
	 mov 	r7,#40
	 jmp	delay
delay10ms:
           mov 	r7,#20
delay:
	mov	r6,#250
	djnz	r6,$
	djnz	r7,delay
	ret
;-----------------------------------
delay50:
	mov	r6,#20
	djnz	r6,$
	ret
;======================================4811 programm
vola:
	setb	updown
	call	delay50
	setb	clk
	call	delay50
	clr	clk
	ret
volm:
	clr	updown
	call	delay50
	setb	clk
	call	delay50
	clr	clk
	ret
;=======================================
ipodini:
	CALL	pause	;pause
	mov	a,#0ffh
	mov	sbuf, a
	clr     ti
	jnb	ti,$
	call	delay20ms
	mov	dptr,#exttab1
	mov	count,#00h
ipodini_1:
	mov	a,count
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,ipodini_2
	call	playreuse
	CALL	pause	;pause
	call	playreuse ;play
	ret
ipodini_2:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	ipodini_1

;;=======================================
pause:
	mov	a,#0ffh
	mov	sbuf, a
	clr     ti
	jnb	ti,$
	call	delay20ms
	mov	count,#00h
	mov	dptr,#pausetab
pause_1:
	mov	a,count
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,pause_2
	call    delay20ms
	mov	count,#00h
pause_1_1:
	mov	a,count
	mov	dptr,#buttomuptab
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,pause_3
	call    delay20ms
	ret
pause_2:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	pause_1
pause_3:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	pause_1_1
;;======================================
playreuse:
	mov	a,#0ffh
	mov	sbuf, a
	clr     ti
	jnb	ti,$
	call	delay20ms
	mov	count,#00h
	mov	dptr,#playrausetab
playreuse_1:
	mov	a,count
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,playreuse_2
        call    delay20ms
        mov	count,#0
playreuse_1_1:
	mov	a,count
	mov	dptr,#buttomuptab
	movc	a,@a+dptr
	inc	count
	cjne	a,#88h,playreuse_3
	 call    delay20ms
	ret
playreuse_2:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	playreuse_1
playreuse_3:
	mov	sbuf, a
	clr     ti
	jnb	ti,$
        jmp	playreuse_1_1
;====================================================
ini6464:
	clr	upd_ncs	;=0;
	call	Delay10ms;                         //程序开始时,要输入CS四次去清除上电复位,然后所作的设置才是有效的。
	setb	upd_ncs
	clr	upd_ncs	;=0;
	call	Delay10ms;
	setb	upd_ncs
	clr	upd_ncs	;=0;
	call	Delay10ms;
	setb	upd_ncs
	clr	upd_ncs;=0;
	call	Delay10ms;
	setb	upd_ncs
	clr	upd_ncs	;=0;
	call	Delay10ms;
	setb	upd_ncs
	mov 	b, #00h	; video ram batch
	call 	writ8byt
	mov 	b, #00011100b	;display control (D0 1,display on ;lc 1 LC oscillation on ;bl1,bl0 0,0 blinking off)
	call 	writ8byt
	mov	 b,#00100000b 	;internal video signal color control (grenn)
	call 	writ8byt
	mov 	b, #00110000b 	;background control
	call 	writ8byt
	mov	b,inexmodule
	;mov	b, #01000101b	; internal/external mode control crystal control
	call	writ8byt
	mov 	b, #01010010b ; 晶振方式选择,4fsc方式
	call 	writ8byt
	mov	b, #01001001b	; video signal method control (pal)
	call 	writ8byt

	;mov temp,#10000000b ; 起始偏移位置h, 0
	;mov temp1,#1000011b ; 起始偏移位置l, 0
	mov temp,#10000001b ; 起始偏移位置h, 0
	mov temp1,#0000101b ; 起始偏移位置l, 0
	call writ16byt
	mov temp,#10001000b ; 显示行列位置h,0列
	mov temp1,#00000000b ; 显示行列位置l,0行
	call writ16byt
	mov temp,#10010001b ; 输出电平控制h,2vpp
	mov temp1,#00000001b ; 输出电平控制l,75ire
	call writ16byt
	mov temp,#10011000b ; 字符尺寸控制h,最小尺寸
	mov temp1,#00000000b ; 字符尺寸控制l,0行
	call writ16byt
	ret
;----------------------------------------------------------------; 初始化 UART
iniuart:
	mov	tmod,#0afh
	setb	sm1
	clr	sm0
	mov	tl1,#0fdh
	mov	th1,#0fdh
	mov	pcon,#80h
	clr	es
	setb	tr1
	clr	ti
	ret
;--------------------------------
clrram:
	mov	r0,#0deh
clrram_1:
	mov	@r0,#0
	djnz	r0,clrram_1
	ret
;================================================
searchtab:
	db	00h,01h,02h,03h,04h,05h,06h,07h,08h,099h
searchtab1:
	db	9h,11h,12h,13h,14h,15h,16h,17h,18h,99h
searchtab2:
	db	19h,1ah,1bh,1ch,1dh,1eh,5fh,20h,21h,99h
searchtab3:
	db	22h,23h,24h,25h,26h,27h,28h,29h,2ah,88h
;---------------------------------------------------------------
NOSEAVHTAB:
	db	1Eh,5Fh,10h,23h,15h,11h,22h,13h,18h,88H
;================================================
dplaypausetab:
	db	63h,64h,5fh,60h,10h,10h,88h
dplaypausetab1:
	db	60h,5ch,51h,69h,10h,10h,88h
dplaypausetab2:
	db	60h,51h,65h,63h,55h,54h,10h,10h,88h
;=====================================================general linao
fmtab:
	DB	0FFH,55H,06H,00H,01H,05H,00H,02H,01H,0F1H,88h
;============================================simple remote tab
playrausetab:
	db	 0ffh,55h,04h,02h,00h,00h,01h,0f9H,88h;
playpausetab:
	 db      0ffh,55h,03h,02h,00h,01h,0faH,88h;
voladdtab:
	 db      0ffh,55h,03h,02h,00h,02h,0f9H,88h;
volmiustab:
	 db      0ffh,55h,03h,02h,00h,04h,0f7H,88h;
nexttracktab:
	 db      0ffh,55h,03h,02h,00h,08h,0f3H,88h;
pretracktab:
	 db      0ffh,55h,03h,02h,00h,10h,0ebH,88h;
nextlisttab:
	db	 0ffh,55h,04h,02h,00h,00h,20h,0daH,88h;
prelisttab:
	db	 0ffh,55h,04h,02h,00h,00h,40h,0baH,88h;
menutab:
	db	 0ffh,55h,05h,02h,00h,00h,00h,40h,0b9H,88h;
selecttab:
	db	 0ffh,55h,05h,02h,00h,00h,00h,80h,79H,88h;
uparrowtab:
	db	 0ffh,55h,06h,02h,00h,00h,00h,00h,01h,0f7H,88h;
downarrowtab:
	db	 0ffh,55h,06h,02h,00h,00h,00h,00h,02h,0f6H,88h;
powerontab:
	db	  0ffh,55h,05h,02h,00h,00h,00h,02h,0f7H,88h;
pausetab:
	db	 0ffh,55h,04h,02h,00h,00h,02h,0f8H,88h;
buttomuptab:
       db      0ffh,55h,03h,02h,00h,00h,0fbH,88h;
;==========================================exit lingo tab
exttab:		 ;     simple liogo accessory  identifytion

       db      0ffh,55h,03h,00h,01h,04h,0f8H,88h;
exttab1:   ;    ;     multiple liogo accessory  identifytion general liogo(1) ext lingo(1) rf lingo(1)
       db      0ffh,55h,0eh,00h,13h,00H,00H,00H,35h,00H,00H,00H,04H,00H,00H,00H,00H,0A6H,88h;

exttab2:	;    request remote mode
        db      0ffh,55h,02h,00h,03h,0fbH,88h;

exttab3:	;    enter remote mode
        db      0ffh,55h,02h,00h,05h,0f9H,88h;

exttab4:	;    exit remote mode
        db      0ffh,55h,02h,00h,06h,0f8H,88h;

exttab5:	;    get current playing trackchapterinfo
        db      0ffh,55h,03h,04h,00h,02h,0f7H,88h;

exttab6:	;    set current playing trackchapter

exttab7:	;    get current playing trackchapterstaus

exttab8:	;    get current playing trackchaptersname

;exttab9:	;    get audiobook speen
     ;   db      0ffh,55h,03h,04h,00h,09h,0f08H,88h;

exttab10:	;    set audiobook speen(ff slow; 00 mornal 01 fast)
       ; db      0ffh,55h,05h,04h,00h,0bh,0xnn,0xnn,88h;

exttab11:        ; get repeat mode
       db       0ffh,55h,03h,04h,00h,2fh,0caH,88h;

exttab12:        ; set repeat mode   (one)
       db      00h
exttab13:        ; get index play trasckinfo
       db      0ffh,55h,0ah,04h,00h,0ch,00H,00H,00H,00H,00H,00H,01H,0e5H,88h;

exttab14:        ; requestipod name
       db      0ffh,55h,03h,04h,00h,14h,0e5H,88h;

exttab15:        ; get playstaus
       db      0ffh,55h,03h,04h,00h,1ch,0ddH,88h;

exttab16:        ; get currentplaytrackindex
       db      0ffh,55h,03h,04h,00h,1eh,0dbH,88h;

exttab17:        ; get indexplaytrack title
       db      0ffh,55h,07h,04h,00h,20h,00h,00h,00h,0aah

exttab18:        ; getindexplaytrack artistname
       db      0ffh,55h,07h,04h,00h,22h,00h,00h,00h,01h,0d2H,88h

exttab19:        ; getindexplaytracka album name
       db      0ffh,55h,07h,04h,00h,24h,00h,00h,00h,02h,0cfH,88h

exttab20:        ; set play status change notification
       db      0ffh,55h,04h,04h,00h,26h,01h,0d1H,88h

exttab22:        ; play currentselection
       db      0ffh,55h,07h,04h,00h,28h,00h,00h,00h,01h,0ccH,88h;

exttab23:        ; get numplaying tracks
       db      0ffh,55h,03h,04h,00h,35h,0c4H,88h;
exttab24:        ; get shuffle
       db      0ffh,55h,03h,04h,00h,2ch,0cdH,88h;
exttab25:        ; get track number
       db      0ffh,55h,03h,04h,00h,35h,0c4H,88h;
exttab26:        ; set currentplaying track
       db      0ffh,55h,07h,04h,00h,37h,00h,00h,00h,0aah
exttab27:        ; get indexplaying trackartistname
       db      0ffh,55h,07h,04h,00h,22h,00h,00h,00h,0aah
exttab28:        ; get indexplaying trackablumname
       db      0ffh,55h,07h,04h,00h,24h,00h,00h,00h,0aah
        END
;***********************************************************************************************************
;;0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z

;;INT16U const Unicode1[36] =
; 0          1       2      3      4       5       6       7      8        9
;0x0030,0x0031,	0x0032,	0x0033,	0x0034,	0x0035,	0x0036,	0x0037,	0x0038,	0x0039,
;;------------------------------------------------------------------------------

;  a       b      c        d       e        f	   g      h        i       j
;0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, ;0x0067, 0x0068, 0x0069, 0x006A
;;------------------------------------------------------------------------------

;  k        l       m       n       o       p       q         r      s      t
;0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070,  0x0071, 0x0072, 0x0073, 0x0074
;;------------------------------------------------------------------------------

;  u       v        w      x        y      z
;0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A
;==============================================================================


;  A      B      C        D       E        F	   G      H        I       J
;0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, ;0x0047, 0x0048, 0x0049, 0x004A
;;------------------------------------------------------------------------------

;  K       L       M       N       O       P       Q         R      S       T
;0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,  0x0051, 0x0052, 0x0053, 0x0054
;;------------------------------------------------------------------------------

;  U       V        W      X        Y      Z
;0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A

;
;	!   	 "  	 #  	 $ 	 % 	 & 	 ' 	 ( 	 ) 	 *
;	21H 	22H 	23H 	24H     25H     26H     27H     28H     29H     2AH
;							6E
;
;	;---------------------------------------------------------------------------------
;
;	 + 	 , 	 - 	 . 	 / 	 : 	 ; 	 < 	 = 	 >
;	2BH     2CH	2DH     2EH     2FH     3AH     3BH     3CH     3DH     3EH
;		0F	0D	0E	6D	0A	6B	0B		0C
;	;---------------------------------------------------------------------------------
;
;	 ? 	 @  	 [ 	 \ 	 } 	 ^ 	 _ 	`  	 { 	 } 	 ~
;	3FH     40H,    5BH	5CH	5DH	5EH     5FH     60H     7BH     7DH     7EH
;----------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

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