小型音乐喷泉控制主要部分程序Word下载.docx

上传人:b****4 文档编号:7145772 上传时间:2023-05-08 格式:DOCX 页数:15 大小:19.09KB
下载 相关 举报
小型音乐喷泉控制主要部分程序Word下载.docx_第1页
第1页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第2页
第2页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第3页
第3页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第4页
第4页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第5页
第5页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第6页
第6页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第7页
第7页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第8页
第8页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第9页
第9页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第10页
第10页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第11页
第11页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第12页
第12页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第13页
第13页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第14页
第14页 / 共15页
小型音乐喷泉控制主要部分程序Word下载.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

小型音乐喷泉控制主要部分程序Word下载.docx

《小型音乐喷泉控制主要部分程序Word下载.docx》由会员分享,可在线阅读,更多相关《小型音乐喷泉控制主要部分程序Word下载.docx(15页珍藏版)》请在冰点文库上搜索。

小型音乐喷泉控制主要部分程序Word下载.docx

AJMPCIRCLE1

DO2:

LCALLLUMP;

CIRCLE2:

LCALLSTART-MU;

转向音乐程序(内含调速子程序)

AJMPCIRCLE2

求出键码子程序模块

INT0:

MOV32H,#00H

MOV33H,#00H

MOV34H,#00H

MOVSP,#70H

KEY-SUB:

MOVDPTR,#0EF00H;

初始化2#8155,PA口为基本输出口PB口为基本输出口,PC口输入口

MOVA,#1H

MOVX@DPTR,A

BEGIN:

NOP

LCALLDISPLAY;

显示数据

LCALLJUDGE;

全列置0扫描,判断有无键按下

JNZENTER1;

若有键按下,则继续

SJMPBEGIN;

若没有键按下,则返回,

ENTER1:

LCALLDELAY5;

调用延时子程序,防止抖动

LCALLJUDGE;

重新判断有无键按下

JNZENTER2;

若有键按下,则说明的确有

键按下

SJMPBEGIN;

没有键按下,则返回,继续检测

ENTER2:

MOVR2,#0FEH;

若有键按下,开始扫描列

MOVR1,#00H;

列号放在R1中,第一列的列号

定义为00H

NEXT-L:

MOVDPTR,#0EF01H;

PA口地址

MOVA,R2;

扫描码送A

MOVX@DPTR,A;

输出扫描码

INCDPTR

MOVXA,@DPTR;

读PB口的内容

JBACC.0,LINE1;

判断第一行有无键按下,为1

无键按下

MOVA,#00H;

行码送A

SJMPKEY-CODE;

再确定按键的键号

LINE1:

JBACC.1,LINE2;

判断第二行有无键按下

MOVA,#04H;

LINE2:

JBACC.2,LINE3;

判断第三行有无键按下

MOVA,#8H;

LINE3:

JBACC.3,NEXT;

判断第四行有无键按下

MOVA,#0CH;

KEY-CODE:

ADDA,R1;

行号加列号得出键码

PUSHACC;

键码入栈保护

WAIT-REL:

LCALLJUDGE;

检验键是否松开

JNZWAIT-REL;

等待键断开

POPACC;

键码出栈

MOVR6,A;

保护键码

D:

CJNER6,#00H,D0001;

是数字键输出显示,不是数字键

返回主程序

LCALLDISPLAY

D0001:

CJNER6,#01H,D0002;

D0002:

CJNER6,#02H,D0003;

D0003:

CJNER6,#03H,D0004;

D0004:

CJNER6,#04H,D0005;

D0005:

CJNER6,#05H,D0006;

D0006:

CJNER6,#06H,D0007;

D0007:

CJNER6,#07H,D0008;

LCALLDISPLAY

D0008:

CJNER6,#08H,D0009;

D0009:

CJNER6,#09H,KEY-NO

NEXT:

INCR1;

扫描下一列

MOVA,R2;

JNBACC.3,KEY-NO;

四列扫描完还没有键按下的话,

认为是干扰信号,程序返回

RLA

MOVR2,A

SJMPNEXT-L

JUDGE:

MOVA,#00H;

MOVX@DPTR,A

INCDPTR

MOVXA,@DPTR;

读PB口数据

CPLA;

无键按下结果为零

ANLA,#0FH;

屏蔽高位

RET

KEY-NO:

RETI

显示子程序模块

DISPLAY:

MOV33H,32H;

递推显示

MOV32H,31H

MOV31H,30H

MOVR3,#33H

NO-DIS:

MOVA,@R3

MOVCA,@A+DPTR

MOVSBUF,A

CLRTI

JNBTI,$

DECR3

CJNER3,#30H,NO-DIS;

转向继续显示

RET

DELAY5:

MOV20H,#1FH;

延时子程序

DL2:

MOV21H,#0FFH

DL1:

DJNZ21H,DL1

DJNZ20H,DL2

LEDTABLE:

LED字型码表

DB3FH,06H,5BH,4FH,66H,

DB6DH,7DH,07H,7FH,6FH

END

控制电磁阀子程序模块

DIAN:

MOVA,31H;

求出花型数据

ADDA,32H

ADDCA,33H

MOV34H,A;

保存起来

MOVDPTR,#0F700H;

指向1#8155命令口

MOVA,#3H;

设置命令字

INCDPTR;

指向1#PA口

MOVA,34H

MOVX@DPTR,A;

高电平口使电磁阀有电

INCDPTR;

指向1#PB口

MOVA,R7

采集数据子程序

START-AD:

MOVDPTR,#7FFFH;

使DPTR指向MAXll8的端口地址,如图为7FFFH

MOVR5,00H;

R5指向某一通道,指向1N0

MOVA,R5

MOVX@DPTR,A;

启动R5所指通道

WEND:

JBP1.0,WEND;

判是否转换完毕

读取转换结果

MOVR0,A;

把结果保存入R0

MOV36H,A;

把结果暂存入36H

RET

灯光控制子程序

LUMP:

初始化2#8155,PA口为基本输出口

PB口为基本输出口,PC口输入口

MOVA,#1H

INCDPTR

指向2#8155PC口

MOVA,#01H

停止节电子程序

STOP:

……

JBP3.2,$;

在INT0变低前原地等待,有中断键按下,返回主程序

音乐程序模块

START-MU:

ORG00H;

主程序起始地址

JMPSTART;

跳至主程序

ORG0BH;

TIMER0中断起始地址

JMPTIM0;

跳至TIMER0中断子程序

START:

MOVTMOD,#01H;

设TIMER0在MODE1

MOVIE,#82H;

中断使能

START0:

MOV30H,#00H;

取简谱码指针

NEXT:

MOVA,30H;

简谱码指针载入A

MOVDPTR,#TABLE;

至TABLE取简谱码

MOVCA,@A+DPTR

MOVR2,A;

取到的简谱码暂存于R2

JZEND0;

是否取到00(结束码)?

ANLA,#0FH;

不是,则取低4位(节拍码)

MOV90H,A;

为调速保存数据

MOVR5,A;

将节拍码存入R5

MOVA,R2;

将取到的简谱码再载入A

SWAPA;

高低4位交换

取低4位(音符码)

MOV90H,A;

保存音符码,为调速做准备

JNZSING;

取到的音符码是否为0?

CLRTR0;

是,则不发音

JMPD1;

跳至D1

SING:

DECA;

取到的音符码减1(不含0)

MOV22H,A;

存入(22H)

RLA;

乘2

MOVDPTR,#TABLE1;

至TABLE1取相对的

高位字节计数值

MOVCA,@A+DPRT

MOVTH0,A;

取到的高位字节存入TH0

MOV21H,A;

取到的高位字节存入(21H)

MOVA,22H;

再载入取到的音符码

INCA;

加1

MOVCA,@A+DPRT;

低位字节计数值

MOVTL0,A;

取到的低位字节存入TL0

MOV20H,A;

取到的低位字节存入(20H)

SETBTB0;

启动TIMER0

D1:

CALLCHULIKOU;

调用以1/4拍为基本单位时间的调速子程序

INC30H;

取简谱码指针加1

JMPNEXT;

取下一个码

END0:

CLRTR0;

停止TIMER0

JMPSTART0;

重复循环

TIM0:

PUSHACC;

将A的值暂存于堆栈

PUSHPSW;

将PSW的值暂存于堆栈

MOVTL0,20H;

重设计数值

MOVTH0,21H

CPLP1.0;

将P1.0位反相

POPPSW;

至堆栈取回PSW的值

POPACC;

至堆栈取回A的值

RETI;

TABLE1:

DW64260,64400,65524,64580

DW64684,64777,64820,64898

DW64968,65030,65058,65110

DW65157,65178,65217

TABLE:

1

DB82H,01H,81H,94H,84H

DB0B4H,0A4H,04H

DB82H,01H,81H,94H,84H

DB0C4H,0B4H,04H

2

DB82H,01H,81H,0F4H,0D4H

DB0B4H,0A4H,94H

DB0E2H,01H,0E1H,0D4H,0B4H

DB0C4H,0B4H,04H

3

DB0B4H,0A4H,04H

4

DB82H,01H,81H,0F4H,0D4H

DB0B4H,0A4H,94H

DB0E2H,01H,0E1H,0D4H,0B4H

DBC4H,0B4H,04H

DB00

TABLE2:

DB04H,05H,06H

DB09H,0AH,0BH,0CH,0DH,0EH

DB11H,12H,13H,14H,15H,16H

END

调速子程序模块(以1/4拍为基本单位时间的调速子程序)

CHULIKOU:

MOVDPTR,#TABLE2

MOVA,90H;

90H里为音符简谱码

MOVA,@A+DPTR;

找到调速码

MOVR0,A

CJNER0,#0FH,ZHUAN

ZHUAN:

JCNEG;

R0<

0EH

LJMPHIEGH;

高速六档

NEG:

CJNER0,#07H,XIAM

XIAM:

JCDISHU;

07H,低速四档

LJMPZHONGSHU;

中速六档

HIEGH:

CLRP2.2;

TH晶闸管导通

MOVA,34H

ANLA#7H;

#00000111

MOV95H,A

LCALLDELAY1;

TH晶闸管按周期比例导通

SETBP2.2

CLRP2.1;

TM晶闸管导通

MOVA,#06H

CLRC

SUBBA,R7

MOV95H,A

LCALLDELAY1;

TM晶闸管按周期比例导通

SETBP2.1

DJNZR5,HIEGH

ZHONG:

CLRP3.1;

MOVA,34H

ANL#7H;

#00000111

MOV95H,A

NOP

CLRP2.0;

TL晶闸管导通

MOVA,#06H

CLRC

SUBBA,R7

MOV95H,A

TL晶闸管按周期比例导通

SETBP2.0

DJNZR5,ZHONG

DISHU:

CLRP2.0;

MOVA,34H

ANL#7H;

MOV95H,A

LCALLDELAY1;

SETBP2.0

MOVA,#06H

SUBBA,R7

LCALLDELAY1;

TL晶闸管周期比例外不导通

DJNZR5,DISHU

DELAY1:

MOVR7,#02;

D2:

MOVR495H

D3:

MOVR3,#248

DJNZR3,﹩

DJNZR4,D3

DJNZR7,D2

CHULIKOU1:

……

8051接收程序

ORG00H

MOVSCON,#50H;

UART工作在MODE1,

SM1=1,REN=1

MOVTMOD,#20H;

TIMER1工作在MODE2,

M2M1=10,自动重装初值的8位计数器

MOVTH1,#F3H;

波特率2400bit/s

MOVTL1,#0F3H;

设置初值

SETBTR1;

启动TIMER1

A1:

JBRI,UART;

RI是否为1?

是表示接收到

JMPA1

UART:

MOVA,SBUF;

程序载如程序存储器

MOVR0A

CLRRI

JMPAI

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2