8255与8253的综合应用实例_发声及音乐.doc

上传人:人*** 文档编号:560217374 上传时间:2023-10-13 格式:DOC 页数:21 大小:1.50MB
返回 下载 相关 举报
8255与8253的综合应用实例_发声及音乐.doc_第1页
第1页 / 共21页
8255与8253的综合应用实例_发声及音乐.doc_第2页
第2页 / 共21页
8255与8253的综合应用实例_发声及音乐.doc_第3页
第3页 / 共21页
8255与8253的综合应用实例_发声及音乐.doc_第4页
第4页 / 共21页
8255与8253的综合应用实例_发声及音乐.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《8255与8253的综合应用实例_发声及音乐.doc》由会员分享,可在线阅读,更多相关《8255与8253的综合应用实例_发声及音乐.doc(21页珍藏版)》请在金锄头文库上搜索。

1、实验一 8255与8253的综合应用实例:发声及音乐一、实验要求 利用定时/计数器8253和并行接口8255控制扬声器发声。8253的输入时钟CLK的频率1.19318MHz。二、实验设计 (1)硬件设计(如下图) (2)软件设计:音乐程序如下:stack segment para stack stackdb 64 dup(stack.)stackendsdsegsegment para datamus_fre dw 330,392,330,294,330,392,330,294,330 dw 330,392,330,294,262,294,330,392,294 dw 262,262,220

2、,196,196,220,262,294,330,262 dw -1mus_tim dw 3 dup(100),50,50,100,50,50,200 dw 2 dup(100,100,50,50),200 dw 3 dup(100,50,50),200dsegendscseg segment para codeassume cs:cseg,ss:stack,ds:dsegmusicproc farmov ax,dsegmov ds,axfreq1:lea si,mus_frelea bp,ds:mus_timfreq:mov di,sicmp di,-1je end_musmov bx,ds

3、:bpcall soundfadd si,2add bp,2jmp freqend_mus:jmp freq1mov ah,4chint 21hsoundf proc nearpush axpush bxpush cxpush dxpush di mov al,0b6h ;10110110Bout 43h,al ;送控制字mov dx,12h ;12348C为1.1931Mmov ax,348chdiv di ;除以频率为延时out 42h,al ;送延时常数mov al,ahout 42h,al in al,61h ;保护并口状态,开并口mov ah,alor al,3out 61h,alw

4、ait1:mov cx,600 ;发声延时push axwaitf1: in al,61hand al,10h ;10hcmp al,ahje waitf1mov ah,alloop waitf1pop axdelay:loop delaydec bxjnz wait1mov al,ahout 61h,al ;还原并口pop dipop dxpop cxpop bxpop axretsoundfendpmusicendp csegends end三、实验步骤 1、打开“Masm For Windows集成实验环境”,新建一个文件。2、将发声程序代码复制粘贴到文件中并保存3、编译成目标文件4、生

5、成可执行文件5、运行四、实验结果 可以听到电脑扬声器发出太湖船的曲调五、实验总结分析我了解了怎样利用定时/计数器8253和并行接口8255控制扬声器发声,并且我把程序改成了一个死循环,可以让扬声器不停地发声。在实验中我发现把每个数据后面添一个0,可以使声音变大,如果再添一个0就不会有声音了。这是一个很有趣味的实验。实验二 微机键盘、8259与8255综合实验一、实验目的 1、理解键盘的基本工作原理和过程。2、掌握8259中断控制器的工作原理、编程方法。3、掌握中断服务程序的设计方法。4、熟悉8255作为数据接口和控制端信号引脚的作用。二、实验内容 1、编写一键盘中断处理程序:计算键盘中断次数,

6、并用该程序替换系统键盘中断处理程序,使当按键8次(键盘中断产生16次)后,显示中断次数并结束应用。 2、置换系统的09H型中断服务程序,完成对键盘中断次数的统计。在该中断服务程序中,必须对键盘控制器(口地址61H)复位。复位键盘控制器只需读出 端口61H的内容,并将最高位置1,再写入该端口。此外,按键按下和抬起均会引起中断,所以实际中断次数等于按键次数乘2。 3 、将按键的扫描码输出到屏幕上,并统计中断次数。 三、实验步骤 1、打开“Masm For Windows集成实验环境”,新建一个asm文件。 2、将发声程序代码复制粘贴到新建的asm文件中并保存 3、编译成目标文件4、生成可执行文件5

7、、运行四、实验结果当按下基本键区的“1234568”时出现的结果如下图:当按下副键盘区的“1234”再按基本键区的“5678”时,出现的结果:当按下光标移动键或者专用键时只要两次就会出现下面结果:五、实验总结分析通过这次实验我基本理解了键盘的基本工作原理和过程;掌握了8259中断控制器的工作原理、编程方法;掌握了中断服务程序的设计方法;熟悉了8255作为数据接口和控制端信号引脚的作用。六、附录程序代码DATA SEGMENTOLD_OFF DW ?OLD_SEG DW ?MKBAK DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START P

8、ROC FAR MOV AX,DATA MOV DS,AX IN AL,21H ;保留8259初始屏蔽字的状态 MOV MKBAK,AL CLI ;关中断 AND AL,11111101B ;打开键盘屏蔽 OUT 21h,AL ;中断向量修改程序 MOV AH,35H ;取原中断向量 MOV AL,9H ;9为键盘的中断类型号 INT 21H MOV OLD_OFF,BX ;保存原中断向量到字变量中 MOV BX,ES MOV OLD_SEG,BX MOV AH,25H ;设置新的中断向量 MOV AL,9H MOV DX,SEG MYINT MOV DS,DX MOV DX,OFFSET M

9、YINT INT 21H XOR DX,DX ;清计数器A1: STI ;开中断 CMP DX,10H ;是否按了8次键 JZ A2 ;是则结束程序运行 JMP A1 ;否则继续等待键盘中断A2: PUSH DX ;保存计数值 CLI ;关中断 ;恢复原中断向量 MOV AH,25H MOV AL,9H MOV DX,OLD_SEG MOV DS,DX MOV DX,OLD_OFF INT 21H MOV AL,MKBAK ;恢复系统8259屏蔽字 OUT 21h,AL STI ;开中断 POP DX ;显示计数值 CALL SHWORD MOV AX,4C00H INT 21H RETSTA

10、RT ENDP MYINT PROC FAR ;自定义键盘中断处理程序 STI ;开中断 INC DX ;计数加一 IN AL,60H ;读入扫描码(用户可对此键值进行处理) PUSH DX MOV DL,AL CALL SHWORD POP DX IN AL,61H ;读入控制字节 MOV AH,AL OR AL,80H OUT 61H,AL ;复位键盘 CLI ;关中断 MOV AL,61H ;中断结束命令送中断控制器 OUT 20H,AL IRET ;中断返回MYINT ENDP SHWORD PROC NEAR ;216进制显示 MOV CL,4AGA: ROL DX,CL MOV AL,DL AND AL,0FH CMP AL,10 JC NEXT2 ADD AL,7NEXT2:ADD AL,30H MOV AH,0EH INT 10H LOOP AGA MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H RETSHWORD ENDPCODE ENDS END START实验三 8253与键盘综合实验 模拟钢琴一、实验目的: 1、了解键盘作为人机交互设备的基本功能 ;2、熟悉键盘操作的常用系统功能函数 ;3、键盘与82

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号