微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 单片机学习知识点全攻略(完结篇)

单片机学习知识点全攻略(完结篇)

时间:05-21 来源:本站整理 点击:

序框图如图2所示。

  

  《单片机音乐程序的设计图》

  本课由单片机教程网提供,有问题指出。

  硬件连接说明:

  随便找一个仿真机或者什么单片机实验板,只要能工作的就行,将程序输入,运行,然后找个音箱(你计算机旁边应当就有一对吧)拨出插头,插头的前端接在P1。0上,后面部分找根线接单片机的地,就应当有声了,然后怎么改进硬件连接就是你的事了。。。。

  音乐程序汇编代码代码1 -------------Voice.asm--------------------------

  ORG 0000H

  LJMP START

  ORG 000BH

  INC 20H ;中断服务,中断计数器加1

  MOV TH0,#0D8H

  MOV TL0,#0EFH ;12M晶振,形成10毫秒中断

  RETI

  START:

  MOV SP,#50H

  MOV TH0,#0D8H

  MOV TL0,#0EFH

  MOV TMOD,#01H

  MOV IE,#82H

  MUSIC0:

  NOP

  MOV DPTR,#DAT ;表头地址送DPTR

  MOV 20H,#00H ;中断计数器清0

  MOV B,#00H ;表序号清0

  MUSIC1:

  NOP

  CLR A

  MOVC A,@A+DPTR ;查表取代码

  JZ END0 ;是00H,则结束

  CJNE A,#0FFH,MUSIC5

  LJMP MUSIC3

  MUSIC5:

  NOP

  MOV R6,A

  INC DPTR

  MOV A,B

  MOVC A,@A+DPTR ;取节拍代码送R7

  MOV R7,A

  SETB TR0 ;启动计数

  MUSIC2:

  NOP

  CPL P1.0

  MOV A,R6

  MOV R3,A

  LCALL DEL

  MOV A,R7

  CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?

  ;不等,则继续循环

  MOV 20H,#00H ;等于,则取下一代码

  INC DPTR

  ; INC B

  LJMP MUSIC1

  MUSIC3:

  NOP

  CLR TR0 ;休止100毫秒

  MOV R2,#0DH

  MUSIC4:

  NOP

  MOV R3,#0FFH

  LCALL DEL

  DJNZ R2,MUSIC4

  INC DPTR

  LJMP MUSIC1

  END0:

  NOP

  MOV R2,#64H ;歌曲结束,延时1秒后继续

  MUSIC6:

  MOV R3,#00H

  LCALL DEL

  DJNZ R2,MUSIC6

  LJMP MUSIC0

  DEL:

  NOP

  DEL3:

  MOV R4,#02H

  DEL4:

  NOP

  DJNZ R4,DEL4

  NOP

  DJNZ R3,DEL3

  RET

  NOP

  DAT:

  db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h

  db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h

  db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h

  db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h

  db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h

  db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h

  db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h

  db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h

  db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h

  db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h

  db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h

  db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h

  db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h

  db 20h,10h,2bh,10h,26h,30h,30h,80h,00H

  END

  音乐程序汇编代码代码2 -------------Voice1.asm--------------------------

  ;标题 ‘八月桂花香’发声程序

  ;摘要 详见‘无线电’92年3期

  ;作者 周振安

  ORG 0000H

  LJMP START

  ORG 000BH

  INC 20H ;中断服务,中断计数器加1

  MOV TH0,#0D8H

  MOV TL0,#0EFH ;12M晶振,形成10毫秒中断

  RETI

  START:

  MOV SP,#50H

  MOV TH0,#0D8H

  MOV TL0,#0EFH

  MOV TMOD,#01H

  MOV IE,#82H

  MUSIC0:

  NOP

  MOV DPTR,#DAT ;表头地址送DPTR

  MOV 20H,#00H ;中断计数器清0

  MOV B,#00H ;表序号清0

  MUSIC1:

  NOP

  CLR A

  MOVC A,@A+DPTR ;查表取代码

  JZ END0 ;是00H,则结束

  CJNE A,#0FFH,MUSIC5

  LJMP MUSIC3

  MUSIC5:

  NOP

  MOV R6,A

  INC DPTR

  MOV A,B

  MOVC A,@A+DPTR ;取节拍代码送R7

  MOV R7,A

  SETB TR0 ;启动计数

  MUSIC2:

  NOP

  CPL P1.0

  MOV A,R6

  MOV R3,A

  LCALL DEL

  MOV A,R7

  CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?

;不等,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top