Hola
Tengo un problemita con el modulo A/D del dsp30f4013.
Resulta que necesito muestrear 2 senales de entrada analogas y compararlas.
Inicialmente lo hice para una sola entrada en rb0 y la salidas son rf0 y rf1
.INCLUDE "P30F4013.INC"
.GLOBAL __reset
__reset: MOV #0X0800,W15
MOV #0X08FF,W0
MOV W0,SPLIM
GOTO INICIO
DELAY: MOV #50,W2
DOS: MOV #5000,W1
UNO: DEC W1,W1
BRA NZ,UNO
DEC W2,W2
BRA NZ,DOS
RETURN
DELAY1: MOV #50,W2
DOS1: MOV #500,W1
UNO1: DEC W1,W1
BRA NZ,UNO1
DEC W2,W2
BRA NZ,DOS1
RETURN
INICIO: MOV #0X0000,W0
MOV W0,ADPCFG
MOV #0XFFFF,W5
MOV W5,TRISB
CLR TRISF
BSET PORTF,#03
MOV W0,W8
MOV W0,W7
;----------------------------------------
;----------------------------------------
INICIO1: BSET PORTF,#00
NOP
BCLR PORTF,#01
CALL DELAY
BCLR PORTF,#00
NOP
BSET PORTF,#01
CALL DELAY
CLR PORTF
;----------------------------------------
;----------------------------------------
MOV #0B0000000000000000,W5
MOV W5,ADCON1
MOV #0B0000010000000000,W5
MOV W5,ADCON2
MOV #0B0001000010100000,W5
MOV W5,ADCON3
MOV #0B0000000000010000,W5
MOV W5,ADCHS
MOV #0B0000000000000001,W5
MOV W5,ADCSSL
;se coloca en 0 samp
LOOP1: BSET ADCON1,#SAMP
CALL DELAY1
BSET ADCON1,#ADON
NOP
BCLR ADCON1,#SAMP
CALL DELAY1
;LOOP2: BTSS ADCON1,#DONE
; GOTO LOOP2
LOOP: MOV ADCBUF0,W5
BTSC ADCSSL,#00
GOTO ENTRADA1
GOTO ENTRADA2
;=================================================================
; MOV #0B000100100100,W7
; CP W5,W7
; BRA N,ENCENDER
;APAGAR: BSET PORTF,#00
; NOP
; BCLR PORTF,#01
; GOTO LOOP1
;ENCENDER: BSET PORTF,#01
; NOP
; BCLR PORTF,#00
; GOTO LOOP1
;================================================================
CAMBIO: BCLR ADCON1,#ADON
BTG ADCSSL,#00
NOP
BTG ADCSSL,#02
GOTO LOOP1
ENTRADA1: MOV W5,W7
GOTO COMPARAR
ENTRADA2: MOV W5,W8
COMPARAR: CP W8,W7
BRA Z,IGUALES
BRA NN,MAYORQUE
BRA N,MENORQUE
IGUALES: CLR PORTF
GOTO CAMBIO
MAYORQUE: BSET PORTF,#00
NOP
BCLR PORTF,#01
GOTO CAMBIO
MENORQUE: BSET PORTF,#01
NOP
BCLR PORTF,#00
GOTO CAMBIO
.END