6、程序代码
code segment assume cs:code
start:mov al,82h ;初始化8255 mov dx,206h out dx,al
r:mov al,0 mov dx,202h in al,dx cmp al,1h jz d1 cmp al,2h jz d2 cmp al,4h jz d3 cmp al,8h jz d4 cmp al,10h jz d5 cmp al,20h jz d6 cmp al,40h jz d7 cmp al,80h jz d8 jmp r
d1:mov al,36h
;控制PB端口,从而确定闭合哪个按钮;8253初始化
4
mov dx,406h out dx,al
mov ax,38 ;根据各音调频率 ,设置计数初值 mov dx,400h out dx,al mov al,ah out dx,al jmp play d2:mov al,36h mov dx,406h out dx,al mov ax,34 mov dx,400h out dx,al mov al,ah out dx,al jmp play d3:mov al,36h mov dx,406h out dx,al mov ax,30 mov dx,400h out dx,al mov al,ah out dx,al jmp play d4:mov al,36h mov dx,406h out dx,al mov ax,28
5
mov dx,400h out dx,al mov al,ah out dx,al jmp play d5:mov al,36h mov dx,406h out dx,al mov ax,25 mov dx,400h out dx,al mov al,ah out dx,al jmp play d6:mov al,36h mov dx,406h out dx,al mov ax,22 mov dx,400h out dx,al mov al,ah out dx,al jmp play d7:mov al,36h mov dx,406h out dx,al mov ax,20 mov dx,400h out dx,al mov al,ah
6
out dx,al jmp play d8:mov al,36h mov dx,406h out dx,al mov ax,19 mov dx,400h out dx,al mov al,ah out dx,al jmp play
play:mov dx,206h ;初始化8255 mov al,82h out dx,al mov dx,200h mov al,3 out dx,al mov cx,3fffh
l1:loop l1
mov al,0 ;通过设置PA端口控制扬声器开关 mov dx,200h out dx,al jmp r code ends end start
7、程序及系统运行调试情况
1) 调试过程中遇到的问题及解决方法
问题 解决方法 7
调试程序时显示路径错误 将masm文件夹放到指定盘中 或者将masm32中的路径改为对应的盘 检查程序的输入法,拼写,可行性等几方面的问题 检查连线情况 程序有错误 开关按钮无法按下
2) 调试结果
戴上耳机运行,按下开关0,1,2,3,4,5,6,7发出duo,rai,mi,fa,so,la,si,do的声音
8、设计总结与体会
通过这次课程设计,我从中学到了许多从普通的课堂上学不到的东西,锻炼了自己编程的能力和团结合作的能力,经过我们小组同学的共同努力以及参考查阅相关书籍及内容,最后程序运行时能够实现目标,我感到很有成就感,最重要的是加深了我对课本理论知识的理解。 微机原理的接口与设计这门课程刚刚结束,但是由于以前我们实验课不多,所以这次试验刚开始时最大的感觉就是以前学过的东西很难一下子拿出来应用。
当刚看到这个课设题目时,我感到无从下手,从理论课上只是了解了CPU的结构和工作原理,以及几个接口芯片的工作原理,还有汇编语言的一些基本指令。但我们没有被吓到,通过查阅资料和理性分析,电子琴的设计是由接口芯片8255和8253共同控制的,8255的PA0作为8253通道0的门信号,而8255的PA1和8253通道0的输出相与后的信号作为扬声器的驱动信号,了解了其内部接线方式后,思路也就有了,要想让扬声器发声,8255的PA0和PA1必须同时为高电平,其中之一为低电平时,扬声器就不能发声,而发声的音调则可通过改变8253的计数初值来实现,通过8255的PB口控制按键的开关。
接下来我就开始编写实现指定功能的程序了,首先是最简单的弹奏功能,通过对按键的判断来发出相应频率的声音,因为要判断按键,所以很自然地就想到了CMP指令,在计算计数初值时,因为要用到相应音符的频率,所以需要将按键转换为音符的频率,然后编写播放功能。
接下来连硬件图成了让我们很苦恼的事,不过有了正确地程序,大家不断尝试与思考,最终皇天不负有心人,通过一次一次的失败,一次一次的坚持,最终获得了成功。
8
总之,这次课程设计让我意识到我们虽然完成了书本知识的学习,但是我们能够真正运用的东西太少了,所以这次的课程设计提供给我们这个绝好的机会,让我们能得到学以致用的机会。
这次课程设计让我学到了许多从课本上学不到的知识,加深了对理论知识的理解,激发了我对汇编语言的兴趣。这次课程设计把这些指令应用到了实际中来,加深了对各种指令功能的理解,最后功能实现时,感到很有成就感,觉得汇编语言很神奇,激发了我对它的兴趣。最后也让我体会到什么叫团结就是力量。我希望以后能有更多这样的机会让我们收获知识,增长能力,学会坚持。
9、参考文献
[1]仇玉章、冯一兵主编《微机算机技术――实验与指导》.清华大学出版社. [2]顾晖 《微机原理与接口技术》 电子工业出版社
9