OUT DX,AL MOV DX,80H MOV AL,100 OUT DX,AL (2)
将计数器1的输出OUT1信号作为计数器2的时钟输入CLK2,计数器1的时钟输入为系统提供1MHZ的信号 MOV DX,83H
MOV AL,01110100B OUT DX,AL MOV DX,81H MOV AX,1000 OUT DX,AL XCHG AL,AH MOV DX,AL MOV DX,83H
MOV AL,10010110B OUT DX,AL MOV DX,82H MOV AL,100 OUT DX,AL
图9.26 织布机控制系统
12. 在IBM PC系统中根据下列不同条件设计接口逻辑,利用8253完成对外部脉冲信号重复
频率的测量。
(1) 被测脉冲信号的重复频率在10~1000Hz范围内。 (2) 被测脉冲信号的重复频率在0.5~1.5Hz范围内。 (3) 被测脉冲信号重复频率在10~100Hz范围内。
(4) 被测是间歇脉冲信号,每次有信号时有100个脉冲,重复频率为0.8~1.2MHz,间
歇频率大约每秒15次,要求测有信号时的脉冲重复频率。
解:用两个计数器,计数器0的CLK接待测信号,GATE接半周期为10s的高电平信号,
OUT接8259,同时取反接计数器1的GATE端。计数器1的CLK接系统时钟,半周期为T0。在这样的逻辑电路下,计数器0的功能是记录待测信号的脉冲数N0,计数器1的功能是记录在相同时间里系统时钟信号的脉冲数N1。根据T=N1*T0/N0可计算出待测信号的周期。S(t)是待测信号,S’(t)为给定的周期大于10s的高电平信号。
8259D0~D7RDWRA1A0CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2S(t)S’(t)IR01MHzIntel8253
端口声明:COUNTA为计数器0的地址,COUNTB为计数器2的地址,COUNTD为控制器地址,COUNT为373地址 程序如下:
MOV DX,COUNTD ;计数器1初始化 MOV AL,01110000B OUT DX,AL MOV DX,COUNTB OUT DX,AL MOV DX,COUNTB MOV AL,O OUT DX,AL
MOV DX,COUNTD ;计数器0初始化 MOV AL,00010000B OUT DX,AL MOV DX,COUNTA MOV AL,0
OUT DX,AL OUT DX,AL STI
读两计数器的计数,并进行计算的中断服务子程序: PUSH AX PUSH BX PUSH CX PUSH DX MOV DX,COUNTD MOV AL,00000000B OUT DX,AL MOV DX,COUNTA IN AL,DX XCHG AL,AH IN AL,DX XCHG AL,AH NEG AX INC AX MOV BX,AX MOV DX,COUNTD MOV AL,00010000B OUT DX,AL MOV DX,COUNTB IN AL,DX XCHG AL,AH IN AL,DX XCHG AL,AH NEG AX INC AX MOV CX,T0
MUL CX DIV BX MOV SFR,AX POP DX POP CX POP BX POP AX IRET
SFR中保存结果即为待测信号的周期。
对于(1)题,10*10不小于100,10*1000不大于65535,可以用计数法。 同理(3)也可用此方法。
对于(2)题,可用周期法。逻辑电路图如下:
1MHzS(t)D0~D7RDWRA1A0CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2Intel82538259IR0
程序如下: MOV DX,COUNTD MOV AL,0011 0100B OUT DX,AL MOV DX,COUNTA
MOV AL,0 OUT DX,AL OUT DX,AL STI PUSH AX PUSH BX PUSH DX MOV DX,COUNTD MOV AL,0000 0000B OUT DX,AL MOV DX,COUNTA IN AL,DX XCHG AL,AH IN AL,DX XCHG AL,AH NEG AX INC AX MOV BX,AX MOV DX,000FH MOV AX,4240H DIV BX MOV SFR,AX POP DX POP BX POP AX IRET
(4) 如图设计接口,计数器1用来记录在50个脉冲所用时间,50个信号脉冲最多用1/0.8*50(约为63us)由于计数器1用1MHz CLK,故其计数个数N即为N us,