Saludos a todos desde Bogotá, Colombia
Este foro es el mejor de todos en PIC´s. He estado observandolo desde hace un mes y hasta ahora participo. Su filosofía la comparto a pleno. Sus ayudas son interesadas y a mi tambien me han servido.
ahora al punto.
Estoy construyendo un contador de energía eléctrica utilizando el pic 16f877A.
lo tengo ya pensado. lo compilado en MPLAB y todas las rutinas que utilizo funcionan en la simulación.
El problema es que al montar las partes del programa no funcionan.
1. El conversor A/D
2. El temporizador.
3. La comunicación serie. (aunque esta ya nos transmite)
Sobre el conversor les quería mostrar el codigo que he realizado.. lo hago por partes para montarlo y luego probarlo. potenciometro a la entrana ANA0 y leds a la salida del puerto B. pero nada no funciona. Este es pues el codigo.
LIST P=16F877A
RADIX HEX
INCLUDE <P16F877A.INC>
ORG 0x00
;CONVERSION SIN TEMPORIZACION, RESULTADO EN PUERTO
INICIO ;B Y PUERTO C, ENTRADA ANALOGA (PIN 2)
bsf STATUS,RP0 ;Seleccion banco 1
bcf STATUS,RP1
movlw b"10001111" ;Configuracion entradas Anal (ADCON1)
movwf ADCON1 ;PUERTA 0 COMO ENTRADA ANALOGA
movlw B"11111111" ;Configuracion de puerta A como entrada
movwf TRISA
clrf TRISB ;Puerta B y C como salidas
clrf TRISC
movlw b"10000111" ;Configuracion del TMR0
movwf OPTION_REG ;con predivisor de 256
BUCLE bcf STATUS,RP0 ;Seleccion banco 0
movlw b"10000001" ;Activacion del A/D y TAD=32Tosc
movwf ADCON0 ;activacion canal 0 analogo (ADCON0)
bsf ADCON0,02 ;Comienza a convertir señal TC (GO/DONE#)
wait btfsc ADCON0,02 ;Salta si termina la conversion
goto wait
movf ADRESH,0 ;w=ADRESH
movwf PORTC ;PUERTOC
bsf STATUS,RP0 ;Seleccion banco 1
movf ADRESL,0 ;w=ADRESL
bcf STATUS,RP0 ;BANCO 0
movwf PORTB ;PUERTOB
goto BUCLE
END
Ese es solo una parte. pues la idea es utilizar el conversor con temporizacion de un segundo. así que probé apagar y prender un led en un segundo con el siguiente codigo.. guiandome del libro Microcontroladores PIC 16f84
Este es:
LIST P=16f877A
RADIX HEX
INCLUDE <P16f877A.INC>
ORG 0x00
INICIO
VARTIME EQU 0X23 ;ESTE PROGRAMA ENCIENDE LOS LEDS DEL
;PUERTO B, ESPERA UN SEGUNDO Y LOS APAGA
bsf STATUS,RP0 ;CAMBIO A BANCO 1
bcf STATUS,RP1
movlw b"10000110"
movwf ADCON1 ;CONFIGURO PUERTAS I/O DIGITALES
clrf TRISB ;PUERTA B COMO SALIDA
movlw b"10000111" ;Predivisor de 256 al TMR0
movwf OPTION_REG ;pulsos de reloj 4Tosc
bcf STATUS,RP0 ;CAMBIO BANCO 0
movlw b"11111111"
movwf PORTB
CALL TEMPORIZADOR
clrf PORTB
goto INICIO
TEMPORIZADOR
movlw .20 ;CARGA 20 A VARTIME
movwf VARTIME
DELAY_1 movlw ~.195 ;CARGA COMPLEMETNO 195 A
movwf TMR0 ;TMR0
bcf INTCON,T0IF
DELAY_2 clrwdt
btfss INTCON,T0IF ;
goto DELAY_2
decfsz VARTIME,1
goto DELAY_1
bcf STATUS,RP0 ;BANCO 0
RETURN
END
bueno como pueden ver necesito su extensa y caritativa colaboración.
Su tiempo es valioso para mi .. GRACIAS POR SUS RESPUESTAS.
Si alguien quiere saber más sobre este proyecto me puede escribir a:
plcarranzag@unal.edu.co ó también
pedluis_1@yahoo.com.ar