- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 8253的计数初值编程 设8253地址为40H ~ 43H,计数器 0工作于方式 0,初值为4,二进制计数 控制字: 编程MOV AL,10HOUT 43H,AL ;写计数器 0 的控制字MOV AL,4OUT 40H,AL ;写计数器 0 的初值 0 0 0 1 0 0 0 0 10H * 8253的计数初值编程 设8253地址为40H ~ 43H,计数器 1工作于方式 3,初值为4020H,十进制计数 控制字: 编程MOV AL,77HOUT 43H,AL ;写计数器 1 的控制字MOV AL,20HOUT 41H,AL ;写计数器 1 的低 8 位初值MOV AL,40HOUT 41H,AL ;写计数器 1 的高 8 位初值 0 1 1 1 0 1 1 1 77H * 8253的计数初值编程 设8253地址为40H ~ 43H,计数器 2工作于方式 3,初值为4000H,十进制计数 控制字: 编程MOV AL,0A7HOUT 43H,AL ;写计数器 2 的控制字MOV AL,40HOUT 42H,AL ;仅写计数器 2 的高 8 位初值;低8位自动清0 1 0 1 0 0 1 1 1 A7H * 8253在IBM PC系列机上的应用 A0 A1 — — — A0 — A1 — D0~D7 D0~D7 OUT1 OUT2 OUT0 GATE0 GATE1 GATE2 CLK0 CLK1 CLK2 D Q CLK +5V 接至DMA控制器 接至扬声器驱动器 PB0 PB1 IRQ0 DRQ08253 +5V 1.19318MHz DACK0 BRD IOR IOW RD WR CS T/CCS * 计数器0:定时中断 计数器0:方式3,计数值:65536,输出频率为1.19318MHz÷65536=18.206Hz的方波 门控为常启状态,这个方波信号不断产生 OUT0端接8259A的IRQ0,用作中断请求信号 每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断 DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能 * mov al,36h ;计数器0为方式3,采用二进制计数, ;先低后高写入计数值 out 43h,al ;写入方式控制字 mov al,0 ;计数值为0 out 40h,al ;写入低字节计数值 out 40h,al ;写入高字节计数值 * 计数器1:定时刷新 需要重复不断提出刷新请求 门控总为高,选择方式2或3 2ms内刷新128次,即15.6?s刷新一次 计数初值为18 * mov al,54h ;计数器1为方式2,采用二进制计数,只写低8位计数值 out 43h,al ;写入方式控制字 mov al,18 ;计数初值为18 out 41h,al ;写入计数值 * (2) 扬声器控制 计数器2的输出控制扬声器的发声音调 计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声 扬声器还受控于并行接口(8255芯片) 必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音 * 8253初始化方法: 控制字 计数初值: 已知:CLK 的频率fc与定时的时间t.计数初值: n= fc ? t 例1: fc=1MHZ,最大计数初值:65536一个定时器最大定时时间:N/fc=65536/ 106 =0.065536s 8253应用举例 * *扩展定时/计数范围当定时长度不够时,可把2个或3个计数通道串联起来使用,甚至可把多个8253串联起来使用。如下例中将计数器0和1串联起来达到5秒的定时。* 例2:设定时器0、定时器1工作于方式2,外部提供一个时钟,频率f=2MHZ。要求定时器1每5ms产生一个脉冲,定时器0每5s产生一个脉冲。 1) 一个定时器的最大定时时间:65536/(2*106)=0.032768 s=32.768ms 2) 将定时器1的CLK1接2MHZ时钟,计数初值:3) 将定时器1的OUT1端接到定时器0的CLK0端,定时器0的计数初值: * * *如何读出当前计数值 第1种方法——在计数过程中读计数值 先锁存当前计数值,再用两条输入指令将16位计数值读出。 第2种方法——停止计数器再读 用GATE信号使计数器停止,再规定RL1和RL0的读写格式,然后读出。 * 8253读取计数值编程举例 要锁存,必须再次设置控制字。 MOV AL OUT 43H,AL IN AL,42H ;先低字节 MO
文档评论(0)