021定时器254.pptVIP

  • 1
  • 0
  • 约2.47千字
  • 约 14页
  • 2018-10-13 发布于江苏
  • 举报
021定时器254

通道2 8254定时/计数器 8254是可编程的定时/计数器,兼容8253,有3个可独立编程的16位定时/计数器。 数据总线缓冲器 读/写 逻辑 控制字寄存器 通道0 通道1 通道2 D7~D0 RD WR A0 A1 CS CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 内部总线 8254的编程 通过写控制字可确定每个通道的工作方式。 方式0:计数结束输出正跃变信号 方式1:单脉冲发生器 方式2:分频器 方式3:方波发生器(分频器方式) 方式4:软件触发的单脉冲发生器 方式5:硬件触发的单脉冲发生器 控制字寄存器(0x43) SC1 SC0 RL1 RL0 M2 M1 M0 BCD 通道选择 读写方式选择 工作方式选择 数制选择 SC1 SC0 选通道,表明对那个通道进行操作。 0 0 通道 0 0 1 通道 1 1 0 通道 2 1 1 无效 D7 D6 D5 D4 D3 D2 D1 D0 读写方式 RL1 RL0 确定读写计数值的方法和顺序 0 0 锁定当前计数值,供CPU读 0 1 只读/写低8位 1 0 只读/写高8位 1 1 先读/写低8位,再读/写高8位 确定工作方式 M2M1M0 确定通道的工作方式 0 0 0 方式0 0 0 1 方式1 X 1 0 方式2 X 1 1 方式3 1 0 0 方式4 1 0 1 方式5 BCD=1:BCD码计数 BCD=0:二进制计数 0~9999 0~65535 8254在PC机中的应用 8254有两条地址线,占4个连续的I/O端口地址。 通道 通道0 通道1 通道2 控制字寄存器 I/O地址 0x40 0x41 0x42 0x43 通道0用于电子钟定时基准,OUT0接到8259A的IR0作为中断源,中断类型号08H.。 通道1用于动态RAM刷新。 通道2产生音频信号,供喇叭发声。 outportb(0x43,0xb6); 通道0的工作方式 通道0初始化为方式3 —方波频率发生器,OUT0端产生方波,方波的频率等于CLK0端输入脉冲频率除以计数初值。 T CLK0输入脉冲频率为 1.193MHz(1193182 Hz) 周期为 1/1.193MHz≈838ns 通道0 作为计数器,每838ns计数值减1,减到0时又自动恢复计数初值。这时OUT0输出的方波完成一个周期,方波的上升沿触发一次中断。 计数初值 方波的频率f2等于输入脉冲频率f1除以计数初值N f2=f1/N 方波的周期T2 =1/f2等于输入脉冲周期T1=1/f1乘以计数初值N T2=T1× N 计数初值N等于方波的周期T2(单位为秒)除以输入脉冲周期T1 N=T2/T1=T2/838ns 更精确的办法:N=T2*1193182; 通道0的初始化 MOV AL,36H OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL 控制字36H D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 1 0 1 1 0 选0通道 先写低8位 再写高8位 方式3 二进制计数 0000000000000000 -) 1 1111111111111111 0-1=65535! 0经65536次减1后又减到0 方波完成一个周期,0相当最大的计数初值65536。 通道0的中断周期 通道0的计数初值相当于65536 方波的频率 1.193MHz/65536≈18.2Hz 方波的周期 838ns*65536?55ms 通道0每55ms申请一次中断,每秒18.2次 通道0的中断服务子程序TIMER-INT固化在BIOS中,有三个功能: 1.进行年、月、日、时、分、秒的计时。 2.软盘I/O时,确定软驱电机停止转动的时间。 3.发出一个1CH类软中断,可以调用一个用户程序。 思考题 1.若希望10ms中断一次,计数初值是多少? 2.若CLK0输入脉冲频率为2MHz,采用二进制计数和BCD码计数时最大的中断周期是多少? 3.若CLK0输入脉冲频率为4MHz,希望中断周期为10ms,写出初始化程序。 时钟中断程序举例 利用8254的通道0作为实时时钟定时,每10ms中断一次。编写第8类中断的中断服务程序每

文档评论(0)

1亿VIP精品文档

相关文档