- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计-第12章
基本内容 可编程内部定时器8253/54 通用发声程序 乐曲程序 12.1 可编程内部定时器8253/54 编程结构 工作方式 控制字 IBM PC 8253/54定时器的使用 8253/54定时器内部有3个独立工作的计数器:计 数器0、计数器1和计数器2,端口地址分别为40H、41H 和42H。其中计数器0用于实时钟,计数器1用于DMA进行寄存器刷新,计数器2用于扬声器发声。每个计数器 中包含一个以倒计数的方式计数的16位计数寄存器。 8253/54内部还有一个公用的控制寄存器,端口地址为43H。 每个计数器由CLK、GATE和OUT 3个引脚与外部通信, 如下图所示,其中CLK为时钟输入端,GATE为门控信号, OUT为信号输出端。 8253/54有6种可编程选择的工作方式。这6种工作方式的主要区别是输出波形不同,下面分别作以介绍。 2.方式1:可编程单脉冲输出 当计数器的计数值装入计数器后,要由门控信号GATE上升沿 开始启动计数。同时计数器的OUT输出为低电平。当计数结束时, OUT输出为高电平。这样就可以从计数器的OUT端得到一个由GATE 上升沿开始,直到计数结束的负脉冲。若要再次获得一个所希望 宽度的负脉冲,则需要重新装入计数值并用GATE启动来达到。 3.方式2:频率发生器 在该方式下,计数器装入初值,开始工作后,计数器的输出 OUT将连续输出一个时钟周期宽的脉冲。两负脉冲之间的时钟周 期数就是计数器装入的计数初值。这样一来,就可以利用不同的 计数值达到对时钟脉冲的分频,而分频输出就是OUT输出。 4.方式3:方波发生器 这种方式下,可以得到对称的方波由OUT输出。当装 入计数值为N时,若N为偶数,则完成N/2计数OUT为高, 完成另外N/2计数时OUT为低,一直进行下去。若N为奇数, 则(N+1)/2计数时OUT保持高电平。而(N—1)/2计数 期间OUT为低电平。 5.方式4:软件触发选通 设置此方式后,输出OUT立即变为高电平,一旦装入 计数值,计数立即开始。当计数结束时,由OUT输出一个 宽度为一个时钟周期的负脉冲。 8253/54的3个计数器是分别编程的,中央处理器通过写入控制命令字对8253/54进行编程,将控制字送入控制寄存器,设定8253/54的工作方式。8253/54控制寄存器中的控制字节格式如下: D0:选择计数器格式 0:二进制计数 1:BCD码格式 D1、D2、D3:选择工作方式 000:方式0 001:方式1 x10:方式2 x11:方式3 100:方式4 101:方式5 D4、D5:选择读写方式 00:将计数器中的数据锁存于缓冲器 01:选择计数器的低8位读写 10:选择计数器的高8位读写 11:先读写低8位计数值,后读写高8位计数值 D6、D7:选择计数器 00:计数器0 01:计数器1 10:计数器2 11:非法 在PC系列微机系统中,8254/53的3个时钟输入端 (CLK0、CLK1、CLK2)的输入频率均为1.1931816MHz。 IBM公布的软件BIOS中有专门对8253初始化的程序 。 下面是计数器0的初始化程序: 计数器1专门用做动态随机存储器刷新的定时控制, 下面是计数器1的初始化程序: MOV AL ;选择计数器1,只写低字节,方 式2,二进制 OUT 43H,AL ;写入控制器 MOV AL,18 ;将低字节计数值18写入 OUT 41H,AL ;计数器1 门控GATE1接+5V,输出0UT1通过D型触发器产生存 储器刷新请求信号DRQ0,DRQ0是DMA控制器通道0的请 求信号。刷新分频数设为18,因此,在OUT1输出周期 为18/1.1931816 MHz(即约15μs)的脉冲序列。 计数器2产生扬声器频率信号,控制扬声器发声。 下面是计数器2的初始化程序: MOV AL ;选择计数器2,写双字节, 方式3,二进制数
文档评论(0)