Tengo este programa, en el cual sale una salida sinosoidal.
Para el 8253 o 8254
TIPO EQU 0FH
BASE EQU 220H
CONT1 EQU BASE+1
CONT2 EQU BASE+2
PAL_CONT EQU BASE+3
ADCLB EQU BASE+4
ADCHB EQU BASE+5
DAC2LB EQU BASE+6
DAC2HB EQU BASE+7
FINT EQU BASE+8
RANGO EQU BASE+9
CANAL EQU BASE+10
MODO EQU BASE+11
REG_MASC EQU 21H
OWC2 EQU 20H
datos segment
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS
PRINCIPAL PROC FAR
MOV AX,DATOS
MOV DS,AX
;INICIALIZAR CONTADOR
MOV DX,RANGO ;
MOV AL,04H ;
OUT DX,AL ;SELECCIONAR RANGO
MOV DX,CANAL ;
MOV AL,13H ;
OUT DX,AL ;SELECCIONAR CANAL
MOV DX,REG_MASC ;
IN AL,DX ;
OR AL,80H ;
OUT DX,AL ;ENMASCARAR IRQ7
MOV CX,SEG RUTINA ;
MOV DX,OFFSET RUTINA ;
SUB AX,AX ;
MOV ES,AX ;
MOV SI,TIPO*4 ;
CLI ;
MOV ES:[SI],DX ;
MOV ES:[SI+2],CX ;
STI ;INSTALACION RUTINA TRATAMIENTO
MOV AH,0FFH
MOV CX,0FFFFH
MOV DX,PAL_CONT ;
MOV AL,74H ;
OUT DX,AL ;
MOV DX,CONT1 ;
MOV AL,4 ;
OUT DX,AL ;
MOV AL,0 ;
OUT DX,AL ;PROGRAMA DE CONTADOR 1
MOV DX,PAL_CONT ;
MOV AL,0B4H ;
OUT DX,AL ;
MOV DX,CONT2 ;
MOV AL,32H ;
OUT DX,AL ;
MOV AL,01H ;
OUT DX,AL ;PROGRAMA DE CONTADOR 2
MOV DX,REG_MASC ;
IN AL,DX ;
AND AL,7FH ;
OUT DX,AL ;DESENMASCARAR IRQ7
MOV DX,MODO ;
MOV AL,6 ;
OUT DX,AL ;MODOINTERRUPCION
MOV DX,OWC2 ;
MOV AL,20H ;
OUT DX,AL ;EOI NO ESPECIFICO
MOV DX,FINT ;
MOV AL,0 ;
OUT DX,AL ;
;BORRAR FLAG INTERRUPCION
BUC: CMP CX,0 ;
JNE BUC ;COMPARACIàN
MOV CX,0FFFFh
DEC AH
JNE BUC
MOV DX,MODO ;
MOV AL,0 ;
OUT DX,AL ;DESACTIVAR MODO
MOV AX,4C00H
INT 21H
PRINCIPAL ENDP
RUTINA PROC NEAR
MOV DX,ADCLB ;
IN AL,DX ;
MOV BL,AL ;LEER ADCLB
MOV DX,ADCHB ;
IN AL,DX ;
MOV BH,AL ;LEER ADCHB -
MOV DX,DAC2LB ;
MOV AL,BL ;
OUT DX,AL ;ESCRIBIR DAC2LB
MOV DX,DAC2HB ;
MOV AL,BH ;
OUT DX,AL ;ESCRIBIR DAC2HB
MOV DX,FINT
MOV AL,0
OUT DX,AL
MOV DX,OWC2 ;
MOV AL,20H ;
OUT DX,AL ;EOI NO ESPECIFICO
DEC CX
IRET
RUTINA ENDP
CODIGO ENDS
END PRINCIPAL
Y necesito saber como hacer salir una senyal quadrada en un rango de tensiones de +-4v.
¿Alguien puede ayudarme?