PIC16F877A No enciende

Iniciado por H3lltronik, 25 Abril 2018, 05:19 AM

0 Miembros y 2 Visitantes están viendo este tema.

H3lltronik

Hola, tengo el siguiente circuito.



Estoy usando el PIC16F877A y le programe el siguiente codigo:

LIST p=16F877 ;tell assembler what chip we are using
include "P16F877.inc" ;include the defaults for the chip

__config 0x3F3A ; Pic16F877 11111100111010

ORG 0

NUMERO1 EQU 0x21
NUMERO2 EQU 0x22 ;NO USADA AUN

BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0
CLRF PORTA
BSF STATUS,RP0
BCF STATUS,RP1 ;BANCO 1
MOVLW 0x07
MOVWF ADCON1 ;E/S DIGITAL
MOVLW 0xFF
MOVWF TRISA ;TODO PORTA SALIDA

BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0

MOVLW 0x01
MOVWF NUMERO1
INICIO:
RLF NUMERO1,0 ;ROTABIT
MOVWF PORTA
MOVWF NUMERO1

CALL RETARDO

GOTO INICIO

RETARDO:
;RETARDO
RETURN

FINAL:
NOP
END


El problema es que el circuito no hace nada, no encienden los leds cuando el programa lo que hace es un simple rotabit en el PORTA para comprobar que el pic estuviera comprobando correctamente, probe el programa en simuladores del mismo pic y parece funionar pero al hacerlo en el pic real simplemente no hace absolutamente nada. Alguien tiene idea de que es lo que puede estar pasando? los capacitores del cristal son de 33pf y el cristal es de 4MHz. Gracias de antemano
Still Alive

engel lex

segurate de seguir el diagrama... por otro lado, tambien puede ser consecuencia que están cambiando unas 500 veces por segundo XD hace años que no toco un pic (con arduino creía que eso ya no se usaba hace como 10 años mas que para ambito profesional XD) menos aún risc asm XD pero incluso funcionando bien son 5 leds encenciendo una vez cada 1/500 segundos una de cada 8 veces XD deberías llenar el retardo con algo que dure por lo menos 1/10 de segundo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

PalitroqueZ

#2
no podrás ver el encendido, puesto que no hay ningun retardo.

la rutina de RETARDO no existe.

pd: cambia los fuses por 0x3F71

pd2: otra cosa, comienza la rutina desde 0x5, para que no caigas en el vector de interrupción y asi no tengas problemas con lo relacionado al servicio de interrupciones.

"La Economía planificada lleva de un modo gradual pero seguro a la economía dirigida, a la economía autoritaria y al totalitarismo" Ludwig Erhard

H3lltronik

Yo no se XD uso este integrado en especifico porque asi lo marco mi profesor y pues debo hacerlo asi, apenas estamos viendo pics.

No creo que sea el retardo, es decir, ya he probado ya otros programas como que simplemente mueva un 33H al PORTA pero tampoco enciende los leds, no logro hacer que encienda aunque se supone que el circuito esta bien ya que sigue un diagrama de configuracion basica del pic, como este por ejemplo



He probado algunas otras cosas como poner un capacitor de ruido de 100nF directo a vcc y gnd pero tampoco :c le he movido a bastantes cosas pero no logro hacer que encienda
Still Alive

H3lltronik

#4
He cambiado las cosas que me han mencionado en el codigo

LIST p=16F877 ;tell assembler what chip we are using
include "P16F877.inc" ;include the defaults for the chip

__config 0x3F71 ; Pic16F877 11111100111010

ORG 0

NUMERO1 EQU 0x21
NUMERO2 EQU 0x22 ;NO USADA AUN

AUXRET1 EQU 0x23
AUXRET2 EQU 0x24
AUXRET3 EQU 0x25

BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0
CLRF PORTA
BSF STATUS,RP0
BCF STATUS,RP1 ;BANCO 1
MOVLW 0x07
MOVWF ADCON1 ;E/S DIGITAL
MOVLW 0xFF
MOVWF TRISA ;TODO PORTA SALIDA

BCF STATUS,RP0
BCF STATUS,RP1 ;BANCO 0

MOVLW 0x01
MOVWF NUMERO1
INICIO:
RLF NUMERO1,0 ;ROTABIT
MOVWF PORTA
MOVWF NUMERO1

CALL RETARDO

GOTO INICIO

RETARDO:
MOVLW 0x08
MOVWF AUXRET1

REFILL2:
MOVLW 0xFF
MOVWF AUXRET2

REFILL1:
MOVLW 0xFF
MOVWF AUXRET3

CTRL1:
DECFSZ AUXRET3,1
GOTO CTRL1

DECFSZ AUXRET2,1
GOTO REFILL1

DECFSZ AUXRET1,1
GOTO REFILL2

RETURN

FINAL:
NOP
END


Sin embargo el circuito sigue sin dar señales de vida :c que mas puedo hacer?! estoy asustado, mi semestre pende de un hilo

Edit: Ya pude hacerlo funcionar, aparentemente el mover al TRISA un FFH hace que todo el puerto sea de entrada, no salida, por eso no encendía ningún led xd al final fue una estupidez. Gracias por su ayuda.
Still Alive