Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

06/12/2015 #1


Encender leds de forma permanente con PIC 16F84A
Buenos dias a todo el mundo. Hace muy poco empece a introducirme en el tema de programacion en assembler de PICs y este es mi primer proyecto que hago con microcontroladores (No sean muy duros si ven muchos errores de principiante ). Bueno, la idea del proyecto es relativamente simple: Encender de forma permanente un led con un pulsador asignado, y prender otro led con otro pulsador asignado (apagando el led anterior apenas se pulse otro pulsador que no sea el asignado a este)... La idea era hacerlo con una bandera, pero verificando los registros con el MPLAB SIM veo que nunca cambia de estado el registro bandera (aun forzando a cero alguno de los bits del puerto B que uso como entrada dentro del codigo, solo para probar si cambiaba el estado de bandera)... Alguien tiene idea de que estoy haciendo mal?... Aca les dejo el codigo

Código:
 list p=16F84
include <p16f84A.inc>

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

BANDERA equ 0X0C

Pulsador1 equ 0
Pulsador2 equ 1
Pulsador3 equ 2
Pulsador4 equ 3
Led1	  equ 4
Led2	  equ 5
Led3      equ 6
Led4	  equ 7

org 0
bsf STATUS,RP0	; Paso a banco 1
movlw b'10000'	; Configuro puerto A como salida
movwf TRISA		; "
movlw b'00001111'; Configuro pin 0 a 3 como entrada y 4 a 7 como salida
movwf TRISB
bcf STATUS,RP0	; Paso a banco 0
clrf PORTA		; Limpio puerto A
clrf PORTB		; Limpio puerto B

; ********* ZONA DE CODIGO ***********

leerpuerto		
			btfsc PORTB,Pulsador1 	; Verifico si pin 0 este sin tension
			movlw .1			  	; Asigno decimal 1 a W				
			btfsc PORTB,Pulsador2	; Verifico si pin 1 este sin tension
			movlw .2				; Asigno decimal 2 a W
			btfsc PORTB,Pulsador3	; Verifico si pin 2 este sin tension
			movlw .3				; Asigno decimal 3 a W
			btfsc PORTB,Pulsador4	; Verifico si pin 3 este sin tension
			movlw .4				; Asigno decimal 4 a W
			movwf BANDERA			; Cargo contenido de W a BANDERA
			movfw BANDERA			; Cargo contenido de BANDERA a W
			sublw .1				; Comparo contenido de W a decimal 1
			btfsc STATUS,Z			; Verifico que el bit Z este en cero
            goto funcion1
			movfw BANDERA			; Cargo contenido de BANDERA a W
			sublw .2				; Comparo contenido de W a decimal 2
			btfsc STATUS,Z			; Verifico que el bit Z este en cero
            goto funcion2
			movfw BANDERA			; Cargo contenido de BANDERA a W
			sublw .3				; Comparo contenido de W a decimal 3
			btfsc STATUS,Z			; Verifico que el bit Z este en cero
            goto funcion3
			movfw BANDERA			; Cargo contenido de BANDERA a W
			sublw .4				; Comparo contenido de W a decimal 4
			btfsc STATUS,Z			; Verifico que el bit Z este en cero
            goto funcion4
volver
			goto leerpuerto
	
funcion1
	    	bcf PORTB,Led1			;Enciendo bit 4 de puerto B
			goto volver
funcion2
	    	bcf PORTB,Led2			;Enciendo bit 5 de puerto B
			goto volver
funcion3
	    	bcf PORTB,Led3			;Enciendo bit 6 de puerto B
			goto volver
funcion4
	    	bcf PORTB,Led4			;Enciendo bit 7 de puerto B
			goto volver

end
Lo estoy probando en Proteus, cuando pulso no hace nada... Aca les dejo el circuito donde lo estoy probando:

Si alguien tiene alguna respuesta, desde ya muchas gracias!
07/12/2015 #2

Avatar de Vegetal Digital

Hola, no se leer ensamblador, pero guiándome por los comentarios, fijate que pones "Verifico si pin 0 este sin tension" y en el esquema que adjuntas las entradas están siempre con tensión (estan conectadas a Vdd), y pasarían a 0 (sin tensión) cuando aprietes los botones.
Saludos!
07/12/2015 #3


Leon Elec dijo: Ver Mensaje
BCF

Pone a 0 el bit de un registro. El bit debe ser indicado por el programador.

Ejemplo:

Código:
         BCF      TEMP,2
Antes de la instrucción TEMP vale B'11111111'. Después de la instrucción TEMP vale B'11111011'

Para recordar, Bit Clear es borrar File es archivo o registro

No afecta ningún bit del registro Status.

BSF

Pone a 1 el bit de un registro. El bit debe ser indicado por el programador.

Ejemplo:

Código:
         BSF      TEMP,0
Antes de la instrucción TEMP vale B'01110110'. Después de la instrucción TEMP vale B'01110111'

Para recordar, Bit Set es poner a 1 File Archivo o registro

No afecta a ningún Bit del registro Status.

BTFSC

Salta un línea si el bit de un registro es cero. El bit debe ser indicado por el programador.

Ejemplo:

Código:
         BTFSC    TEMP,5
         BCF        PORTA,0
         BSF        PORTB,0
Caso 1:

TEMP vale B'00011110'. El CP analizará solo el Bit 5 del registro TEMP, como es 0, salta la instrucción BCF PORTA,0 y ejecuta la siguiente línea que es BSF PORTB,0 y continua haciendo la instrucción.

Caso 2:

TEMP vale B'00111000'. El CP analizará solo el Bit 5 del registro TEMP, como es 1 no salta la instrucción y hará la instrucción BCF PORTA,0 y luego continua con la instrucción BSF PORTB,0

Para recordar Bit Test es chequear File Skip es salto Clear

No afecta a ningún Bit del registro Status.

BTFSS

Salta una línea si el bit de un registro es 1. EL bit debe ser indicado por el programador.

Ejemplo:

Código:
         BTFSS    TEMP,3
         ADDWF   PORTC
         ANDWF   NODO
Caso 1:

TEMP vale B'01101100'. El CP analizará solo el Bit 3 del registro TEMP, como es 1, salta la instrucción ADD PORTC y ejecuta la siguiente línea que es ANDWF NODO y continua haciendo la instrucción.

Caso 2:

TEMP vale B'11110000'. El CP analizará solo el Bit 3 del registro TEMP, como es 0 no salta la instrucción y hará la instrucción ADD PORTC y luego continua con la instrucción AND NODO.

Para recordar Bit Test es chequear File Skip es salto Set

No afecta a ningún Bit del registro Status.


Normalmente, continuando las instrucciones BTFSS y/o BTFSC va un GOTO o CALL pero no la he puesto porque aún no se explicaron estas instrucciones.
En el esquema los diodos los tienes puestos a masa luego la alimentacion la hace el puerto del Pic

espero sea de ayuda
07/12/2015 #4
Moderador

Avatar de D@rkbytes

Adjunto un ejemplo para hacerlo más sencillo con tan sólo comprobaciones de estados lógicos.
Y para hacerlo algo más confiable, también coloqué una rutina antirrebote para los pulsadores. (Sin retardos)

PD:
También se puede hacer por medio de la interrupción por cambio de estado en RB4-RB7

Saludos.
Archivos Adjuntos
Tipo de Archivo: rar 16F84A LEDs con pulsadores.rar (16,0 KB (Kilobytes), 19 visitas)
07/12/2015 #5

Avatar de juanma2468

Pues asi como esta nunca te va a prender un led ya que cuando entra a cualquier funcion, ya sea 1, 2 , 3 o 4, en vez de poner la instrucción bsf que sería poner un "1" en la salida para prender el led, pones la instrucción bcf que pone un "0", lo cual nunca prende el led. Eso fue a priori lo que vi, no se si habrá otra cosa más.
08/12/2015 #6


Con el código que ya tienes hecho, te corrijo algunas líneas.
Código:
                 list p=16F84
                include <p16f84A.inc>


BANDERA equ 0X0C

Pulsador1 equ 0
Pulsador2 equ 1
Pulsador3 equ 2
Pulsador4 equ 3
Led1      equ 4
Led2      equ 5
Led3      equ 6
Led4      equ 7

            org 0


        bsf STATUS,RP0    ; Paso a banco 1
        movlw b'10000'    ; Configuro puerto A como salida
        movwf TRISA        ; "
        movlw b'00001111'; Configuro pin 0 a 3 como entrada y 4 a 7 como salida
        movwf TRISB
        bcf STATUS,RP0    ; Paso a banco 0
        clrf PORTA        ; Limpio puerto A
        clrf PORTB        ; Limpio puerto B

; ********* ZONA DE CODIGO ***********

leerpuerto
            clrf  BANDERA            ; Borro el registro BANDERA
            btfsc PORTB,Pulsador1     ; Verifico si pin 0 este sin tension
            movlw .1                  ; Asigno decimal 1 a W                
            btfsc PORTB,Pulsador2    ; Verifico si pin 1 este sin tension
            movlw .2                ; Asigno decimal 2 a W
            btfsc PORTB,Pulsador3    ; Verifico si pin 2 este sin tension
            movlw .3                ; Asigno decimal 3 a W
            btfsc PORTB,Pulsador4    ; Verifico si pin 3 este sin tension
            movlw .4                ; Asigno decimal 4 a W
            movwf BANDERA            ; Cargo contenido de W a BANDERA
            movfw BANDERA            ; Cargo contenido de BANDERA a W
            sublw .1                ; Comparo contenido de W a decimal 1
            btfsc STATUS,Z            ; Verifico que el bit Z este en cero
            goto funcion1
            movfw BANDERA            ; Cargo contenido de BANDERA a W
            sublw .2                ; Comparo contenido de W a decimal 2
            btfsc STATUS,Z            ; Verifico que el bit Z este en cero
            goto funcion2
            movfw BANDERA            ; Cargo contenido de BANDERA a W
            sublw .3                ; Comparo contenido de W a decimal 3
            btfsc STATUS,Z            ; Verifico que el bit Z este en cero
            goto funcion3
            movfw BANDERA            ; Cargo contenido de BANDERA a W
            sublw .4                ; Comparo contenido de W a decimal 4
            btfsc STATUS,Z            ; Verifico que el bit Z este en cero
            goto funcion4
volver
            goto leerpuerto
    
funcion1    
            clrf PORTB                ;Borro el puerto B No se quede ningun led encendido
            bSf PORTB,Led1            ;Enciendo bit 4 de puerto B
            goto volver
funcion2
            CLRF PORTB                   ;Borro el puerto B No se quede ningun led encendido    
            bSf PORTB,Led2            ;Enciendo bit 5 de puerto B
            goto volver
funcion3
            CLRF PORTB                ;Borro el puerto B No se quede ningun led encendido
            bsf PORTB,Led3            ;Enciendo bit 6 de puerto B
            goto volver
funcion4
            CLRF PORTB                ;Borro el puerto B No se quede ningun led encendido
            bsf PORTB,Led4            ;Enciendo bit 7 de puerto B
            goto volver

            end
09/12/2015 #7


Primero que nada, muchas gracias a todo el mundo por responder y ayudarme con este miniproyecto que tengo.

La verdad es que utilice el archivo que me compartio D@rkbytes, que hace exactamente lo que queria en un principio, que era que al tocar un pulsador hiciera una funcion con un led de forma permanente hasta que pulsara otro pulsador. Lo que estaba buscando como resultado final era un juego de leds diferentes con cada pulsador, por lo que este archivo que me compartio el colega me sirvio muchisimo.

Les comparto el codigo final que hice a partir del archivo y tambien tome fragmentos de la libreria Retardos para incorporarla dentro del codigo (Perdon pero no puse todos los comentarios)...

Código:
	list p=16f84a
	include p16f84a.inc
	__config _XT_OSC & _WDTE_OFF & _PWRTE_ON

	errorlevel -302			; Para omitir los mensajes por selección de bancos.

	CBLOCK 0x0c
	R_ContA						; Contadores para los retardos.
	R_ContB
	R_ContC
	ENDC

	org		0x00			; Vector de Reset

Inicio
	bsf		STATUS,RP0		; Seleccionar el banco 1	
	movlw	b'10000'		; Configuro puerto A como salida
	movwf	TRISA		
	movlw	b'00001111'		; Parte alta del Puerto B como salidas y parte baja como entradas.
	movwf	TRISB
	bcf		STATUS,RP0		; Seleccionar banco 0
	clrf 	PORTA			; Limpio puerto A
	clrf	PORTB			; Limpiar Puerto B

Programa
	btfsc	PORTB,0			; Verificar Pulsador en RB0 (Salta si es 0)
	goto	Check_1			; Si no es 0 salta a Check_1 para comprobar el siguiente pulsador.
	call	Antirrebote		; Ir a rutina antirrebote
	call	Funcion1			; Ir a rutina de encendido de LED's
Check_1
	btfsc	PORTB,1			; Igual a lo comentado arriba para los siguientes pulsadores.
	goto	Check_2
	call	Antirrebote
	call	Funcion2
Check_2
	btfsc	PORTB,2
	goto	Check_3
	call	Antirrebote
	call	Funcion3
Check_3
	btfsc	PORTB,3
	goto	Programa
	call	Antirrebote
	call	Funcion4
	call	Antirrebote

	goto	Programa

Funcion1
	movlw	b'11110000'		; Poner en 1 los bits 4,5,6 y 7 del puerto B
	movwf	PORTB
	movlw	b'11111'		; Poner en 1 los bits 0,1,2 y 3 del puerto A
	movwf	PORTA
	call Retardo_2s
	movlw	b'00000000'		; Poner en 0 el puerto B
	movwf	PORTB
	movlw	b'10000'		; Poner en 0 el puerto A
	movwf	PORTA
	call Retardo_2s
	goto Funcion1
	return

Funcion2
	movlw	b'00110000'		; Poner en 1 los bits 4 y 5 del puerto B
	movwf PORTB
	movlw	b'10011'		; Poner en 1 los bits 0 y 1 del puerto A
	movwf	PORTA
	call Retardo_500ms
	movlw	b'00000000'		; Poner en 0 el puerto B
	movwf PORTB
	movlw	b'10000'		; Poner en 0 el puerto A
	movwf	PORTA
	call Retardo_500ms
	movlw	b'00110000'		
	movwf PORTB
	movlw	b'10011'
	movwf	PORTA
	call Retardo_500ms
	movlw	b'00000000'		
	movwf PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_1s
	movlw	b'11000000'		
	movwf PORTB
	movlw	b'11100'
	movwf	PORTA
	call Retardo_500ms
	movlw	b'00000000'		
	movwf PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_500ms
	movlw	b'11000000'		
	movwf PORTB
	movlw	b'11100'
	movwf	PORTA
	call Retardo_500ms
	movlw	b'00000000'		
	movwf PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_1s
	goto Funcion2
	return

Funcion3
	movlw	b'00010000'			; Poner en 1 el bit 4 del puerto B
	movwf	PORTB
	movlw	b'10001'			; Poner en 1 el bit 0 del puerto A
	movwf	PORTA
	call Retardo_1s
	movlw	b'00000000'			; Poner en 0 el puerto B
	movwf	PORTB
	movlw	b'10000'			; Poner en 0 el puerto A
	movwf	PORTA
	call Retardo_500ms
	movlw	b'00100000'	
	movwf	PORTB
	movlw	b'10010'
	movwf	PORTA
	call Retardo_1s
	movlw	b'00000000'		
	movwf	PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_500ms
	movlw	b'01000000'	
	movwf	PORTB
	movlw	b'10100'
	movwf	PORTA
	call Retardo_1s
	movlw	b'00000000'		
	movwf	PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_500ms
	movlw	b'10000000'	
	movwf	PORTB
	movlw	b'11000'
	movwf	PORTA
	call Retardo_1s
	movlw	b'00000000'		
	movwf	PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_500ms
	goto Funcion3
	return

Funcion4
	movlw	b'00110000'			; Poner en 1 los bits 4 y 5 del puerto B
	movwf	PORTB
	movlw	b'10000'			; Poner en 0 el puerto A
	movwf	PORTA
	call Retardo_1s
	movlw	b'00000000'			; Poner en 0 el puerto B
	movwf	PORTB
	movlw	b'10000'			; Poner en 0 el puerto A
	movwf	PORTA
	call Retardo_500ms
	movlw	b'11000000'	
	movwf	PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_1s
	movlw	b'00000000'	
	movwf	PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_500ms
	movlw	b'00000000'	
	movwf	PORTB
	movlw	b'10011'
	movwf	PORTA
	call Retardo_1s
	movlw	b'00000000'	
	movwf	PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_500ms
	movlw	b'00000000'	
	movwf	PORTB
	movlw	b'11100'
	movwf	PORTA
	call Retardo_1s
	movlw	b'00000000'	
	movwf	PORTB
	movlw	b'10000'
	movwf	PORTA
	call Retardo_500ms
	goto Funcion4
	return

; Rutina para esperar hasta que se suelte el pulsador activo.
Antirrebote
	btfss	PORTB,0			; Verifica el estado de RB0 (Salta si es 1)
	goto	Antirrebote		; Si no es 1, hacer un bucle hasta que sea 1
	btfss	PORTB,1			; Igual a lo comentado arriba.
	goto	Antirrebote
	btfss	PORTB,2
	goto	Antirrebote
	btfss	PORTB,3
	goto	Antirrebote
	return

;Rutina para comprobar el estado de los pulsadores dentro de la rutina de retardo
Comprobar_Estado
	btfss PORTB,0
	goto Check_1
	btfss PORTB,1
	goto Check_2
	btfss PORTB,2
	goto Check_3
	btfss PORTB,3
	goto Programa
	return

Retardo_20s						; La llamada "call" aporta 2 ciclos máquina.
	movlw	d'200'				; Aporta 1 ciclo máquina. Este es el valor de "N".
	goto	Retardo_1Decima		; Aporta 2 ciclos máquina.
Retardo_10s						; La llamada "call" aporta 2 ciclos máquina.
	movlw	d'100'				; Aporta 1 ciclo máquina. Este es el valor de "N".
	goto	Retardo_1Decima		; Aporta 2 ciclos máquina.
Retardo_5s						; La llamada "call" aporta 2 ciclos máquina.
	movlw	d'50'				; Aporta 1 ciclo máquina. Este es el valor de "N".
	goto	Retardo_1Decima		; Aporta 2 ciclos máquina.
Retardo_2s						; La llamada "call" aporta 2 ciclos máquina.
	movlw	d'20'				; Aporta 1 ciclo máquina. Este es el valor de "N".
	goto	Retardo_1Decima		; Aporta 2 ciclos máquina.
Retardo_1s						; La llamada "call" aporta 2 ciclos máquina.
	movlw	d'10'				; Aporta 1 ciclo máquina. Este es el valor de "N".
	goto	Retardo_1Decima		; Aporta 2 ciclos máquina.
Retardo_500ms					; La llamada "call" aporta 2 ciclos máquina.
	movlw	d'5'				; Aporta 1 ciclo máquina. Este es el valor de "N".
;
; El próximo bloque "Retardo_1Decima" tarda:
; 1 + N + N + MxN + MxN + KxMxN + (K-1)xMxN + MxNx2 + (K-1)xMxNx2 +
;   + (M-1)xN + Nx2 + (M-1)xNx2 + (N-1) + 2 + (N-1)x2 + 2 =
; = (2 + 4M + 4MN + 4KM) ciclos máquina. Para K=249, M=100 y N=1 supone 100011
; ciclos máquina que a 4 MHz son 100011 µs = 100 ms = 0,1 s = 1 décima de segundo.
;
Retardo_1Decima
	movwf	R_ContC				; Aporta 1 ciclo máquina.
R1Decima_BucleExterno2
	movlw	d'30'				; Aporta Nx1 ciclos máquina. Este es el valor de "M".
	movwf	R_ContB				; Aporta Nx1 ciclos máquina.
R1Decima_BucleExterno
	movlw	d'222'				; Aporta MxNx1 ciclos máquina. Este es el valor de "K".
	movwf	R_ContA				; Aporta MxNx1 ciclos máquina.
R1Decima_BucleInterno          
	call Comprobar_Estado					; Aporta KxMxNx12 ciclos máquina.
	decfsz	R_ContA,F			; (K-1)xMxNx1 cm (si no salta) + MxNx2 cm (al saltar).
	goto	R1Decima_BucleInterno	; Aporta (K-1)xMxNx2 ciclos máquina.
	decfsz	R_ContB,F			; (M-1)xNx1 cm (cuando no salta) + Nx2 cm (al saltar).
	goto	R1Decima_BucleExterno	; Aporta (M-1)xNx2 ciclos máquina.
	decfsz	R_ContC,F			; (N-1)x1 cm (cuando no salta) + 2 cm (al saltar).
	goto	R1Decima_BucleExterno2	; Aporta (N-1)x2 ciclos máquina.
	return						; El salto del retorno aporta 2 ciclos máquina.

	end
El codigo es "customizado"... No creo que pueda serles de mucha utilidad dado que es para un proyecto personal, pero lo comparto igual dado que es mi primer proyecto y estoy muy muy contento de haberlo terminado (Aunque la proxima vez espero hacer uno enteramente propio, dado que me siento un poco culpable por sacar partes de otros codigos )

Tambien dejo el esquema electronico donde lo probe, aunque todavia no es el circuito final

Bueno gente, muchas gracias a todos por la ayuda!!!

PD: La pagina no me dejo subir el archivo del circuito por ser nuevo en el foro y por haber subido ya una imagen, perdon!!
09/12/2015 #8
Moderador

Avatar de D@rkbytes

metmathos dijo: Ver Mensaje
PD: La página no me dejó subir el archivo del circuito por ser nuevo en el foro y por haber subido ya una imagen, perdón!!
Si puedes subir imágenes y archivos, mientras no sean los mismos. Ya lo hiciste en tu primer publicación.
Mira por aquí: ¿Cómo subo imágenes y archivos?

Gracias por compartir tus avances.
12/12/2015 #9


Tuve un problema... No me funciono en el mundo real! Lo probe en Proteus, salio todo ok, pero aparentemente el problema radica en el programador que estoy usando, el Pickit 2... Tengo que decir que hace un tiempo compre el programador pero es la primera vez que lo uso con un codigo... El codigo lo hice en el MPLAB 8.88 (Luego instale la version 8 y luego la 7 a ver si estaba ahi el problema, pero nada...) y aparentemente no puedo compilar el 16F84A en MPLAB y luego usarlo en PICkit 2... Intente hacer un pequeño programa con 16F88 y parece que funciona, pero para usar este codigo en el 16F88 no funciona de la misma manera que en el 16F84A... A alguien mas le ha pasado lo que paso aca?
12/12/2015 #10
Moderador

Avatar de D@rkbytes

Es muy extraño. ¿Revisaste los fuses de la palabra de configuración?

El PIC16F84A se sigue incluyendo en MPLAB desde que yo lo usé. (MPLAB v 5.40)
De hecho hace poco probé un programa, lo compilé con MPLAB v 8.92 y no tuve problemas. (Uso PICkit 3)

Verifica que el valor de la palabra de configuración en (0x2007) sea: 0x3FF1
13/12/2015 #11


D@rkbytes dijo: Ver Mensaje
Es muy extraño. ¿Revisaste los fuses de la palabra de configuración?

El PIC16F84A se sigue incluyendo en MPLAB desde que yo lo usé. (MPLAB v 5.40)
De hecho hace poco probé un programa, lo compilé con MPLAB v 8.92 y no tuve problemas. (Uso PICkit 3)

Verifica que el valor de la palabra de configuración en (0x2007) sea: 0x3FF1
Si D@rkbytes, los fuses de configuracion y el valor de la palabra estan ok, y aun sigue sin funcionar...

Estaba leyendo en otras paginas que usando el 16F84A con MPLAB y Pickit 3 funciona sin problemas, pero para usarlo con Pickit 2 no es lo mismo y no funciona... Lo podria hacer en un 16F88 que si me funciona, pero la verdad tendria que empezar de cero con el codigo porque no creo que copiando y pegando el codigo del 16F84A funcione para el 16F88... De haber sabido, compraba otro programador.

Queria saber si a alguien le habia pasado lo mismo y como lo habia solucionado..
13/12/2015 #12
Moderador

Avatar de D@rkbytes

No creo que sea problema del PICkit 2.
Sé que sonará ilógico, pero... ¿Conectaste la resistencia pull-up en el pin de reset y el cristal de 4 MHz.?
Te comento ésto porque en el esquema que subiste no están.
La simulación funciona sin colocarlos, pero físicamente si se necesitan

Por favor, sube una foto del esquema que has montado físicamente y también una del circuito que armaste.
16/12/2015 #13


D@rkbytes dijo: Ver Mensaje
No creo que sea problema del PICkit 2.
Sé que sonará ilógico, pero... ¿Conectaste la resistencia pull-up en el pin de reset y el cristal de 4 MHz.?
Te comento ésto porque en el esquema que subiste no están.
La simulación funciona sin colocarlos, pero físicamente si se necesitan

Por favor, sube una foto del esquema que has montado físicamente y también una del circuito que armaste.
Ahi encontre el problema D@rkbytes... No estaba conectando el MCLR a Vdd!!! ... Perdon por mi ignorancia, pero pensaba solo se utilizaba si iba a resetear el micro, Muchas gracias por tu atencion!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.