第八章 可编程定时器/计数器8254.ppt

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

第八章 可编程定时器/计数器8254 定时方法 l???????? 微机系统中经常要用到定时信号。比如动态存储器的刷新定时、系统日时钟的计时以及发声系统的声源等 l???????? 实现方法: n???????? 软件定时:由延时子程序实现。缺点增加了CPU的时间开销,降低了CPU的效率。 n???????? 硬件定时:由定时器/计数器实现。低档微机是8253/8254;高档微机由多功能芯片实现。 8254具有的基本功能 l(1)有3个独立的16位计数通道; (2)每个计数器可按二进制或十进制(BCD)计数; (3)每个计数器可编程工作在6种不同工作方式; (4)每个计数器允许的最高计数频率为10MNZ(8253为2MHZ); (5)有读回命令(8253没有),可以读出当前计数单元的内容和状态寄存器内容; 8254的内部结构 数据总线缓冲器 三态、双向8位寄存器,用于与系统总线D7~D0相连。完成: l???????? CPU向8254写入工作方式命令字 l???????? CPU向某一计数器写入初值; l???????? CPU从某一计数器读取当前的计数值。 读/写逻辑 8254内部控制电路,接受来自CPU的读写控制信号,决定3个计数器和控制寄存器中哪个进行工作,并控制内部总线上数据传送的方向。 l???????? 当CS=0,,选通8254时, l???????? A1,A0——地址输入线,用来选择3个计数器和控制寄存器中的一个。 l???????? RD——读信号,低电平有效。CPU通过此信号读取8254某计数器的计数值。 l???????? WR——写信号,低电平有效。CPU通过此信号向8254送控制字或计数值。 当CS=1时没有选通。 数据总线缓冲器与系统总线脱开。 控制寄存器 由CPU写入控制字,以决定计数器的工作方式及设置读出命令。 特点:只能写,不能读。 计数器 有三个独立的计数器,每个计数器的结构完全相同。 GATEi——门控信号输入端 CLKi——计数脉冲输入端 OUTi——信号输出端 8254端口地址 当CS=0时,A1 A0组合(00~11),确定选择0#、1#、2#计数器及控制寄存器 A1A0=00,选中0# 计数器 A1A0=01,选中1# 计数器 A1A0=10,选中2# 计数器 A1A0=11,选中控制寄存器 8254的引脚 8254的工作方式 1) 方式0(计数结束产生中断)(P172) 2)方式1(可编程单稳) 3)方式2(频率发生器) 4)方式3(方波发生器) 5)方式4(软件触发选通) 6)方式5(硬件触发选通) 6种工作方式的主要区别: (1)?输出波形不同 (2)?启动计数器的触发方式不同 (3)?计数过程中门控信号GATE对计数操作的影响不同 (4)?有的工作方式具备“初值自动重装”功能 方式0:计数结束中断 工作方式波形图 方式1:可编程单稳脉冲 工作方式波形图 方式2:频率发生器 工作方式波形图 方式3:方波发生器 工作方式波形图(计数值为偶数时) 方式4:软件触发的单脉冲发生器 方式5:硬件触发的单脉冲发生器 GATE功能表 8254控制字格式 8254读出控制字格式 8254状态字格式 8254初始化编程步骤 第一步:向控制寄存器写入控制字,确定使用的计数器及工作方式。 第二步:向使用的计数器写入计数初值。 8254初始化编程举例 设8254端口地址为40H~43H,要求2#计数器工作在方式1,按BCD码计数计数初值为4000,试写出初始化程序段。 MOV AL,0A3H OUT 43H,AL MOV AL,40H OUT 42H,AL 思考:将8254端口地址改为1240H~1243H,要求2#计数器工作在方式1,二进制计数,计数初值为4321H,试写出初始化程序段。 读取当前计数值 用输入指令读取。因计数器为16位,所以分两次读。有3种方式:?? 1)利用GATE=0,两次读计数器端口,先低8位,后高8位。 2)向8254控制寄存器写入D7D6=计数器,D5D4=00锁存计数值,再两次读对应端口,依次读出计数值的低8位和高8位。 l?3)向控制寄存器写入读出命令 n???????? 若读出命令仅锁存状态信息,则对计数器端口进行一次读,可读出状态信息。 n???????? 若读出命令仅锁存当前计数值,则对端口读2次,依次读出计数值的低8位和高8位。 n???????? 若同时锁存计数值和状态信息,则读3次,第一次

文档评论(0)

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

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

1亿VIP精品文档

相关文档