找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2890|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机音乐盒汇编语言源程序

[复制链接]
跳转到指定楼层
楼主
ID:506976 发表于 2019-5-9 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RSBIT P2.0;   定义液晶显示端口标号

RWBIT P2.1                           E BITP2.2
;********************
L50MSEQU 60H
L1MSEQU 61H
L250MSEQU 62H
SECEQU 65H
MINEQU 64H
HOUEQU 63H
;*********************
ORG0000H
LJMPMAIN
ORG000BH
LJMPTT0
ORG001BH
LJMPT1INT
ORG1000H
MAIN:液晶初始化
MOVSP,#70H   
MOVP0,#01H  ;清屏
LCALLENABLE
MOVP0,#38H  ;8位,2行显示
LCALLENABLE
MOVP0,#0FH  ;屏显ON,光标ON,闪烁ON
LCALLENABLE
MOVP0,#06H  ;计数地址加1,显示幕ON
LCALLENABLE  内存初始化
LCALLINITIL      
KEY1:
LCALLKEY
LCALLMODD         
LJMPKEY1键盘扫描
KEY:
NOP
NOP
LCALLKS
JNZ K1   有按键转到K1
LCALLKAIJI
LCALLSOP
XN:
LJMPKEY
K1:
LCALLMODD
LCALLMODD
LCALLKS
JNZK2
LJMPKEY
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
LJMPLK
L2:
JBACC.6,L3
MOVA,#08H
LJMPLK
L3:
JBACC.7,NEXT1
MOVA,#0CH
LK:
ADDA,R4
PUSHACC
K4:
LCALLDELAY1   ;若同时有其他按键,则等待
LCALLKS
JNZK4
MOVR3,#07H     
CLR A
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:
LJMPKEY
N1:
RL A
MOVR2,A
LJMPK3
KS:
MOVA,#0F0H     ;判断P1口
MOVP1,A
NOP
NOP
MOVA,P1
CPL A
ANLA,#0F0H
RET
DELAY1:

SETBRS0
DL:MOVR5,#0AH
DL2:
MOVR6,#63
DL3:
NOP
NOP
DJNZR6,DL3
DJNZR5,DL2
CLRRS0     
RET ;30H-37H初值为零
INITIL:      
MOVR3,#08H
MOVR0,#30H
M1:
MOV@R0,#00H
INCR0
DJNZR3,M1         
RET
MODD:  
MOVP0,#8EH
LCALLENABLE         
MOVA,37H
MOVDPTR,#TABLE3         
MOVCA,@A+DPTR
LCALLWRITE2      
RET;开机提示字
KAIJI:


MOVA,37H
CJNEA,#0FH,DFF
MOVP0,#80H    ;设光标地址
LCALLENABLE
MOVDPTR,#TABLE1;写数据
LCALLWRITE1         
DFF:
RET;按键值播放歌曲
SOP:
MOVA,37H
CJNEA,#01H,A11
LCALLMODD
MOV52H,#HIGH TABLE10
MOV53H,#LOW TABLE10
LCALLINITILE2
LCALLMAIN0
A11:
CJNEA,#02H,A22
LCALLMODD
MOV52H,#HIGH TABLE20
MOV53H,#LOW TABLE20
LCALLINITILE2      
LCALLMAIN0
A22:
CJNEA,#03H,A33
LCALLMODD
MOV52H,#HIGH TABLE30
MOV53H,#LOW TABLE30
LCALLINITILE2      
LCALLMAIN0      

A33:
CJNEA,#04H,A44
LCALLMODD
MOV52H,#HIGH TABLE10
MOV53H,#LOW TABLE10
LCALLINITILE2      
LCALLMAIN0
A44:
CJNEA,#05H,A55
LCALLMODD
MOV52H,#HIGH TABLE20
MOV53H,#LOW TABLE20
LCALLINITILE2      
LCALLMAIN0
A55:
CJNEA,#06H,A66
LCALLMODD
MOV52H,#HIGH TABLE30
MOV53H,#LOW TABLE30
LCALLINITILE2      
LCALLMAIN0   
A66:
CJNEA,#07H,A77
LCALLMODD
MOV52H,#HIGH TABLE10
MOV53H,#LOW TABLE10
LCALLINITILE2      
LCALLMAIN0      
A77:
CJNEA,#08H,A88

LCALLMODD
MOV52H,#HIGH TABLE20
MOV53H,#LOW TABLE20
LCALLINITILE2      
LCALLMAIN0
A88:
CJNEA,#09H,A99
LCALLMODD
MOV52H,#HIGH TABLE30
MOV53H,#LOW TABLE30
LCALLINITILE2      
LCALLMAIN0      
A99:
CJNEA,#0AH,AAA
LCALLMODD
MOV52H,#HIGH TABLE10
MOV53H,#LOW TABLE10
LCALLINITILE2      
LCALLMAIN0      
AAA:RET           
INITILE2:
MOVL50MS,#20
MOVL1MS,#00H
MOVL250MS,#00H
MOVSEC,#00H
MOVMIN,#00H
MOV HOU,#00H
MOVA,HOU
MOVB,#10
DIVAB

ADDA,#30H      
MOVP0,#0C8H    ;显示小时十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0C9H    ;显示小时个位
LCALLENABLE
LCALLWRITE2
MOVA,#3AH
MOVP0,#0DH    ;显示冒号
LCALLENABLE
LCALLWRITE2
MOVA,MIN
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0CBH    ;显示分十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0CCH    ;显示分个位
LCALLENABLE
LCALLWRITE2
MOVA,#3AH
MOVP0,#0CDH    ;显示冒号
LCALLENABLE
LCALLWRITE2
MOVA,SEC

MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0CEH    ;显示秒十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0CFH    ;显示秒个位
LCALLENABLE
LCALLWRITE2
MOVP0,#0C0H    ; 设光标地址
LCALLENABLE
MOVDPTR,#TABLE2;写数据
LCALLWRITE1         
RET;               写指令
ENABLE:
CLRRS
CLRRW
CLR E
LCALLDELAY
SETBE
RET写数据
WRITE1:
MOVR1,#00H
A1:
MOVA,R1
MOVCA,@A+DPTR
LCALLWRITE2
INCR1

CJNEA,#0FEH,A1   ;未到字符串末尾继续
RET
WRITE2:
MOVP0,A
SETBRS
CLRRW
CLR E
LCALLDELAY
SETBE
RET
DELAY:
MOVR4,#05
D1:
MOVR5,#0FFH
DJNZR5,$
DJNZR4,D1
RET
TAB:
DB:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0c6H,0a1H,86H,8eH
TAB1:DB89H,86H,0C7H,0C7H,0C0H
TAB2:DB0C6H,88H,0C0H
TABLE1:DB'WELCOM HERE',0FEH
TABLE2:DB'DFFWB ',0FEH
TABLE4:DB'CAU',0FEH
TABLE3:DB30H,31H,32H,33H   
DB 34H,35H,36H,37H
DB 38H,39H,41H,42H
DB 43H,44H,45H,46H;播放歌曲程序

MAIN0:
MOVTMOD,#11H
MOVIE,#8AH
MOV TH1,#3CH
MOVTL1,#0B0H   
LCALLks
JNZ TTM12         
MOV40H,#00H
NEXT20:
MOVA,40H
MOVDPH,52H
MOVDPL,53H
MOVCA,@A+DPTR
MOVR2,A
JZSTOP
ANLA,#0FH
MOVR1,A
MOVA,R2
SWAPA
ANLA,#0FH
JNZSING
CLRTR0
JMPW1
SING:
DEC A
MOV22H,A
RL A
MOVDPTR,#TABLE00
MOVCA,@A+DPTR
MOV TH0,AMOV21H,AMOV A,22H

RL A
INC A
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
SETBTR0
SETB  TR1
W1:
LCALLDELAY30
INC40H
LCALLKS             ;有键跳出
JNZSTOP
LJMPNEXT20
STOP:
CLRTR0
CLRTR1
LJMPMAIN0
TTM12:
LCALLK2
MOVA,37H
CJNEA,#0EH,TTM13
CLRTR1
LCALLDELAY1
TTM120:
LCALLKS
LCALLDELAY1
JZTTM120
LCALLK2
MOVA,37H
CJNEA,#0EH,TTM120

SETBTR1
LJMPNEXT20
TTM13:
CJNEA,#0CH,TTM14
MOVA,52H
INC A
MOV52H,A
MOVA,53H
INC A
MOV53H,A
MOVA,36H
INC A
MOV37H,A
LJMPTTM2
TTM14:
CJNEA,#0DH,TTM2
MOVA,52H
DEC A
MOV52H,A
MOVA,53H
DEC A
MOV53H,A
MOVA,36H
DEC A
MOV37H,A   
TTM2:
RET;定时器中断子程序0
TT0:
PUSHACC

PUSHPSW
MOVTL0,20H
MOV TH0,21H
CPLP3.7
POPPSW
POPACC
RETI;定时器中断子程序1
T1INT:
MOV TH1,#3cH
MOVTL1, #0b0H
DJNZL50MS,X4
MOVL50MS,#20 ; 每秒种时钟刷新秒显示一次
SECSET:
MOVA,SEC
MOVB,#10
DIVAB
ADDA,#30H
MOVP0,#0CEH    ;显示秒十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0CFH    ;显示秒个位
LCALLENABLE
LCALLWRITE2
MOVA,SEC
INC A
MOVSEC,A
XRLA,#60

X4:
JNZOUT
MINSET:
MOVSEC,#00H   
MOVA,MIN
INC A
MOVMIN,A
MOVB,#10
DIVAB
ADDA,#30H
MOV  P0,#0CBH   ;显示分十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOV  P0,#0CCH   ;显示分个位
LCALLENABLE
LCALLWRITE2
MOVA,MIN
MOVB,#3
MULAB
MOVB,#100
DIVAB
MOVR2,A
MOVA,#10
XCHA,B
DIVAB
MOVA,MIN
XRLA,#60
JNZOUT

HOUSET:
MOVMIN,#00H  
MOVA,HOU
MOVB,#10
DIVAB
ADDA,#30H   
MOVP0,#0C8H    ;显示小时十位
LCALLENABLE
LCALLWRITE2
MOVA,B
ADDA,#30H
MOVP0,#0C9H    ;显示小时个位
LCALLENABLE
LCALLWRITE2
MOVA,HOU
INC A
MOV HOU,A
XRLA,#10
JNZOUT
SJMPOVERFLOW
OUT:
RETI
OVERFLOW:
MOVL50MS,#20
MOVL1MS,#00H
MOVL250MS,#00H
MOVSEC,#00H
MOV MIN,#00H
MOV HOU,#00H

RETI
DELAY30:  
MOVR7,#2
W2:
MOVR4,#125
W3:
MOVR3,#248
DJNZR3,$
DJNZR4,W3
DJNZR7,W2
DJNZR1,DELAY30
RET
TABLE00:
DW64580,64684,64777,64820
DW64898,64968,65030,64260
DW64400,64524,65058,63835,64021
第一首《精忠报国》
TABLE10:   
DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H
DB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H
DB 24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22H
DB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H

DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H
DB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H
DB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H
DB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H
DB 52H,62H,7FH,74H,04H,58H,6FH
DB 00
;第二首《月亮代表我的心》
TABLE20:      
DB 02H,82H
DB 16H,32H,54H,02H,52H
DB0A6H,32H,54H,02H,52H
DB 64H,74H,0B6H,64H
DB 52H,5CH,32H,22H
DB 16H,12H,14H,32H,22H
DB 16H,12H,14H,22H,32H
DB 26H,12H,94H,22H,32H
DB 2CH
DB 32H,52H
DB 36H,22H,14H,54H
DB0ACH,92H,0A2H
DB 96H,0A2H,96H,82H

DB 3CH,54H
DB 36H,22H,14H,54H
DB0ACH,92H,0A2H
DB 16H,12H,14H,22H,32HDB2CH,02H,82H
DB 16H,32H,56H,12H
DB0A6H,32H,56H,52H
DB 66H,72H,0B6H,62H
DB 62H,52H,58H,32H,22H
DB 16H,12H,14H,32H,22H
DB 16H,12H,14H,22H,32H
DB 26H,92H,0A4H,12H,22H
DB 1CH
DB 00H
第三首《看我七十二变》
TABLE30:
DB0d4H,84H,94H,82H,92H
DB 12H,22H,82H,92H,02H,92H,82H,0d2H
DB 82H,92H,14H,84H,02H,0d1H,0d1H
DB0c2H,0d2H,84H,0d2H,0d2H,82H,82H
DB 84H,82H,82H,94H,82H,0d2H
DB 82H,82H,82H,92H,02H,82H,82H,0d2H
DB 0c4H,84H,0d4H,92H,0d2H
DB 82H,0d2H,82H,92H,98H
DB 04H,94H,88H
DB 04H,94H,88H
DB 04H,94H,88H
DB 04H,94H,88H,04H
DB 32H,32H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,92H

DB 32H,32H,22H,12H,02H,92H,12H,22H
DB 54H,44H,34H,12H,22H
DB 34H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,92H
DB 32H,32H,22H,12H,02H,92H,12H,22H
DB 54H,44H,32H,22H,12H,92H
DB 00H        
END  

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表