电子琴实验最终版.doc_第1页
电子琴实验最终版.doc_第2页
电子琴实验最终版.doc_第3页
电子琴实验最终版.doc_第4页
电子琴实验最终版.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

;*;* 电子琴实验 *;*;此实验接线如下:;8254 CLK0接1MHZ时钟,GATE0接8255的PC1,OUT0接与门输入端1,CS接280H287H,;8255 PC0接与门输入端2,CS接288H28FH,;与门输出端接 LB .JD3用跳线端子接好data segmentio8255c equ 28ahio8255ctl equ 28bhio8253a equ 280hio8253b equ 283hport_A equ 288hport_B equ 289hport_ctrl equ 28bhtablee db 7Bh,7dh,7eh,0b7h,0bbh,0bdh,0beh,0d7h,0dbh,0ddh,0deh,0e7h,0ebh,0edh,0eehtable1 dw 524,588,660,698,784,880,988,1048;高音的table2 dw 262,294,330,347,392,440,494,524;中音的table3 dw 131,147,165,175,196,220,247 ;低音的;msg db Press 1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$song1 dw 262,294,330,262,262,294,330,262 dw 330,347,392,330,347,392,392,440 dw 392,347,330,262,392,440,392,347 dw 330,262,392,262,392,392,262,392 ;两只老虎 song2 dw 330,330,347,392,392,347,330,294 dw 262,262,294,330,330,294,294,330 dw 330,347,392,392,347,330,294,262 dw 262,294,330,294,262,262 ;欢乐颂 data endscode segmentassume cs:code,ds:datastart:call scancmp al,0ddhjz n1cmp al,0dehjz n2cmp al,0e7hjz n3cmp al,0ebhjz n4n4: call music1jmp startn1: begin1: call scannext_try1:cmp al, tableebxjz sing1cmp al,0dehjz n2cmp al,0e7hjz n3cmp al,0ebhjz n4dec bxjns next_try1sing1: mov al,bl shl al,1 ;转为查表偏移量 mov bl,al ;保存偏移到bx mov bh,0 mov ax,4240H ;计数初值 = 1000000 / 频率, 保存到AX mov dx,0FH div word ptrtable1+bx mov bx,ax call speaker jmp begin1n2:begin2: call scannext_try2:cmp al, tableebxjz sing2cmp al,0ddhjz n1cmp al,0e7hjz n3cmp al,0ebhjz n4dec bxjns next_try2sing2: mov al,bl shl al,1 ;转为查表偏移量 mov bl,al ;保存偏移到bx mov bh,0 mov ax,4240H ;计数初值 = 1000000 / 频率, 保存到AX mov dx,0FH div word ptrtable2+bx mov bx,ax call speaker jmp begin2n3:begin3: call scannext_try3:cmp al, tableebxjz sing3cmp al,0ddhjz n1cmp al,0dehjz n2cmp al,0ebhjz n4dec bxjns next_try3sing3: mov al,bl shl al,1 ;转为查表偏移量 mov bl,al ;保存偏移到bx mov bh,0 mov ax,4240H ;计数初值 = 1000000 / 频率, 保存到AX mov dx,0FH div word ptrtable3+bx mov bx,ax call speaker jmp begin3 delayy proc near ;延时子程序 push cx push ax mov ax,40x1: mov cx,0ffffhx2: dec cx jnz x2 dec ax jnz x1 pop ax pop cx retdelayy endpspeaker proc near ;发音子程序mov dx,io8253b ;设置8254计时器0方式3, 先读写低字节, 再读写高字节 mov al,00110110B out dx,al mov dx,io8253a mov ax,bx out dx,al ;写计数初值低字节 mov al,ah out dx,al ;写计数初值高字节 mov dx,io8255ctl ;设置8255 C口输出 mov al,10000000B out dx,al mov dx,io8255c mov al,03h out dx,al ;置PC1PC0 = 11(开扬声器) call delayy ;延时 mov al,0h out dx,al ;置PC1PC0 = 00(关扬声器) retspeaker endpmusic1 proc near ;音乐1播放子程序 mov cl,0 ad:inc cl cmp cl,33 je returnmov al,cl sub al,1 ;取偏移量 shl al,1 mov bl,al ;保存偏移量 mov bh,0 mov ax,4240H ;计数初值 = 1000000 / 频率, 保存到AX mov dx,0FH div word ptrsong1+bx mov bx,ax call speaker jmp adreturn:retmusic1 endpscan proc near mov ax,datamov ds,ax;8255初始化mov dx,port_ctrlmov al,10000010bout dx,almov dx,port_Amov al,00hout dx,almov dx,port_Bwait_open:in al,dxand al,0Fhcmp al,0Fhjnz wait_openwait_press:in al,dxand al,0fhcmp al,0fhje wait_pressmov cx,16eahdelay: loop delayin al,dxand al,0fhcmp al,0fhje wait_pressmov al,0fehmov cl,alnext_row:mov dx,p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论