?? okupd6464_0929.asm
字號:
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字節(jié)除4字節(jié)商為4字節(jié)除法子程序CHU40
;被除數(shù)放在內(nèi)部08H.09H.0AH.0BH 單元中,除數(shù)放在0C.0D.0E.0F單元中
;商數(shù)放在內(nèi)部R4.R5.R6.R7單元中,余數(shù)放在10H.11H.12H.13H單元中.
;溢出時商為零。余數(shù)為被除數(shù)
;資源影響;R0--16H共24字節(jié) PSW 運(yùn)行總時間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 ;被除和擴(kuò)充位左移
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; 商數(shù)左移
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; 建立余數(shù)
MOV 12H,14H
MOV 11H,15H
MOV 10H,16H
LOP490: DJNZ R0, CHU47
RET
;-----------------------------------
;(17) 標(biāo)號: HB2 功能:雙字節(jié)十六進(jìn)制整數(shù)轉(zhuǎn)換成雙字節(jié)BCD碼整數(shù)
;入口條件:待轉(zhuǎn)換的雙字節(jié)十六進(jìn)制整數(shù)在R6、R7中。
;出口信息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R3、R4、R5中。
;影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié)
HB2: CLR A ;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù)
HB3: MOV A,R7 ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2
ADDC A,R5
DA A ;十進(jìn)制調(diào)整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;雙字節(jié)十六進(jìn)制數(shù)的萬位數(shù)不超過6,不用調(diào)整
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四次去清除上電復(fù)位,然后所作的設(shè)置才是有效的。
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
;----------------------------------------------------------------------------------------------------
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -