《微机原理课件1第23次课8253章节》由会员分享,可在线阅读,更多相关《微机原理课件1第23次课8253章节(51页珍藏版)》请在金锄头文库上搜索。
1、课前提问,CPU与外设交换信息的方式有几种?,课前提问,CPU与外设交换信息的方式有几种?,无条件 查询 中断 DMA,第9章可编程定时/计数控制器8253原理及应用,教学重点 8253的引脚和6种工作方式 8253的编程 8253在IBM PC系列机上的应用,定时器和计数器,定时控制在微机系统中极为重要 定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔 计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器,定时功能的实现方法,软件延时利用微处理器执行一个延时程序段实现 不可编程的硬件定时采用
2、分频器、单稳电路或简易定时电路控制定时时间 可编程的硬件定时软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路,4.3 8253/8254定时计数器,3个独立的16位计数器通道 每个计数器有6种工作方式 按二进制或十进制(BCD码)计数,8254是8253的改进型(工作频率增加),4.3.1 8253/8254的内部结构和引脚,计数器结构示意图,计数初值存于预置寄存器; 在计数过程中, 减法计数器的值不断递减, 而预置寄存器中的预置不变。 输出锁存器用于写入锁存命令时, 锁定当前计数值,计数器的3个引脚,CLK时钟输入信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计
3、数值减1 GATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型 OUT计数器输出信号当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号,4.3.2 8253/8254的工作方式,方式0 计数结束中断, 设 定 工 作 方 式, 设 定 计 数 初 值, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,五. 8253-PIT的工作方式,* CW写入,OUT=0; * 写入时常LSB,通道开始计数; * 计数到零,OUT=1;,* 计数器只计数一遍; * OUT是N+1个CLK后变高; * 计数过程中,GATE=0, 计数暂停; * 计数过程中
4、可改变计数值; * 8253无中断控制,可用OUT信号作为中断请求。,1. 方式0,方式1 可编程单稳脉冲, 设 定 工 作 方 式, 设 定 计 数 初 值, 硬 件 启 动, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,方式1(可编程单稳),* 写入控制字OUT=1,写入常数不计数; * GATE启动计数,OUT=0; * 计数到,OUT=1。,*单拍脉冲宽度为N; *由GATE重新启动; *计数中,可重新启动; *计数中,可改变计数值,再次启动有效。,方式2 频率发生器(分频器),方式2(速率发生器),* 写入控制字OUT=1; * 写入常数立即对CLK计数; *
5、 计数到1,OUT=0; * 一个CLK周期后,OUT=1,重新计数。,* 通道连续工作不需重置时常; * 计数过程中,GATE=0,计数暂停,GATE变高后重新计数; * 计数过程中可改变计数值;新的计数值在下一次有效。,方式3 方波发生器,方式3(方波速率发生器),* 与方式2的区别在于:输出为周期是N个CLK脉冲的方波。 * 若计数值为偶数,每个CLK使计数值减2,计到0,OUT改变状态,重装计数值开始新的计数。,*若计数值为奇数,第一个脉冲先减1,以后,每个CLK使计数值减2,计到0 时,OUT改变状态,重装计数值后,第一个脉冲减3,以后,每个CLK使计数值减2,计到0时,OUT改变状
6、态。,*GATE信号控制计数过程; *计数过程中写入新的计数值将在半周期结束时装入计数器。,方式4 软件触发选通信号,方式4(软件触发选通),* 写入控制字OUT=1; * 写入常数立即对CLK计数; * 计数到0,OUT=0; * 一个CLK周期后,OUT=1,计数器停止计数。,* 计数器只计数一遍; * OUT是N+1个CLK后变低; * 计数过程中,GATE=0,计数暂停; * 若在计数过程中,改变计数值,则按新的计数值重新开始计数。,方式5 硬件触发选通信号,方式5(硬件触发选通),* 写入控制字OUT=1; * 写入常数后,由GATE的上升沿启动计数; * 计数到0,OUT=0; *
7、 一个CLK周期后,OUT=1,计数器停止计数。,* 计数器只计数一次; * OUT是N+1个CLK后变低; * 在 计数过程中出现的GATE脉冲,将使 计数器重新开始计数,对输出状态没有影响; * 若在计数过程中改变计数值,只要没有GATE信号触发,不影响计数过程。有新的GATE信号触发则按新的计数值开始计数。,计数值N与输入CLK 和输出OUT的关系,各种工作方式的输出波形,8253几种工作方式的比较,二、启动计数和重复计数的条件 所有工作方式都必须设置计数值才能够开始工作,但不是所有的方式一经设置计数值就马上开始计数,需要有一定的条件才能工作。有些方式一经启动,计数器就永无休止的工作下去
8、,而有些方式只能计数一次。如果要重复计数同样需要某些条件,这些条件如表10-3所示,表 10-3 启动计数和重复计数的条件,8253几种工作方式的比较,三、门控信号的作用 8253在不同的工作方式下,门控信号GATE的作用如 表 10-3所示,表 10-3 门控信号的作用,8253几种工作方式的比较,四、在计数过程中改变计数值 8253的六种工作方式都可以在计数器计数过程中改变计数值。新的计数值什么时候起作用,随工作方式不同而有差异,具体区别如表10-4所示,表 10-4在计数过程中改变计数值,4.3.3 8253/8254的编程,8253加电后的工作方式不确定 8253必须初始化编程,才能正
9、常工作 写入控制字 写入计数初值 读取计数值 8254新增读回命令,1 写入方式控制字,00 计数器0 01 计数器1 10 计数器2 11 非法,00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节 后读写高字节,000 方式0 001 方式1 010 方式2 011 方式3 100 方式4 101 方式5,0 二进制 1 十进制,控制字写入控制字I/O地址(A1A011),8253的控制字格式,2 写入计数值,选择二进制时 计数值范围:0000HFFFFH 0000H是最大值,代表65536 选择十进制(BCD码) 计数值范围:00009999 0000代表最大
10、值10000,计数值写入计数器各自的I/O地址,8253/8254的I/O地址,0 1 0 0 0,0 1 0 0 1,0 1 0 1 0,0 1 0 1 1,0 0 1 0 0,0 0 1 0 1,0 0 1 1 0,功 能,对计数器0设置计数初值,A1,A0,对计数器1设置计数初值,对计数器2设置计数初值,设置控制字,从计数器0读出计数值,从计数器1读出计数值,从计数器2读出计数值,8253的控制字,例【1】选用计数器0计数,计数值为1000,用十进制(BCD)方式计数,用方式3计数,假设系统安排8253计数器0、1、2和控制端口的地址分别为:220H、221H、222H和223H,试对计
11、数器0编程初始化 MOV DX,223H MOV AL,00110111H ;二进制方式计数 OUT DX,AL ;送计数方式控制字 MOV DX,220H MOV AX,1000 ;十进制数1000送给AX OUT DX,AL ;先送低8位 MOV AL,AH OUT DX,AL ;后送高8位,3 读取计数值,对8位数据线,读取16位计数值需分两次 计数在不断进行,应该将当前计数值先行锁存,然后读取: 向控制字I/O地址:给8253写入锁存命令 从计数器I/O地址:读取锁存的计数值,读取计数值,要注意读写格式和计数数制,8254的控制字格式,例:要求计数器0工作于方式3,输出方波的频率为2K
12、Hz,计数脉冲的频率为2.5MHz,采用BCD计数,试写出初始化程序段。,2. 常数计算:TC = 2.5MHz/2KHz=1250,MOV AL,37H OUT 83H,AL MOV AL,50H OUT 80H,AL MOV AL,12H OUT 80H,AL,1. 8253的端口地址为:80H,81H,82H,83H。,4. 初始化程序段:,定时中断,mov al,36h ;计数器0为方式3,采用二进制计数, ;先低后高写入计数值 out 43h,al ;写入方式控制字 mov al,0 ;计数值为0 out 40h,al ;写入低字节计数值 out 40h,al ;写入高字节计数值,8
13、253初始化,计数器0:定时中断,计数器0:方式3,计数值:65536,输出频率为1.19318MHz6553618.206Hz的方波 门控为常启状态,这个方波信号不断产生 OUT0端接8259A的IRQ0,用作中断请求信号 每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断 DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能,计数器1:定时刷新,需要重复不断提出刷新请求,门控总为高,选择方式2或3,2ms内刷新128次,即15.6s刷新一次,时钟CLK频率为1.19318MHz,求计数器1的初始值是多少?,刷新周期:tn=2ms/
14、128= 15.6s 刷新频率:fn=1/tn=1/15.6us 初始值:N=fc/fn= 1.19318M/(1/15.6us) =18.613 取整数18,计数器1:定时刷新,需要重复不断提出刷新请求,门控总为高,选择方式2或3,2ms内刷新128次,即15.6s刷新一次,计数初值为18,定时刷新,mov al,54h ;计数器1为方式2,采用二进制计数,只写低8位计数值 out 43h,al ;写入方式控制字 mov al,18 ;计数初值为18 out 41h,al ;写入计数值,8253初始化,4.3.8 扩充定时计数器的应用,例题4.2 利用扩充定时计数器对外部事件的计数,方式0
15、计数结束中断, 设 定 工 作 方 式, 设 定 计 数 初 值, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,例4.2,初始化程序段,mov dx,203h ;设置方式控制字 mov al,10h out dx,al mov dx,200h ;设置计数初值 mov al,64h ;计数初值为100 out dx,al,例8.2,作业:P326 例9.3 题目修改:通道1产生0.5HZ的方波,通道0的输入频率为4MHZ,第4章 总结(二),1. 掌握8254引脚,尤其是CLK、OUT、GATE引脚的功能 2. 掌握8254的六种工作方式、编程和在IBM PC系列机上的应用,