TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: Æneas en 27 de Agosto de 2010, 15:57:50
-
Hola.. en la facultad empezamos a ver microcontroladores y estoy tratando de aprender a programar en assembler, utilizando como bibliografía la hoja de datos del pic 16F628A e intenté hacer un programa simple como para empezar a agarrarle la mano al tema..
La idea es sacar por el puerto B el número 10101010, esperar medio segundo, luego complementar el valor y nuevamente esperar un tiempo y repetir el ciclo.
Al simularlo en proteus funciona bien a excepción del bit 4 que se queda permanentemente apagado, si bien al leer el valor del registro porb sí adquiere el valor que debería pero no lo saca por el pin.
#include <p16F628A.inc>
__config (_XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF)
cblock 0x20
Delay1
Delay2
Delay3
endc
org 0
bcf Status, Rp1
bsf Status, Rp0
clrf TrisB
bcf Status, Rp0
clrf PortB
goto main
Delay
movlw 0x4
movwf Delay3
Ini_delay
decfsz Delay1
goto Ini_delay
decfsz Delay2
goto Ini_delay
decfsz Delay3
goto Ini_delay
return
main
clrf Delay1
clrf Delay2
movlw 0xAA
movwf Portb
Ini
comf Portb, F
call Delay
goto Ini
End
Desde ya les agradezco cualquier aporte..
Saludos..
-
En los fuses debes agregar _LVP_OFF , ya que de otro modo el pin RB4 se utiliza para la programación a bajo voltaje y no como salida o entrada digital
-
Perfecto.. ahora funciona. Estaba seguro que se trataba de alguna condición inicial que no había tenido en cuenta pero esa la desconocía completamente..
Muchas gracias, saludos..