微机原理与接口技术(楼顺天第二版)第九章习题测验解答
微机原理与接口技术(楼顺天第二版)习题解答第9章 定时/计数器8253应用设计9.1答:假定已经约定采用A2,A1作为8253的内部地址线,而且计数器0的地址为00,所以在题中所给的地址中只有51H,59H的A2和A1同时为0,即:A2A1=00。9.2 答:9.3 答: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发锁存命令 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 9.4 答:本题使用计数器0和计数器1级联,并且计数器0的输出OUT0作为计数器1的时钟输入CLK1。程序如下:MOVDX,COUNTD;写计数器0方式控制字MOVAL,00110110BOUTDX,ALMOVDX,COUNTAMOVAX,10000 ;写计数器0时常数,分频得到100Hz时钟频率OUTDX,ALXCHGAL,AHOUTDX,ALMOVDX,COUNTD;写计数器1方式控制字MOVAL,01110000BOUTDX,ALMOVDX,COUNTBMOVAX,999;分频得到0.1Hz时钟频率。(在方式0下,时常数为N时, ;OUT输出的低电平宽度为N+1).OUTDX,ALXCHGAL,AHOUTDX,ALL1: ;延时MOVDX,COUNTD; 当前CE的内容锁存到OLMOVAL,01000000BOUTDX,ALMOVDX,COUNTBINAL,DXMOVAH,ALINAL,DXXCHGAL,AHCMPAX,999JNAL1;延时结束,则继续执行,否则,跳到L1,继续延时.9.5 答:8253的方式2与方式3均为一次计数完成后自动装入计数初值再计数的计数方式。差别是方式2设定计数N时N-1时钟周期为高电平,1时钟周期为低电平;方式3设定计数N时,若N为偶数,则N/2周期为高电平,N/2周期为低电平,若N为奇数,则(N+1)/2周期为高电平,(N-1)/2周期为低电平。9.6 答:CLK为计数时钟,每个时钟周期计数一次,GATE为门控信号,在方式0、方式2、方式3、方式4中,GATE信号为高电平时正常计数,GATE信号为地点平时暂停计数;在方式1和方式5中由GATE信号触发计数。9.7 答:方式0与方式4方式0, OUT端计数过程中为低,计数值减为0时,输出变高方式4, OUT端计数过程中为高,计数值减为0时输出宽度为1个CLK的负脉冲方式1,与方式5方式1, OUT端输出宽度为n个CLK的低电平,计数值减为0时,输出为高方式5, OUT端计数过程中为高,计数值减为0时输出宽度为1个CLK的负脉冲9.8 答:OUT0输出为20微妙方波,可用方式三直接产生;OUT1输出周期为200微秒,其中每周期为负的时间是180微秒的信号,可用OUT0输出的20微秒方波作为CLK1计数时钟,使计数器1工作在方式2,计数初值为200微妙/20微妙=10。硬件上要在OUT1输出端接一反相器就可实现题目要求产生的在OUT1输出周期为200微秒,其中每周期为负的时间是180微秒的信号。8253的初始化程序如下:MOV DX,287H ;写计数器0控制方式字MOV AL,00010110BOUT DX,ALMOV DX,284H ;写计数器0时常数MOV AL,20OUT DX,ALMOV DX,287H ;写计数器1控制方式字MOV AL,01010100BOUT DX,ALMOV DX,285H ;写计数器2时常数MOV AL,10OUT DX,AL9.9 答:39.10 答:3,5000 9.11 答:0,10000。9.12 答:D9.13 答:B 9.14 答:B 9.15 答:B9.16 答:B,F9.17 答:D9.18 答:根据程序,使用计数器0,工作在方式2,计数初值为0FFFFH,所以中断请求周期为65535/2000000s=32.7675ms。9.19 答:(1)选用D0D0HD0DFH中的偶地址DODO,DOD2,DOD4,DOD6为基本地址作为8254的端口地址,设8086工作在最小方式下。8254端口地址译码电路如下图: 计数器0输入端加2MHz的时钟信号,GATE0加+5V电压,输出OUT0信号为周期为10µs的对称方波。初始化代码:MOV DX,0D0D6H ;写计数器0工作方式MOV AL,00010110BOUT DX,ALMOV DX,0D0D0H ;写计数器0时常数MOV AL,20OUT DX,ALCLK0加2MHz的始终信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK1作时钟信号,OUT1输出为每1s产生一个负脉冲。初始代码:MOV DX,0D0D6H ;写计数器0的工作方式MOV AL,00010110BOUT DX,ALMOV DX,0D0D0H ;写计数器0的时常数MOV AL,100OUT DX,ALMOV DX,0D0D6H ;写计数器1的工作方式MOV AL,01110100B OUT DX,ALMOV DX,0D0D2H ;写计数器1的时常数MOV AX,20000OUT DX,ALXCHG AL,AHOUT DX,ALCLK0加2MHz的始终信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK2做时钟信号,OUT2输出为10s后产生一个负脉冲。初始代码:MOV DX,0D0D6H ;写计数器0的工作方式MOV AL,00110110BOUT DX,ALMOV DX,0D0D0H ;写计数器0的时常数MOV AX,1000OUT DX,ALXCHG AL,AHOUT DX,ALMOV DX,0D0D6H ;写计数器2的工作方式MOV AL,10111000BOUT DX,ALMOV DX,0D0D4H ;写计数器2的时常数MOV AX,20000OUT DX,ALXCHG AL,AHOUT DX,AL(2)选用地址D0D0,DOD2,DOD4,DOD6为8253的端口地址,D0D8为GATE端口地址,该端口采用74LS373,8253用方式4,在OUT输出端加非门实现脉冲功能。接口电路如图:初始代码为:MOV DX,0D0D8H ;GATE初始化MOV AL,0OUT DX,ALMOV DX,0D0D6H ;写计数器0工作方式MOV AL,00011000BOUT DX,ALMOV DX,0D0D0H ;写计数器0时常数MOV AL,40OUT DX,ALMOV DX,0D0D8HMOV AL,1OUT DX,AL ;使GATE变高有效9.20 答:一个计数器的最长定时时间应该是置入时常数0时,此时定时时间为:65536/0.5*106s=131ms采用方式0即:计数达到终值时中断来10分钟产生一次定时中断,此时时常数CR为:10*60*0.5*106=3*109.由于一个计数器最多分频65536,所以至少得使用2个计数器。我们采用计数器0和计数器1.计数器0的时常数CR0为60000,计数器1的时常数CR1为50000.连接方式为:把0.5MHz的时钟频率接到计数器0的CLK0,然后把计数器0的OUT0接到计数器1的CLK1。这样计数器1的OUT1端输出的就是10分钟产生一次的定时中断。9.21答:(1)MOVDX,83HMOVAL,00010100BOUTDX,ALMOVDX,80HMOVAL,100OUTDX,AL(2)将计数器1的输出OUT1信号作为计数器2的时钟输入CLK2,计数器1的时钟输入为系统提供1MHZ的信号。MOVDX,83HMOVAL,01110100BOUTDX,ALMOVDX,81HMOVAX,1000OUTDX,ALXCHGAL,AHMOVDX,ALMOVDX,83HMOVAL,10010110BOUTDX,ALMOVDX,82HMOVAL,100OUTDX,AL9.22 答:用两个计数器,计数器0的CLK接待测信号,GATE接半周期为10s的高电平信号,OUT接8259,同时取反接计数器1的GATE端。计数器1的CLK接系统时钟,半周期为T0。在这样的逻辑电路下,计数器0的功能是记录待测信号的脉冲数N0,计数器1的功能是记录在相同时间里系统时钟信号的脉冲数N1。根据T=N1*T0/N0可计算出待测信号的周期。S(t)是待测信号,S(t)为给定的周期大于10s的高电平信号。端口声明:COUNTA为计数器0的地址,COUNTB为计数器2的地址,COUNTD为控制器地址,COUNT为373地址程序如下:MOV DX,COUNTD ;计数器1初始化MOV AL,01110000BOUT DX,ALMOV DX,COUNTBOUT DX,ALMOV DX,COUNTBMOV AL,OOUT DX,ALMOV DX,COUNTD ;计数器0初始化MOV AL,00010000BOUT DX,ALMOV DX,COUNTAMOV AL,0OUT DX,ALOUT DX,ALSTI读两计数器的计数,并进行计算的中断服务子程序:PUSH AXPUSH BXPUSH CXPUSH DXMOV DX,COUNTDMOV AL,00000000BOUT DX,ALMOV DX,COUNTAIN AL,DXXCHG AL,AHIN AL,DXXCHG AL,AHNEG AXINC AXMOV BX,AXMOV DX,COUNTDMOV AL,00010000BOUT DX,ALMOV DX,COUNTBIN AL,DXXCHG AL,AHIN AL,DXXCHG AL,AHNEG AXINC AXMOV CX,T0MUL CXDIV BXMOV S