资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,一、实验目的,1,、通过,8253,产生不同的频率信号,使,PC,机成为简易电子琴。,2,、了解利用,8255,和,8253,产生音乐的基本方法。,二、实验内容,实验电路如图,16-1,,,8253,的,CLK0,接,1MHZ,时钟,,GATE0,接,8255,的,PA1,,,OUT0,和,8255,的,PA0,接到与门的两个输入端,,K8,跳线连接喇叭,编程使计算机的数字键,1,、,2,、,3,、,4,、,5,、,6,、,7,作为电子琴按键,按下即发出相应的音阶。,三、编程提示,:,1,、利用,8255,的,PA0,口来施加控制信号给与门,用来控制扬声器的开关状态。再利用设置不同的计数值,使,8253,产生不同频率的波形,使扬声器产生不同频率的音调,达到类似与音阶的高低音变换。对于音乐,每个音阶都有确定的频率。,各音阶标称频率值,:,音 阶,2,3,低频率,(,单位,:Hz),262,294,330,347,392,440,494,高频率,(,单位,:Hz),524,588,660,698,784,880,988,四、参考流程图,(见图,16-2,),开始,显示按键盘信息,循环条件,满足吗?,循环体:使扬声器发音,据音频算出计数初值,让,8253,、,8255,工作,结束,no,yes,五、参考程序,:,DZQ.ASM,data segment,io8255a equ 288h,Io8255ctl equ 28bh,io8253a equ 280h,io8253ctl equ 283h,table dw 524,588,660,698,784,880,988,1048;,高音的,;table dw 262,294,330,347,392,440,494,524;,低音的,msg db Press 1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$,data ends,code segment,assume cs:code,ds:data,start:,mov ax,data,mov ds,ax,sing:,mov ah,7,int 21h,cmp al,1bh,je finish,cmp al,1,jl sing,cmp al,8,jg sing,mov ax,4240H,mov dx,0FH,div word ptrtable+bx,mov bx,ax,mov dx,io8253ctl,mov al,00110110B,out dx,al,mov dx,io8253a,mov ax,bx,out dx,al,mov al,ah,out dx,al,mov dx,io8255ctl,mov al,10000000B,out dx,al,mov dx,io8255a,mov al,03h,out dx,al,call delay,mov al,0h,out dx,al,mov dx,offset msg,mov ah,9,int 21h,Press 1,2,3,4,5,6,7,8,ESC,循环条件:,是否按键是,ESC,还是,1-7,若是,1-7,中任一按键,则形成音频表的地址,bx,sub al,31h,shl al,1,mov bl,al,mov bh,0,据输入频率,1MHZ,及输出音频计算出需写入,8253A,的初值,初始化,8253,初始化,8255,并使,PA0,、,PA1,输出一定宽度高电平启动,8253A,工作(,SPEAKER),发声,jmp sing,finish:mov ax,4c00h,int 21h,继续按键使,speaker,发声,若按,ESC,退出,delay proc near,push cx,push ax,mov ax,15,x1:mov cx,0ffffh,x2:dec cx,jnz x2,dec ax,jnz x1,pop ax,pop cx,ret,delay endp,code ends,end start,8255 PA0,、,PA1,输出高电平宽度时间,
展开阅读全文