martes, 28 de julio de 2009

Programando pic's desde linux. (código)

El viernes paso algo muy curioso, el programa no jalo ni hizo lo que tenia. Es mas, ni siquiera hizo algo. Pero como a la par también revisaba el código para el LCD, no me quedo tiempo para debuggear en MPLAB. Y siendo sinceros, no tenia ni idea de algunas partes del código.

Así que valientemente iremos a cazar leones con una varita.

Así que antes de que podamos hacer algo en cuanto al código, hay que saber que hace y por que lo hace.

Primero vamos a configurar el pic.

Código:

Init
bcf STATUS,RP0
bcf STATUS,RP1
clrf PORTA

clrf PORTB
clrf PORTC
clrf PORTE
clrf PORTD

bsf STATUS,RP0
;Desactivando las interrupciones
clrf INTCON
clrf PIE1

;Configurando las patitas del puerto A
movlw 0x8F
movwf ADCON1
;---------------------------
clrf TRISB

clrf TRISE
bsf STATUS,RP0
;Seleccionando la frecuencia de reloj para la conversión. Fosc/8
;ADCS1=0

;ADCS0=1
;ADON=1
movlw 0x41
movwf ADCON0
;Configurando el bit de estado de la conversión.

;GO=1. Iniciandoce la conversión.
bsf ADCON0,GO
bcf STATUS,RP0
return

Ahora veremos que hace la función de leer.

Leer_ADC
;Se concatena IRP con FSR para seleccionar el banco de RAM
;0=Banco 0 y 1 (00h-FFh)
bcf STATUS,IRP
movwf FSR

movf INDF,w
movwf LSB
movlw 0x1E
movwf FSR

movf INDF,w
movwf MSB
bsf ADCON0,GO
return