8253练习题.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8253练习题.ppt

8253的编程 编程原则: ① 设置初值前必须先写控制字 ② 初值设置要符合控制字中的格式规定 编程命令有两类: ① 读出命令 ② 写入命令 设置控制字命令 设置初始值命令 锁存命令 1.写入方式控制字 2.写入计数初值 写入初值原则 若控制字规定只读写低8位,则自动写入低8位,高8位填0; 若规定只读写高8位,则自动写入高8位,低8位填0; 若规定写16位,则先写低8位,再写高8位。 由于每一个计数器都是先减1,再判断是否为0,所以写入初值0,实际上表示最大数。 初值的计算( 请结合后面的例子来理解 ) 方式2或者方式3,计数常数就是分频系数,分频系数=?i/?o(?i:输入CLK频率;?o:OUT端输出频率)。 作为定时器工作时,CLK通常来自系统内部的时钟,计数常数就是定时系数,定时系数=T/tCLK=T×?CLK(T为定时时间,?CLK为输入的CLK频率)。 作为外部计数使用时,计数脉冲通常来自系统外部,计数常数就是要记录的外部事件的脉冲个数。 初始化编程的步骤为: (1) 写入控制字,规定 计数器的工作方式。 (2) 写入计数值。 ① 若规定只写低8位,则写入的为计数值的低8位,高8位自动置0; ② 若规定只写高8位,则写入的为计数值的高8位,低8位自动置0; ③ 若是16位计数值,则分两次写入,先写入低8位,再写入高8位。 例如: 若要用计数器0,工作在方式1,按二—十进制计数,计数值为5080H。则初始化编程的步骤为: (1) 确定控制字: (2) 计数值的低8位为80H。 (3) 计数值的高8位为50H。 若端口地址位为F8H~FBH,则初始化程序为: MOV AL,33H OUT 0FBH,AL MOV AL,80H OUT 0F8H,AL MOV AL,50H OUT 0F8H,AL8253 任一计数器的计数值,CPU可用输入指令读取。CPU读到的是执行输入指令瞬间计数器的现行值。但8253的计数器是16位的,所以要分两次读至CPU,因此,若不设法锁存,则在输入过程中,计数值可能已经变化了。要锁存有两种办法: (1) 利用GATE信号使计数过程暂停。 (2) 向8253输送一个控制字,令8253计数器中的锁存器锁存。8253的每一个计数器都有一个输出锁存器(16位),平时,它的值随通道计数器的值变化,当向通道写入锁存的控制字时,它把计数器的现行值锁存(计数器中继续计数)。于是CPU读取的就是锁存器中的值。 当对计数器重新编程,或CPU读取了计数值后,自动解除锁存状态,它的值又随计数器变化。 若要读取通道1的16位计数值,其程序为: MOV AL,40H;计数器1的锁存命令 OUT 0FBH,AL;写入至控制字寄存器 IN AL,0F9H;读低8位 MOV CL,AL;存于CL中 IN AL,0F9H;读高8位 MOV CH,AL;存于CH中 计数值和状态的读回 8253的计数值的读回 在方式控制字格式中,先用D5D4=00,锁存该计数器的值,用来进行读取,如果是16位则分两次读取,先读取低8位,后读取高八位。 (例7.2) 注意:读回计数值时,和控制字的D3D2D1D0位 无关,所以这几位置0或1都可以. 例7.1 用8253的计数器0,工作在方式1下,按十进制计数,初值为3040;若该8253的端口地址为388~38BH,请写出初始化程序段。 例7.1 用8253的计数器0,工作在方式1下,按十进制计数,初值为3040;若该8253的端口地址为388~38BH,请写出初始化程序段。 MOV DX, 38BH MOV AL, 33H OUT DX, AL MOV AL, 40H ;低八位 MOV DX,388H OUT DX,AL MOV AL,30H ;高八位 OUT DX,AL 注意:8253知道一开始输入的为低8位,接下来输入的为高八 位 例7.2 在8253中,读取计数器1的16位计数值,存入CX中,设地址同例7.1,请写出程序段。 例7.2 在8253中,读取计数器1的16位计数值,存入CX中,设地址同例7.1,请写出程序段。 MOV DX, 38BH MOV AL, 40H OUT DX, AL MOV DX, 389H IN AL, DX MOV CL, AL IN AL, DX MOV CH, AL 练习1:若用8253的计数器1,工作在方式0,按8 位二进制计数,初值为128,试编写初始化程序

文档评论(0)

gshbzl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档