[/empieza bcf STATUS,5 ;pagina 1
movlw b'10110000'
movwf CANAL
movlw b'11111110'
movwf SENSING
movlw b'00000111' ;de der. a izq. timer1 activado, tipo de reloj externo, reloj externo no sincronizado
movwf T1CON ;oscilador desactivado y prescale a uno
clrf PIE1
movlw b'10111000' ;activacion de las interrupciones
movwf INTCON ;act. interrupcion del timer 0
;act. interrupcion del pb0
;act. interrupcion del cambio de estado de la pb4-pb7
movlw b'0000001' ;reloj para adc fosc=0, canal a convertir 000, modulo adc activado
movwf ADCON0
bsf STATUS,5 ;PAGINA 1
movlw b'0011' ;ra0ra1ra2ra5re1re2=analogicas ra3=vref re0=digitales pero porte esta configurado como salidas
movwf ADCON1
movlw b'10001111'
movwf TRISB
movlw b'000000'
movwf TRISA
movlw b'11000000'
movwf TRISC
movlw b'111'
movwf TRISE
movlw b'00000111'
movwf TRISD
movlw b'10110100'
movwf TXSTA ;y alta velocidad (BRGH=1)
movlw .42 ;Se carga 42 en el registro SPBRG
movwf SPBRG ;con lo cual se trabaja a 31250baudios con 20 mgh de f.osc
bcf STATUS, 5 ;pagina 0
bsf RCSTA, 7 ;habilito rc6/out y rc7/in
goto programa
programa call aum1
clrf CONTROLADOR ;limpia el registro del numero del controlador
call canal_1 ;selecciona el canal AN0
call pote_1
call canal_2 ;selecciona el canal AN1
call pote_2
call canal_3 ;selecciona el canal AN2
call pote_3
call canal_4 ;selecciona el canal AN4
call pote_4
call aum2 ;aumenta uno en los multiplexadores comienza el testeo del siguiente canal
call compara ;aumenta el nº de potenciometro hasta 32 luego pasa a cero
call canal_1 ;selecciona el canal AN0
call pote_5
call canal_2 ;selecciona el canal AN1
call pote_6...................y continua testeando hasta completar 8 canales de los mult por 4 del pic
;------------------------------------------------------------CALLS-------------------------------
compara incf CONTROLADOR
movlw .32
subwf CONTROLADOR
btfsc STATUS,2
clrf CONTROLADOR
retfie
;-----------------------------------
dato bcf STATUS,5
movwf ADCON0
dato1 btfsc ADCON0,2 ;bucle que testea hata que termina la conversion AD
goto dato1
bsf STATUS,5
movf ADRESL,w
bcf STATUS,5
retfie
;-----------------------------------------------------------
pote_1 call dato puuffff como esta solo os pongo 4 son 32 iguales solo que cambia el nº de potenciometro
subwf POTE1
btfsc STATUS,2 ;SI ESTA A UNO EL RESULTADO ERA IGUAL QUE LA ANTERIOR VEZ
call envio
retfie
;--------------------------------
pote_2 call dato
subwf POTE2
btfsc STATUS,2
call envio
retfie
;-------------------------------
pote_3 call dato
subwf POTE3
btfsc STATUS,2
call envio
retfie
;---------------------------------
pote_4 call dato
subwf POTE4
btfsc STATUS,2
call envio
retfie
;---------------------------------
aum1 bcf STATUS,5 como esta hay ocho para cambiar el canal del multiplexador
movlw b'00000000'
movf PORTD
retfie
;---------------------------------
aum2 bcf STATUS,5
movlw b'00000001'
movf PORTD
retfie
;PRIMERO ENVIA EL NUMERO DE CANAL---------------------------------
envio bcf STATUS, 5 ;pagina 0
bcf INTCON,7 ;deshabilita las interrupciones
movf CANAL,w ;señal de timming clock
movwf TXREG ; Movemos lo que queremos transmitir de w a TXREG
goto FIN ;mueve a FIN
FIN bsf STATUS, 5 ;pagina 1
btfss TXSTA, 1 ; Compruebo si el bit TMRT del registro esta
; a '1' o a '0'.
; Si esta a '0' es que esta lleno TMRT y no
; ha terminado de transmitir,
; para ello TRMT tiene que estar a 1, hasta
goto FIN ; entonces esperamos.
;SEGUIDO DEL NUMERO DE CONTROLADOR-------
envio1 bcf STATUS, 5 ;pagina 0
bcf INTCON,7 ;deshabilita las interrupciones
movf CONTROLADOR,w ;señal de timming clock
movwf TXREG ; Movemos lo que queremos transmitir de w a TXREG
FIN1 bsf STATUS, 5 ;pagina 1
btfss TXSTA, 1 ; Compruebo si el bit TMRT del registro esta
; a '1' o a '0'.
; Si esta a '0' es que esta lleno TMRT y no
; ha terminado de transmitir,
; para ello TRMT tiene que estar a 1, hasta
goto FIN1 ; entonces esperamos.
;Y POR ULTIMO EL VALOR DEL CONTROLADOR----------
envio2 bcf ADRESL, 5 ;pagina 0
bcf INTCON,7 ;deshabilita las interrupciones
movf ADRESL,w ;señal de timming clock
movwf TXREG ; Movemos lo que queremos transmitir de w a TXREG
FIN2 bsf STATUS, 5 ;pagina 1
btfss TXSTA, 1 ; Compruebo si el bit TMRT del registro esta
; a '1' o a '0'.
; Si esta a '0' es que esta lleno TMRT y no
; ha terminado de transmitir,
; para ello TRMT tiene que estar a 1, hasta
goto FIN2 ; entonces esperamos.
bsf INTCON,7 ;cuando deja de transmitir entoces puede haber interrupcion
retfie]