TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: Æneas en 27 de Agosto de 2010, 15:57:50

Título: Ayuda para encontrar el error en primer programa en assembler..
Publicado 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.

Código: [Seleccionar]
#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..
Título: Re: Ayuda para encontrar el error en primer programa en assembler..
Publicado por: pablomanieri en 27 de Agosto de 2010, 16:18:44
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
Título: Re: Ayuda para encontrar el error en primer programa en assembler..
Publicado por: Æneas en 27 de Agosto de 2010, 19:42:29
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..