- 73 - 第9章 定时/计数器8253应用设计 1. 下列地址哪些能够分配给8253/8254 的计数器0?为什么?(23H、54H、97H、51H、FCH、59H) 解:因为已经约定采用A2,A1 作为8253 的内部地址线,而且计数器0 的地址为00,所以在题中所给的地址中只有51H,59H 的A2 和A1 同时为0,即:A2A1=00. 2. 如果计数器0 设定为方式0,GATE0=1,CLK0=1MHz,时常数为N=1000,请画出OUT0 的波形。如果计数器1 设定为方式1,其它参数与计数器0 相同,画出OUT1 的波形。 3. 编程实现:将8253 计数器0 设置成方式4,并置时常数10000,然后处于等待状态,直到CE 的内容≤1000 后再向下执行。 解: MOV DX,COUNTD ;写入计数器0 的方式控制字 MOV AL,00111000B OUT DX,AL MOV DX,COUNTA ;设置计数器0 的常数 MOV AX,10000 OUT DX,AL XCHG AL,AH OUT DX,AL L1: MOV DX,COUNTD ;写入计数器0 的方式控制字 - 74 - MOV AL,0H OUT DX,AL MOV DX,COUNTA ;读入CE IN AL,DX MOV AH,AL IN AL,DX XCHG AL,AH CMP AX,1000 ;判别CE 当前大小 JA L1 4. 利用8253 可以实现确定时间的延迟,编程实现延时10 秒的程序段(设可以使用的基准时钟为1MHz)。 解:本题使用计数器 0 和计数器 1,并且计数器 0 的输出 OUT0 作为计数器 1 的时钟输入CLK1. 程序如下: MOV DX,COUNTD ;写计数器 0 方式控制字 MOV AL,00110100B OUT DX,AL MOV DX,COUNTA MOV AX,10000 ;写计数器 0 时常数,分频得到 100Hz时钟频率 OUT DX,AL XCHG AL,AH OUT DX,AL MOV DX,COUNTD ;写计数器 1 方式控制字 MOV AL,01110000B OUT DX,AL MOV DX,COUNTB MOV AX,999 ;分频得到 0.1Hz时钟频率。(在方式 0 下,时常数为N 时, ;OUT 输出的低电平宽度为N+1). OUT DX,AL - 75 - XCHG AL,AH OUT DX,AL L1: ;延时 MOV DX,COUNTD ; 当前CE 的内容锁存到OL MOV AL,01000000B OUT DX,AL MOV DX,COUNTB IN AL,DX MOV AH,AL IN AL,DX XCHG AL,AH CMP AX,999 JNA L1 ;延时结束,则继续执行,否则,跳到L1,继续延时 …. 5. 比较8254方式0与方式4、方式1与方式5的区别? 方式0与方式4 方式0 OUT端计数过程中为低,计数值减为 0时,输出变高 方式4 OUT端计数过程中为高,计数值减为 0时输出宽度为 1个 CLK的负脉冲 方式1与方式5 方...