- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 第8章: 8.2.2 扬声器控制 计数器2的输出控制扬声器的发声音调 计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声 扬声器还受控于并行接口(8255芯片) 必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音 第8章:发音频率设置子程序 ;入口参数AX=1.19318×106÷发音频率 speaker proc push ax mov al,0b6h ;b6h out 43h,al ;写入控制字 pop ax out 42h,al ;写入低8位计数值 mov al,ah out 42h,al ;写入高8位计数值 ret speaker endp 第8章:扬声器开子程序 speakon proc push ax in al,61h ;PB端口的地址为61H or al,03h ;D1D0=PB1PB0=11B,其他位不变 out 61h,al pop ax ret speakon endp 第8章:扬声器关子程序 speakoff proc push ax in al,61h ;PB端口的地址为61H and al,0fch ;D1D0=PB1PB0=00B,其他位不变 out 61h,al pop ax ret speakoff endp 第8章:例题8.1 扬声器声音的控制 ;数据段 freq dw 1193180/600 ;代码段 mov ax,freq call speaker ;设置扬声器音调 call speakon ;打开扬声器声音 mov ah,1 ;等待按键 int 21h ;按键后 call speakoff ;关闭扬声器声音 第8章:8.2.3 可编程硬件延时 利用日时钟每隔55ms中断一次不变的特点,可以编写一段不随系统时钟频率变化的固定延时程序 由于日时钟中断的时间单位是55ms,所以无法实现更短时间的延时 这时只有利用实时时钟中断,不过它的最短延时约是1ms(976 ?s) 第8章: 8.3 扩充定时计数器的应用 A0 A1 — — — A0 — A1 外部事件产生源 8253 OUT0 GATE0 CLK0 200~207H IRQ D0~D7 D0~D7 译码 电路 AEN A3~A9 +5V CS IOR IOW RD WR 第8章:例题8.2 外部事件的计数 mov dx,203h ;设置方式控制字 mov al,10h out dx,al mov dx,200h ;设置计数初值 mov al,64h ;计数初值为100 out dx,al 输出:明确向哪个端口输出什么数据 输入:清楚从哪个端口输入什么数据 第8章:第8章教学要求 1. 掌握8253引脚,尤其是CLK、OUT、GATE引脚的功能 2. 掌握8253的六种工作方式、编程和在IBM PC系列机上的应用 习题8(第203页)—— 8.1 ~ 8.3 8.4⑴⑵⑶ 8.5 8.6 计数开始的时刻 需要注意: 处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数器。 从第二个CLK信号的下降沿,计数器才真正开始减1计数。 出处:教材第193页第17行 实验: 计数开始的时刻 实验结果1 感谢山西省太原理工大学常晓明教授提供实验结果 计数开始 实验结果2 感谢山西省太原理工大学常晓明教授提供实验结果 计数开始 问题讨论 通过本例,请大家 思考理论(原理)与实践(工程)的关系 体会教学实践环节(上机、实验)的重要性 同时,还请大家注意 大学的常规教学侧重理论(原理)的掌握 大家需要加强实践(实验)、积累实际经验 你还能提供这样的实例吗? 8253/8254的I/O地址 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 功 能 对计数器0设置计数初值 CS RD A1 A0 WR 对计数器1设置计数初值 对计数器2设置计数初值 设置控制字 从计数器0读出计数值 从计数器1读出计数值 从计数器2读出
文档评论(0)