• Sábado 9 de Noviembre de 2024, 03:34

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Blade89

Páginas: [1]
1
ASM (Ensamblador) / Problema Con Un Programa .asm
« en: Miércoles 27 de Febrero de 2008, 11:16 »
Hola, soy nuevo en esto de la programación y tengo una duda:

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 con un rango de tensiones de +-4v.

¿Alguien puede ayudarme?
¿Como puedo sacar el rango de +-4v?
¿Que instrucciones tengo qeu cambiar?
¿Y para la senyal cuadrada?

Gracias.

Páginas: [1]