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,
所以当N>63时,则有低电平间隔计入,须重新计数。当N>63时,则计算得待测频率。
8259D0~D7RDWRA1A0CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2S(t)IR01MHzD0D7G74LS373D0D7OEIntel8253译码程序如下: MOV DX,COUNTD MOV AL,00H OUT DX,AL MOV DX,COUNTD MOV AL,0001 0000B OUT DX,AL MOV DX,COUNTA MOV AL,50 OUT DX,AL MOV DX,COUNTD MOV AL,0111 0000B OUT DX,AL MOV COUNTB

