数字音乐盒文档格式.docx
《数字音乐盒文档格式.docx》由会员分享,可在线阅读,更多相关《数字音乐盒文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
![数字音乐盒文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/16/b21a7f8c-5364-4a3d-b9b2-b1e45679a6b9/b21a7f8c-5364-4a3d-b9b2-b1e45679a6b91.gif)
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
实验程序如下:
RSBITP2.0;
定义液晶显示端口标号
RWBITP2.1
EBITP2.2
;
********************************************
L50MSEQU60H
L1MSEQU61H
L250MSEQU62H
SECEQU65H
MINEQU64H
HOUEQU63H
*******************************************
org0000h
ljmpmain
ORG000BH
LJMPTT0
ORG001BH
LJMPT1INT
org1000h
main:
-----------------------;
液晶初始化
MOVSP,#70H
MOVP0,#01H
;
清屏
CALLENABLE
MOVP0,#38H
8位,2行显示
lCALLENABLE
MOVP0,#0FH
屏显on,光标on,闪烁on
MOVP0,#06H
计数地址加1,显示幕on
-------------------------------内存初始化
lcallinitil
-------------------------------
key1:
lcallkey
lcallmodd
ljmpkey1
---------------------键盘扫描
key:
nop
lcallks
jnzk1
有按键转到K1
lcallkaiji
lcallSOP
xn:
ljmpkey
k1:
lcallmodd
jnzk2
k2:
movR2,#0feh
读键盘
movR4,#00h
k3:
movA,R2
movP1,A
movA,P1
JBACC.4,L1
为1跳转,第一行无按键
mova,#00h
ljmplk
L1:
jbacc.5,L2
mova,#04h
L2:
jbacc.6,L3
mova,#08h
L3:
jbacc.7,next1
mova,#0ch
-------------------------------------------------------
lk:
adda,R4
pushacc
k4:
lcalldelay1
若同时有其他按键,则等待
jnzk4
--------------------------------------------------------
movr3,#07h
clra
movr0,#30h
movr1,#31h
mm1:
mova,@r1
mov@r0,a
incr0
incr1
djnzr3,mm1
popacc
mov@r0,a
RET
------------------------------------------------------
next1:
incR4
------列扫描
mova,R2
JNBacc.3,n2
ljmpn1
n2:
n1:
rla
movR2,a
ljmpk3
----------------------------------------------
ks:
mova,#0f0h
判断P1口
movP1,a
mova,P1
cpla
anla,#0f0h
--------------------------------------------------
DELAY1:
SETBRS0
dl:
movR5,#0ah
dl2:
movR6,#63
dl3:
nop
djnzR6,dl3
djnzR5,dl2
CLRRS0
---------------------------------------------------
30H-37H初值为零
----------------------------------------------------
initil:
movr3,#08h
m1:
mov@r0,#00h
djnzr3,m1
显示
---------------------------------------------------
modd:
MOVP0,#8EH
lCALLENABLE
movA,37H
movDPTR,#TABLE3
MOVCA,@A+DPTR
lCALLWRITE2
开机提示字
-------------------------------------------------
kaiji:
mova,37h
cjnea,#0fh,DFF
MOVP0,#80H
设光标地址
MOVDPTR,#TABLE1;
写数据
lCALLWRITE1
DFF:
按键值播放歌曲
SOP:
cjnea,#01h,A11
LCALLMODD
MOV52H,#HIGHTABLE10
MOV53H,#LOWTABLE10
LCALLINITILE2
lcallMAIN0
A11:
CJNEA,#02H,A22
MOV52H,#HIGHTABLE20
MOV53H,#LOWTABLE20
LCALLINITILE2
A22:
CJNEA,#03H,A33
MOV52H,#HIGHTABLE30
MOV53H,#LOWTABLE30
lcallMAIN0
A33:
CJNEA,#04H,A44
MOV52H,#HIGHTABLE40
MOV53H,#LOWTABLE40
A44:
CJNEA,#05H,A55
MOV52H,#HIGHTABLE50
MOV53H,#LOWTABLE50
A55:
CJNEA,#06H,A66
MOV52H,#HIGHTABLE60
MOV53H,#LOWTABLE60
A66:
CJNEA,#07H,A77
MOV52H,#HIGHTABLE70
MOV53H,#LOWTABLE70
A77:
CJNEA,#08H,A88
MOV52H,#HIGHTABLE80
MOV53H,#LOWTABLE80
A88:
CJNEA,#09H,A99
MOV52H,#HIGHTABLE90
MOV53H,#LOWTABLE90
A99:
CJNEA,#0AH,AAA
MOV52H,#HIGHTABLE100
MOV53H,#LOWTABLE100
AAA:
RET
******************************************
INITILE2:
MOVL50MS,#20
MOVL1MS,#00H
MOVL250MS,#00H
MOVSEC,#00H
MOVMIN,#00H
MOVHOU,#00H
MOVA,HOU
MOVB,#10
DIVAB
ADDA,#30H
将BCD吗转化为ASIIC码
MOVP0,#0C8H
显示小时十位
CALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0C9H
显示小时个位
MOVA,#3AH
MOVP0,#0DH
显示冒号
MOVA,MIN
MOVP0,#0CBH
显示分十位
MOVP0,#0CCH
显示分个位
MOVP0,#0CDH
MOVA,SEC
ADDA,#30H
MOVP0,#0CEH
显示秒十位
MOVP0,#0CFH
显示秒个位
MOVP0,#0C0H
MOVDPTR,#TABLE2;
CALLWRITE1
*********************************************写指令
ENABLE:
CLRRS
CLRRW
CLRE
LCALLDELAY
SETBE
**********************************************写数据
WRITE1:
MOVR1,#00H
A1:
MOVA,R1
INCR1
CJNEA,#0FEH,A1
未到字符串末尾继续
WRITE2:
MOVP0,A
SETBRS
CALLDELAY
**********************************************
DELAY:
MOVR4,#05
D1:
MOVR5,#0FFH
DJNZR5,$
DJNZR4,D1
TAB:
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db80h,90h,88h,83h,0c6h,0a1h,86h,8eh
TAB1:
db89h,86h,0c7h,0c7h,0c0h
TAB2:
db0c6h,88h,0c0h
TABLE1:
DBWELCOMHERE,0FEH
TABLE2:
DBDFFWB,0FEH
TABLE4:
DBCAU,0FEH
TABLE3:
DB30H,31H,32H,33h
DB34H,35H,36H,37H
DB38h,39H,41H,42H
DB43H,44H,45H,46H
--------------------------------------------------------------------
播放歌曲程序
MAIN0:
MOVTMOD,#11H
MOVIE,#8aH
MOVTH1,#3cH
MOVTL1,#0b0H
jnzTTM12
MOV40H,#00H
---------------------------------------------------------
NEXT20:
MOVA,40H
MOVDPH,52H
MOVDPL,53H
MOVR2,A
JZSTOP
ANLA,#0FH
MOVR1,A
MOVA,R2
SWAPA
JNZSING
CLRTR0
JMPW1
----------------------------------------------------------
SING:
DECA
MOV22H,A
RLA
MOVDPTR,#TABLE00
MOVTH0,A
MOV21H,A
MOVA,22H
INCA
MOVTL0,A
MOV20H,A
SETBTR0
SETB
TR1
W1:
LCALLDELAY30
INC40H
LCALLKS
------有键跳出
JNZSTOP
LJMPNEXT20
-----------------------------------------------------------
STOP:
CLRTR1
LJMPMAIN0
TTM12:
LCALLK2
MOVA,37H
CJNEA,#0EH,TTM13
LCALLDELAY1
TTM120:
LCALLKS
JZTTM120
CJNEA,#0EH,TTM120
SETBTR1
TTM13:
CJNEA,#0CH,TTM14
MOVA,52H
MOV52H,A
MOVA,53H
MOV53H,A
MOVA,36H
MOV37H,A
LJMPTTM2
TTM14:
CJNEA,#0DH,TTM2
------------------------------------------------------
TTM2:
***************************************************
定时器中断子程序0
TT0:
PUSHACC
PUSHPSW
MOVTL0,20H
MOVTH0,21H
CPLP3.7
POPPSW
POPACC
RETI
定时器中断子程序1
T1INT:
MOVTH1,#3cH
MOVTL1,#0b0H
DJNZL50MS,X4
****************---每秒种时钟刷新秒显示一次
SECSET:
lCALLWRITE2
MOVSEC,A
XRLA,#60
X4:
JNZOUT
MINSET:
MOVSEC,#00H
*************************************每分钟刷新分显示一次
MOVMIN,A
MOV
P0,#0CBH
P0,#0CCH
MOVA,MIN
MOVB,#3
MULAB
MOVB,#100
MOVA,#10
XCHA,B
HOUSET:
MOVMIN,#00H
**************************************每小时刷新小时显示一次
MOVHOU,A
XRLA,#10
SJMPOVERFLOW
OUT:
*************************************溢出处理
OVERFLOW:
DELAY30:
MOVR7,#2
W2:
MOVR4,#125
W3:
MOVR3,#248
DJNZR3,$
DJNZR4,W3
DJNZR7,W2
DJNZR1,DELAY30
TABLE00:
DW64580,64684,64777,64820
DW64898,64968,65030,64260
DW64400,64524,65058,63835,64021
-------------------------------------------------------------------
第一首《精忠报国》
TABLE10: