Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: H3lltronik en 25 Abril 2018, 05:19 am



Título: PIC16F877A No enciende
Publicado por: H3lltronik en 25 Abril 2018, 05:19 am
Hola, tengo el siguiente circuito.

(https://image.ibb.co/mL1Z9H/31195650_1758470450878850_992713417670262784_n.jpg)

Estoy usando el PIC16F877A y le programe el siguiente codigo:

Código:
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


Título: Re: PIC16F877A No enciende
Publicado por: engel lex en 25 Abril 2018, 05:43 am
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


Título: Re: PIC16F877A No enciende
Publicado por: PalitroqueZ en 25 Abril 2018, 05:52 am
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.



Título: Re: PIC16F877A No enciende
Publicado por: H3lltronik en 25 Abril 2018, 05:53 am
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

(https://image.ibb.co/efnGpH/Whats_App_Image_2018_04_23_at_10_13_58_PM.jpg)

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


Título: Re: PIC16F877A No enciende
Publicado por: H3lltronik en 25 Abril 2018, 06:21 am
He cambiado las cosas que me han mencionado en el codigo

Código:
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.