8255与8253的综合应用实例发声及音乐Word格式文档下载.docx
- 文档编号:18163545
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:18
- 大小:1.20MB
8255与8253的综合应用实例发声及音乐Word格式文档下载.docx
《8255与8253的综合应用实例发声及音乐Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《8255与8253的综合应用实例发声及音乐Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
musicprocfar
movax,dseg
movds,ax
freq1:
leasi,mus_fre
leabp,ds:
mus_tim
freq:
movdi,[si]
cmpdi,-1
jeend_mus
movbx,ds:
[bp]
callsoundf
addsi,2
addbp,2
jmpfreq
end_mus:
jmpfreq1
movah,4ch
int21h
soundfprocnear
pushax
pushbx
pushcx
pushdx
pushdi
moval,0b6h;
B
out43h,al;
送控制字
movdx,12h;
12348C为1.1931M
movax,348ch
divdi;
除以频率为延时
out42h,al;
送延时常数
moval,ah
out42h,al
inal,61h;
保护并口状态,开并口
movah,al
oral,3
out61h,al
wait1:
movcx,600;
发声延时
waitf1:
inal,61h
andal,10h;
10h
cmpal,ah
jewaitf1
loopwaitf1
popax
delay:
loopdelay
decbx
jnzwait1
out61h,al;
还原并口
popdi
popdx
popcx
popbx
ret
soundfendp
musicendp
csegends
end
三、实验步骤
1、打开“MasmForWindows集成实验环境”,新建一个文件。
2、将发声程序代码复制粘贴到文件中并保存
3、编译成目标文件
4、生成可执行文件
5、运行
四、实验结果
可以听到电脑扬声器发出《太湖船》的曲调
五、实验总结分析
我了解了怎样利用定时/计数器8253和并行接口8255控制扬声器发声,并且我把程序改成了一个死循环,可以让扬声器不停地发声。
在实验中我发现把每个数据后面添一个0,可以使声音变大,如果再添一个0就不会有声音了。
这是一个很有趣味的实验。
实验二微机键盘、8259与8255综合实验
一、实验目的
1、理解键盘的基本工作原理和过程。
2、掌握8259中断控制器的工作原理、编程方法。
3、掌握中断服务程序的设计方法。
4、熟悉8255作为数据接口和控制端信号引脚的作用。
二、实验内容
1、编写一键盘中断处理程序:
计算键盘中断次数,并用该程序替换系统键盘中断处理程序,使当按键8次(键盘中断产生16次)后,显示中断次数并结束应用。
2、置换系统的09H型中断服务程序,完成对键盘中断次数的统计。
在该中断服务程序中,必须对键盘控制器(口地址61H)复位。
复位键盘控制器只需读出端口61H的内容,并将最高位置1,再写入该端口。
此外,按键按下和抬起均会引起中断,所以实际中断次数等于按键次数乘2。
3、将按键的扫描码输出到屏幕上,并统计中断次数。
1、打开“MasmForWindows集成实验环境”,新建一个asm文件。
2、将发声程序代码复制粘贴到新建的asm文件中并保存
当按下基本键区的“”时出现的结果如下图:
当按下副键盘区的“1234”再按基本键区的“5678”时,出现的结果:
当按下光标移动键或者专用键时只要两次就会出现下面结果:
通过这次实验我基本理解了键盘的基本工作原理和过程;
掌握了8259中断控制器的工作原理、编程方法;
掌握了中断服务程序的设计方法;
熟悉了8255作为数据接口和控制端信号引脚的作用。
六、附录程序代码
DATASEGMENT
OLD_OFFDW?
OLD_SEGDW?
MKBAKDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
STARTPROCFAR
MOVAX,DATA
MOVDS,AX
INAL,21H;
保留8259初始屏蔽字的状态
MOVMKBAK,AL
CLI;
关中断
ANDAL,B;
打开键盘屏蔽
OUT21h,AL
;
中断向量修改程序
MOVAH,35H;
取原中断向量
MOVAL,9H;
9为键盘的中断类型号
INT21H
MOVOLD_OFF,BX;
保存原中断向量到字变量中
MOVBX,ES
MOVOLD_SEG,BX
MOVAH,25H;
设置新的中断向量
MOVAL,9H
MOVDX,SEGMYINT
MOVDS,DX
MOVDX,OFFSETMYINT
XORDX,DX;
清计数器
A1:
STI;
开中断
CMPDX,10H;
是否按了8次键
JZA2;
是则结束程序运行
JMPA1;
否则继续等待键盘中断
A2:
PUSHDX;
保存计数值
CLI;
关中断
恢复原中断向量
MOVAH,25H
MOVAL,9H
MOVDX,OLD_SEG
MOVDX,OLD_OFF
MOVAL,MKBAK;
恢复系统8259屏蔽字
STI;
POPDX;
显示计数值
CALLSHWORD
MOVAX,4C00H
RET
STARTENDP
MYINTPROCFAR;
自定义键盘中断处理程序
INCDX;
计数加一
INAL,60H;
读入扫描码(用户可对此键值进行处理)
PUSHDX
MOVDL,AL
POPDX
INAL,61H;
读入控制字节
MOVAH,AL
ORAL,80H
OUT61H,AL;
复位键盘
MOVAL,61H;
中断结束命令送中断控制器
OUT20H,AL
IRET;
中断返回
MYINTENDP
SHWORDPROCNEAR;
2→16进制显示
MOVCL,4
AGA:
ROLDX,CL
MOVAL,DL
ANDAL,0FH
CMPAL,10
JCNEXT2
ADDAL,7
NEXT2:
ADDAL,30H
MOVAH,0EH
INT10H
LOOPAGA
MOVDL,0AH
MOVAH,02H
MOVDL,0DH
SHWORDENDP
CODEENDS
ENDSTART
实验三8253与键盘综合实验模拟钢琴
一、实验目的:
1、了解键盘作为人机交互设备的基本功能;
2、熟悉键盘操作的常用系统功能函数;
3、键盘与8253的交互。
二、实验内容:
通过键盘模拟钢琴琴键控制8253发声实现钢琴的模拟弹奏
三、实验原理
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。
当与门打开后,经过放大器放大的作用,便可驱动扬声器发出不同频率的音调,要使该音调的声音持续一段时间,只要插入一段延时程序,之后再将扬声器切断(关闭与门)即可。
另外,若要使计算机成为可直接演奏的钢琴,则需要使用系统调用的01H功能以接收键入字符,并且要建立一张表,使表上字符与频率值构成一个对应关系。
表上字符:
12345678
音符:
1234567i
频率值5245886606987848809881048
四、实验步骤
五、实验结果
按下数字键“1、2、3、4、5、6、7、8”,相对应发出的声音就是“多、来、米、发、梭、拉、西、多(高音)”,按“CTRL+C”则会退出“钢琴”状态。
按照五线谱弹奏就可以弹出乐曲了,只是要控制好节奏才弹得出美妙的音乐。
六、实验总结分析
这是一个趣味性实验,很有意思,既能满足娱乐的心,又能学到知识。
此次实验重点要掌握发音对应的频率值,还要知道发音的原理(要插入一段延时程序),有个缺点就是觉得声音有点小。
七、附录程序代码
datasegment
f1dw524,588,660,698,784,880,988,1048
dataends
codesegment
code,ds:
data
hhhprocnear
movdx,08ffh
movcx,0ffffh
yyy:
loopyyy
decdx
jnzyyy
hhhendp
start:
movax,data
xxx:
movah,1h
cmpal,'
1'
判断是否为数字1~8
jbover
8'
jaover
subal,31h
movbl,2
mulbl
movah,0;
ax高8位为0
movsi,ax;
保护AL于SI中,以待后用,作为参数传递
movbx,f1[si]
movax,0000h
movdx,0012h
divbx
movbx,ax
movdx,43h;
控制字
moval,0b6h
outdx,al;
写入控制端口
moval,bl
先写低8位
moval,bh
后写高8位
读PB口当前状态
movah,al
oral,03h;
使PB0、PB1均为1,打开与门
接通扬声器
callhhh;
调用hhh
andal,0fch;
使PB0、PB1均为0,关闭与门
jmpxxx
over:
movah,4ch
codeends
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8255 8253 综合 应用 实例 发声 音乐