# No consigo grabar el pic



## Deimos1000 (May 27, 2011)

Queridos amigos:

Intento grabar en un 16f628a un programa hecho con picbasic pro. Utilizo un pickit2 original, un módulo zif para el pickit2 (comprado) y el software pic programmer de Microchip. La grabación parece realizarse bien (no hay errores ni problemas. No me atrevo a tocar las opciones del programa, porque no conozco bien su función). Tras grabarlo, lo monto en una proto, y no va (nada-de-nada).

Bueno, puede ser el programa, así que para probar hago el típico de hacer parpadear un led (en B.0), compilo, grabo... todo bien. Lo monto en una proto (en otra distinta)... y tampoco va: el led se queda encendido fijo, y eso es todo.

Os juro que me va a dar algo: compré el pickit2 original porque habia comprado un clon en ebay y me pasaba lo mismo (y pensé que era cosa del clon), tengo los ojos quemados de buscar, leer, leer y leer... y no conseguir nada. Ni siquiera entender por qué ocurre esto.

Os ruego que os compadezcáis de un absoluto novato y me deis algún consejo. Tengo que entregar un proyecto en unos días, y aunque los programas ya están listos, no consigo pasarlos a los pics (todos 16f628a). Es muy frustrante.

Perdón por el rollo,
Santiago


----------



## Rigeliano (May 27, 2011)

Probaste los programas en algún simulador antes de grabarlo en el PIC ?
si lo probaste puede que sea la conexión del PIC en el Proto, por que no pones el código y el circuito que armaste así seria mas fácil encontrar el error.


----------



## lubeck (May 27, 2011)

> Os ruego que os compadezcáis de un absoluto novato y me deis algún consejo. Tengo que entregar un proyecto en unos días, y aunque los programas ya están listos, no consigo pasarlos a los pics (todos 16f628a). Es muy frustrante.


 
El error mas comun es que no configuran bien el oscilador... lo tienes que poner en externo o interno no se como lo pusiste...


----------



## Deimos1000 (May 27, 2011)

Muchas gracias a ambos por responder.

El código del programa de prueba es éste:

TRISB=0

INICIO:
PORTB.0=1
PAUSE 500
PORTB.0=0
PAUSE 500
GOTO INICIO

END

Adjunto una imagen del montaje en proteus

En cuanto a lo del oscilador, pues bien podría ser, porque aunque no voy a utilizar cristales externos, no sé sí eso quiere decir que está en interno, o si es xt o hs. Para mí lo de los fuses de la cabecera es como sánscrito. Es decir, por ejemplo estos fuses los encontré rebuscando por la red:

   @ DEVICE pic16F628, INTRC_OSC_NOCLKOUT    "Reloj interno solo   
   @ DEVICE pic16F628, WDT_OFF    " Watchdog Timer desconectado
   @ DEVICE pic16F628, PWRT_ON  " Power-On Timer conectado
   @ DEVICE pic16F628, BOD_ON   " Brown-Out Detect conectado
   @ DEVICE pic16F628, MCLR_OFF " Master Clear Externo desconectado
   @ DEVICE pic16F628, LVP_OFF  " Low-Voltage Programming desconectado
   @ DEVICE pic16F628, CPD_OFF  " Data Memory Code Protect desconectado
   @ DEVICE pic16F628, PROTECT_ON  " Program Code Protection conectado

Bueno, pues he de decir que no comprendo buena parte de los conceptos. No utilizo el watchdog, así que lo pondría en off. Pero, cómo sé si el grabador usa o no lvp? ¿cuándo hay que desactivar el mclr? ¿qué es el brown-out detect?

Gracias por vuestra paciencia
Santiago


----------



## lubeck (May 27, 2011)

```
@ Device   PIC16F628A ' pusiste el pic16f628 y estas utilizando el pic16f628A
@ Device   Intrc_Osc ' oscilador interno
@ Device   Protect_Off ' para proteger los datos
@ Device   WDT_Off ' si se pasma el micro se autoresetea
@ Device   Pwrt_Off ' no lo necesitas
@ Device   MCLR_On '  para resetearlo en tu diagrama deberia estar on porque tienes el pulsador
' si lo quitas es off
@ DEvice   BOD_Off ' tampoco lo necesitas
@ Device   LVP_Off ' este probablemte si lo necesitas LVP sirve para programar con 5v o con 12v
'si tu programador lo hace con 5 es ON si lo hace con 12 es off.. pero si lo lees y te pone los datos 
'cuando lo grabas en off pues lo esta haciendo bien...
@ Device   CPD_Off 'para proteger la eeprom
 
TRISB=0

INICIO:
PORTB.0=1
PAUSE 500
PORTB.0=0
PAUSE 500
GOTO INICIO

END
```
 
si asi lo grabas y no funciona lamento informarte que probablemnente es tu grabador ya sea el sofware o el hardware...


----------



## Deimos1000 (May 27, 2011)

Muchísimas gracias. Voy a probarlo.

Un abrazo,
Santiago

Bueno, pues creo que empiezo mal, porque el compilador me da errores del tipo "undefined symbol" para los 6 fuses. Es la versión 2.47 de pbp, y simplemente he copiado y pegado tu código, y luego intentado compilarlo. 

Pero eso no debería pasar. Habré instalado mal el compilador?

Santiago


----------



## cjefferson (May 27, 2011)

Saludos amigo creo que el problema se debe 
	
	



```
@ Device   PIC16F628A ' pusiste el pic16f628 y estas utilizando el pic16f628A
```

cambia los ' por punto y coma


```
@ Device   PIC16F628A ; pusiste el pic16f628 y estas utilizando el pic16f628A
```

Amigo yo también estoy nuevo en la programación de Pic y uso estos Software como editor MicroCode Studio y compilador PICBASIC PRO 2.60 no he tenido problema y funciona muy bien hay esta el enlace de descarga

Editado por no cumplir con las normas del foro

Saludos


----------



## lubeck (May 27, 2011)

*Cjefferson*

Uchale amigo... creo que eso es pirata!

Lee las normas del foro...

y si... perdon... yo tambien tengo el microcode studio y se le puede poner la " ' " en lugar de la " ; " 
o
compilalo asi...

```
@ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off 
 
TRISB=0
INICIO:
PORTB.0=1
PAUSE 500
PORTB.0=0
PAUSE 500
GOTO INICIO
END
```
igual lo compilo y te pongo el HEX


----------



## cjefferson (May 27, 2011)

Gracias amigo lubeck , ya edite el enlace y
 veo que es igual ; ò '

Saludos


----------



## tlaloc (May 1, 2012)

disculpa pero si les funciona el programa que ami no me funciona ,
lo grabo en el pic y cuando lo quiero probar no me funciona.........
me podrian ayudar tambien.........

gracias


----------



## lubeck (May 1, 2012)

pusiste la resistencia de 10k o 4k7 del pin 4 al positivo de tu fuente?

0 podrias poner un esquema o detallar mas el porque no te funciona....


----------



## tlaloc (May 1, 2012)

disculpen pero a la de hora de compilar el programa que pucieron me aparece error de archivos me pordrian ayudar......
lo compilo en microcode y con pbp v2.47



me pueden ayudar con este porfavor



pongo esto  

@ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off 

TRISB=0
INICIO:
PORTB.0=1
PAUSE 500
PORTB.0=0
PAUSE 500
GOTO INICIO
END

aver me dice esto:::

error(105) c;\pbp\16f628a.inc 21 : cannot open file (include file "p16f628a.inc"not found)
error(113) c;\pbp\16f628a.inc 22 : symbol not previously defined ( XT OSC)
error(113) c;\pbp\16f628a.inc 22 : symbol not previously defined (WDT ON)
error(113) c;\pbp\16f628a.inc 22 : symbol not previously defined (MCLRE ON)
error(113) c;\pbp\16f628a.inc 22 : symbol not previously defined (LVP OFF)
error(113) c;\pbp\16f628a.inc 22 : symbol not previously defined (CP OFF)
error(115) c:\users\tlaloc\docume~1\mcsx\led.asm 50 ;duplicate label ("PORTL" or redefiining sybol that cannot be rdefinded)
error(115) c:\users\tlaloc\docume~1\mcsx\led.asm 52 ;duplicate label ("PORTH" or redefiining sybol that cannot be rdefinded)
error(115) c:\users\tlaloc\docume~1\mcsx\led.asm 54 ;symbol not previosly defined (TRISB)
error(115) c:\users\tlaloc\docume~1\mcsx\led.asm 56 ;symbol not previosly defined (TRISA)
error (113) c:\pbp\pbppic14.lib 6141 : symbol not previously defined (STATUS)
error (113) c:\pbp\pbppic14.lib 6141 : symbol not previously defined (C)
error (113) c:\pbp\pbppic14.lib 6143 : symbol not previously defined (STATUS)
error (113) c:\pbp\pbppic14.lib 6143 : symbol not previously defined (C)
error (113) c:\pbp\pbppic14.lib 6199 : symbol not previously defined (STATUS)
error (113) c:\pbp\pbppic14.lib 6199 : symbol not previously defined (C)
error (113) c:\pbp\pbppic14.lib 6202 : symbol not previously defined (STATUS)
error (113) c:\pbp\pbppic14.lib 6202 : symbol not previously defined (C)
error (113) c:\pbp\pbppic14.lib 7402 : symbol not previously defined (STATUS)
error (113) c:\pbp\pbppic14.lib 7402 : symbol not previously defined (IRP)
too many errors


----------



## lubeck (May 1, 2012)

Los fuses con MPASM no se ponen de esa manera...

pon nada mas esto


```
TRISB=0
INICIO:
PORTB.0=1
PAUSE 500
PORTB.0=0
PAUSE 500
GOTO INICIO
END
```
 y ve si te lo compila...


----------



## tlaloc (May 1, 2012)

si me compila pero pues lo pruebo con el pic y no me funciona......
me podrias decir mi error..
pues gravo el hex en pic 16f628a con el pickit 2 en un programador de microchip
y me sigue pasando los mismo de qeu el pic no me genera nada


----------



## lubeck (May 1, 2012)

> si me compila pero pues lo pruebo con el pic y no me funciona......
> me podrias decir mi error..



el error esta en que estas compilando con MPASM y los fuses no se configuran de esa manera... 

cuando utilizas mpasm se ponen mas o menos asi...


```
@ __CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L  
@ __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_ON_1H & _IESO_ON_1H
@ __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
```

ojo que para el 16f628a no son esos, pero es para que veas cual es el formato...


por otro lado en la ventana de complie & program options ve a la pestaña de assambler y desmarca el Use MPASM y entonces si intenta con los fuses de esta manera...


```
@ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off
```


----------



## tlaloc (May 2, 2012)

garxias me lo compila y ya no me da errores ,,,,,,,,,,,,
pero el mismo problema que me da es qe no funciona en el pic


----------



## lubeck (May 2, 2012)

en el pin 4 que tiene tu pic????


----------



## tlaloc (May 2, 2012)

una resistencia y un push botton para resetear el programa del pic


----------



## lubeck (May 2, 2012)

La resistecia va a positivo verdad?

por otro lado, al ultimo con que estas compilando con PBP o con MPASM?, destildeaste el "use MPASM"?

eso es muy importante, configurar los fuses adecuadamente para que utilice el oscilador interno, sino nunca va a funcionar...

Pudes poner un esquema aqui de como lo estas conectando para ver posibles errores en las conexiones...


----------



## tlaloc (May 2, 2012)

hi ce lo qeu me dijistes y compilo con pbp
pero pues no me funciona en mi entrenador qeu hice
copie y pegue el codigo q me dijistes los fuses ydespues como configure los puertos...
me lo compila y me genera el hexadecimal pero cuando lo quiero probar nada......



@ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off


TRISB=0
INICIO:
TRISB=3
PAUSE 100
TRISB=0
PAUSE 50
GOTO INICIO
end


----------



## lubeck (May 2, 2012)

si lo compilaste sin el "use MPASM" y este codigo 

tal cual


```
@ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off 

TRISB=0
INICIO:
PORTB.0=1
PAUSE 500
PORTB.0=0
PAUSE 500
GOTO INICIO
END
```

y no funciona...

entonces es problema de conexiones... pero ahi sin un esquema no te puedo ayudar...

grabale este archivo al pic para descartar error de compilacion...


----------



## tlaloc (May 2, 2012)

mira asi lo tngo configurado o mis conexiones


----------



## lubeck (May 2, 2012)

quita la resistencia de 100 al MCLR, y si pusiste los leds sin una resistencia limitadora de 220 Ohms en serie, probablemente ya se daño el pic en esos puertos o los leds....


----------



## tlaloc (May 2, 2012)

mmmmmmmm ya quite la resistencia
pero pues el pic esta bien pues el programador si me lo detecta bien en el pickit2
y los leds si tienen resistencias de 220 ohms,solo que no ce me hixo necesario ponercelos en proteus


----------



## lubeck (May 2, 2012)

ok.. lo simule y funciona perfecto..... 

por ahora ya es tarde pero mañana grabo un pic y lo armo solo por curiosidad pero deberia funcionar...


----------



## tlaloc (May 2, 2012)

mira quiero probar este



@ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off

CMCON=7
TRISA=0
TRISB=0
INICIO:
TRISA=%01010101
TRISB=%1010101
PAUSE 100
TRISA=0
TRISB=0
PAUSE 50
GOTO INICIO
end 


pero no me funciona en el pic


----------



## lubeck (May 2, 2012)

Prueba asi...


```
@ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off

CMCON=7
TRISA=0
TRISB=0
INICIO:
[COLOR="Red"]PortA=%01010101
PortB=%1010101[/COLOR]
PAUSE 1000
[COLOR="red"]PortA=0
PortB=0[/COLOR]
PAUSE 50
GOTO INICIO
end
```

El tris es solo para configurar los puertos, para establecer el estado del puerto se utiza el Port...

como lo tienes tu no deberia hacer nada y lo esta haciendo bien si dices que no hace nada


----------



## tlaloc (May 2, 2012)

se te agradece mucho la ayuda por fin pude compilar sin errores y garxias a ti me logro funcionar en el pic y placa..........
muchas gracias..........


----------



## tlaloc (May 6, 2012)

DISCULA LUBECK PERO NECESITO TU AYUDA CON UN CONTADOR............
NO PUEDO HACER QUE ME APARESCAN AL MISMO TIEMPO LOS DIGITOS CON 4 DISPLAY......

como puedo calcular el tiempo para que pueda aparecer los digitos al mismo tiempo ..


cmcon=7 ;convierte todo el puerto A en digital
trisb=0 ;convierte todos los pines del puerto B en salidas
trisa=0 ;convierte todos los pines del puerto A en salidas
x VAR BYTE ;crea la variable x con un tamaño de 255



texto:
FOR x=1 TO 20 ;repeticiones de este segmento
porta=14 ortb=8 ;pA%1110 y pB%0001000 forma la letra A
GOSUB TTL
porta=13 ortb=71 ;pA%1101 y pB%1000111 forma la letra L
GOSUB TTL
porta=11 ortb=64 ;pA%1011 y pB%1000000 forma la letra O
GOSUB TTL

porta=7 ortb=9 ;pA%0111 y pB%0001001 forma la letra H
GOSUB TTL
NEXT
FOR x=1 TO 20 ; repeticiones de este segmento
porta=14 ortb=127 ;pA%1110 y pB%1111111 apaga el display
GOSUB TTL
porta=13 ortb=8 ;pA%1101 y pB%0001000 forma la letra A
GOSUB TTL
porta=11 ortb=71 ;pA%1011 y pB%1000111 forma la letra L
GOSUB TTL
porta=7 ortb=64 ;pA%0111 y pB%1000000 forma la letra O
GOSUB TTL

NEXT
FOR x=1 TO 20 ; repeticiones de este segmento
porta=14 ortb=9 ;pA%1110 y pB%0001001 forma la letra H
GOSUB TTL
porta=13 ortb=127 ;pA%1101 y pB%1111111 apaga el display
PAUSE 256
GOSUB TTL
ortb=8 ;pA%1011 y pB%0001000 forma la letra A
GOSUB TTL
porta=7 ortb=71 ;pA%0111 y pB%1000111 forma la letra L
GOSUB TTL
NEXT
FOR x=1 TO 20 ; repeticiones de este segmento
porta=14 ortb=64 ;pA%1110 y pB%1000000 forma la letra O
GOSUB TTL
porta=13 ortb=9
GOSUB TTL
porta=11 ortb=127 ;pA%1011 y pB%1111111 apaga el display
PAUSE 256
porta=7 ortb=8 ;pA%0111 y pB%0001000 forma la letra A
GOSUB TTL
NEXT
FOR x=1 TO 20 ; repeticiones de este segmento
porta=14 ortb=71 ;pA%1110 y pB%1000111 forma la letra L
GOSUB TTL
porta=13 ortb=64 ;pA%1101 y pB%1000000 forma la letra O
GOSUB TTL
porta=11 ortb=9 ;pA%1011 y pB%0001001 forma la letra H
GOSUB TTL
porta=7 ortb=127 ;pA%0111 y pB%1111111 apaga el display
GOSUB TTL
NEXT
GOTO texto

TTL
PAUSE 5
RETURN

END


----------



## lubeck (May 6, 2012)

podrias subir el esquema que estas utilizando...


----------



## tlaloc (May 6, 2012)

mira este es ................
 lo que pasa qeu todos me aparacen al mismo tiempo.....


----------



## lubeck (May 6, 2012)

al pause aumentale mas... ponle PAUSE 50...

aunque si lo estas simulando nada mas, ni remotamente va a ser lo mismo en la realidad...

de cualquier manera sube el archivo en proteus para simularlo yo tambien y ver de lo que estas hablando...


----------



## tlaloc (May 6, 2012)

mm
mejor subo el tiempo y te ensenio un video.......
esperame un momento


----------



## lubeck (May 6, 2012)

es mas facil si lo empacas en un archivo rar y adjuntas el archivo no?


----------



## tlaloc (May 6, 2012)

mira aqeui esta



mira aqui en placa............
lo qeu quiero es qeu me salga una letra por display pero me salen al mismo timepo y en los 4 displays

http://www.youtube.com/watch?v=DvLEQq1Z5so&feature=youtu.be


----------



## lubeck (May 6, 2012)

prueba con este archivo de proteus...

le puse un transistor generico PNP, puesto que no estas ponieno la resistencia limitadora, ni la resistencia en la base del transistor...


----------



## tlaloc (May 6, 2012)

disculpa pero si en mi placa si se las puse 
en base les puse resistencias de 1 k.........

el archivo q me distes si lo agarrra bien pero mira el video o link y veras q no



la resistencias de la base del transistor se las cambie por 1k
 y las del display por 100 y use transistores bc547


----------



## lubeck (May 6, 2012)

y si empiezas por un simple hola... prueba esto...

```
@ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off

cmcon=7 ;convierte todo el puerto A en digital
trisb=0 ;convierte todos los pines del puerto B en salidas
trisa=0 ;convierte todos los pines del puerto A en salidas
x VAR BYTE ;crea la variable x con un tamaño de 255



texto:
 FOR x=1 TO 20 ;repeticiones de este segmento
  porta=14 :portb=8 ;pA%1110 y pB%0001000 forma la letra A
  Pause 10
  porta=13 :portb=71 ;pA%1101 y pB%1000111 forma la letra L
  Pause 10
  porta=11 :portb=64 ;pA%1011 y pB%1000000 forma la letra O
  pause 10
  porta=7 :portb=9 ;pA%0111 y pB%0001001 forma la letra H
  pause 10
 NEXT
GOTO texto

END
```


----------



## tlaloc (May 6, 2012)

oye me hace lo mismo q el video



http://www.youtube.com/watch?v=jKQlEw13kmg&feature=youtu.be



disculpa pero no crees q sean por los transistores


----------



## lubeck (May 6, 2012)

Creo que esta mal definido el puerto A...

prueba esto y deja lo sigo simulando ....


```
texto:
 FOR x=1 TO 20 ;repeticiones de este segmento
 
  portb=9:porta=1:  ;pA%0111 y pB%0001001 forma la letra H
  pause 1500
  portb=64:porta=2 ;pA%1011 y pB%1000000 forma la letra O
  pause 1500 
  portb=71:porta=4  ;pA%1101 y pB%1000111 forma la letra L
  Pause 1500  
  portb=8:porta=8  ;pA%1110 y pB%0001000 forma la letra A
  Pause 1500 
 NEXT
GOTO texto
```


----------



## tlaloc (May 6, 2012)

mira este es mi dicenio en placa


----------



## lubeck (May 6, 2012)

Mmm es un NPN o un PNP, si es NPN el emisor va a tierra no a positivo...


----------



## tlaloc (May 6, 2012)

disculpa si me funciona...........
pero salen de 1 por uno y lo q necesito es q salgan al mismo tiempo

es un npn es el bc547.........
pero pues lo estoy mandando a posistivo.....
 ya q uso displays anodo comun


----------



## lubeck (May 6, 2012)

bajale el pause a 10 o 20 mS, o ajustale...



tlaloc dijo:


> disculpa si me funciona...........
> pero salen de 1 por uno y lo q necesito es q salgan al mismo tiempo
> 
> es un npn es el bc547.........
> ...


no me gusta eso del NPN con el emisor a Positivo...  revisalo...


----------



## tlaloc (May 6, 2012)

pues no lo habia notado la verdad...............pero pues me recomenadorn usar ese...............deja lo cheko......pero si me funciona el programa aunqeu 1 por uno


----------



## lubeck (May 6, 2012)

si le bajaste el pause a todos los pauses a unos 10mS o menos o mas nose...


----------



## tlaloc (May 6, 2012)

le puse a 150 us y me salen de uno x uno deja le bajo mas.......


----------



## lubeck (May 6, 2012)

150 uS o 150 mS????

ponle unos 10 mS(milisegundos).. no uS(microsegundos)


----------



## tlaloc (May 6, 2012)

mira si me aparecen al mismo tiempo  pero no es constante...........
se nota qeu estan parpadeando..........

http://www.youtube.com/watch?v=3tyk0EesrbM&feature=youtu.be


----------



## lubeck (May 6, 2012)

bajale menos tiempo a unos 5mS o menos ... hasta que se quite ese parpadeo...

si le bajas mucho tiempo se va a empezar a atenuar.... asi que le tienes que buscar el tiempo justo...


----------



## tlaloc (May 6, 2012)

ya encontre el tiempo correcto
le puse 3 us y si se mantiene bien......

gracias por la ayudad............
hora tratare de hacer uno mas con los tips que me distes.........

de antemano se te agradece muxo.......


----------



## tlaloc (May 7, 2012)

Disculpa lubeck ,,pero necesito de nuevo tu ayuda ,,

estas vez para hacer un contador del 0 al 9999 ascendente y descendente con 2 puch boton...........


----------



## tesoro85 (Abr 28, 2014)

Hola, ayúdenme por favor.
Estoy queriendo compilar en microcode con @ Device PIC16F628A 
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off

Pero primero me salía error, luego leí en el foro y desactive el mpsl algo así, pero luego me salió que no es la versión correcta.

Adjunto el esquema y el código en microcode.


----------



## D@rkbytes (Abr 28, 2014)

tesoro85 dijo:


> Hola, ayúdenme por favor.
> Estoy queriendo compilar en microcode con @ Device PIC16F628A
> Pero primero me salía error, luego leí en el foro y desactive el mpsl algo así, pero luego me salió que no es la versión correcta.


¿Podrías explicar mejor cual es el problema de compilación que tienes?

Si puedes sube alguna foto con el error, porque tu código me compila sin problemas.


----------



## tesoro85 (Abr 30, 2014)

Hola amigo, gracias por responder.
Me dijeron q*ue* es el compilador, pero no sé como configurar para que me compile.
Me sale este error.


----------



## D@rkbytes (Abr 30, 2014)

tesoro85 dijo:


> Me dijeron q*ue* es el compilador, pero no sé como configurar para que me compile.


Ese error se debe a que estás compilando usando MPASM.
Si no vas a compilar un PIC18 ve al menú *View* / *Compile and Program Options...*
Ahí encontrarás una pestaña que dice: *Assembler*
Verifica que no esté seleccionado el CheckBox que dice *Use MPASM*

Para compilar usando MPASM se debe omitir la palabra de configuración y editar los archivos *.INC correspondientes.
Esto ya lo traté en otro tema pero no recuerdo en cual.
Si compilas sin la palabra de configuración, los fuses los puedes agregar con el programa que uses para grabar el PIC.

Suerte.


----------



## tesoro85 (May 1, 2014)

O sea, ¿sólo le reviso eso y en el compilador cambio algo?
¿Me puedes ayudar con unas fotos o algo amigo? Por favor te lo ruego porq*ue* es para mi tesis y ya voy una semana buscando. Eres mi única salvación.

Porq*ue *le quito eso y me sale otra pantalla diciendo que es para 32bits por favor te lo ruego ayúdame a configurar eso.


----------



## D@rkbytes (May 1, 2014)

tesoro85 dijo:


> Porq*ue *le quito eso y me sale otra pantalla diciendo que es para 32bits


¿Estás usando Windows a 64 Bits?
Si es así, mira por aquí: *Como se puede compilar en picbasic pro en windows de 64 bits*

Estas son las advertencias y errores que tienes.



Dónde dice: *Warning[207] Found label after column 1*. *[DEVICE]*
No es importante pero elimina esas partes de tu código.

Dónde dice: *Error[122] Illegal opcode [PIC16F628A]*
Son los errores que no te dejan compilar.

Esas líneas del código que te generan los errores son parte de la palabra de configuración.
Cómo estás compilando usando MPASM el compilador no reconoce esas líneas y debes quitarlas.

Si haces esto el programa al compilar tendrá la palabra de configuración que tomará del archivo 16F628A.INC.
En el post que te mencioné se describe la forma de modificar ese archivo *.INC para modificar los fuses.

Si no sabes que palabra de configuración debe llevar tu programa o no tienes idea de como modificar la palabra de configuración en lenguaje ensamblador, dime y te puedo modificar el archivo 16F628A.INC para que lo copies dentro de la carpeta PBP y puedas compilar con los fuses adecuados.

Esto es en el caso de que estés usando Windows a 64 Bits.

Saludos y no te desesperes. ​


----------



## tesoro85 (May 1, 2014)

Q*ue* buena persona amigo. *¿*Entonces cual es la palabra de configuración*?* Eso no lo entendí bien.



Sí, si tengo de 64 bits.


----------



## D@rkbytes (May 1, 2014)

tesoro85 dijo:


> Sí, si tengo de 64 bits.


OK.


tesoro85 dijo:


> *¿*Entonces cual es la palabra de configuración*?* Eso no lo entendí bien.


Esta que pusiste anteriormente...
@ Device Intrc_Osc 
@ Device Protect_Off 
@ Device WDT_Off 
@ Device Pwrt_Off 
@ Device MCLR_On 
@ DEvice BOD_Off 
@ Device LVP_Off 
@ Device CPD_Off

Y ahora tomado esos valores como referencia, esta será la palabra de configuración para el archivo 16F628A.INC.

__config _FOSC_INTOSCIO & _WDT_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF

Entonces ahora debes eliminar de tu código las líneas que te producen error.
Como también tienes advertencias por la palabra de configuración, no tiene caso que las dejes.

En la palabra de configuración que pusiste tienes Pwrt_Off, pero te recomiendo que ese fuse esté en ON y así lo declaré en la nueva palabra de configuración.

Te adjunto el archivo *.INC que debes copiar para sustituir el que ya existe o editarlo con esa palabra.
La carpeta dónde debes tener ese archivo es por lo regular en C:\PBP (Busca esa carpeta en tu sistema)

Nota:
Cómo el archivo 16F628A.INC estará editado, con esa palabra de configuración siempre se compilará ese PIC.
Así que si requieres otro tipo de configuración, deberás editarlo nuevamente.

Suerte.


----------



## tesoro85 (May 1, 2014)

YA amigo le hice todo le remplace todo me descargue eso del .inc ya lo puce tambien , pero al  compilar me sale esto


----------



## D@rkbytes (May 1, 2014)

Te dije que quitaras la palabra de configuración del código.
Sigues teniendo esta:
*@ __config _XT_OSC &  _WDT_ON  & _MCLRE_ON & _LVP_OFF & _CP_OFF

*Esa también es una palabra de configuración pero escrita para lenguaje ensamblador.
Eliminala también porque el error que ahora te muestra es porque se está reescribiendo la dirección 0x2007 que es donde se alojan los bits de la palabra de configuración y ya están declarados dentro del archivo 16F628A.INC.

Esa parte sin el *@* (ASM) va dentro del archivo 16F628A.INC que fue el que se modificó, pero debes tener en cuenta cual es la palabra de configuración correcta que quieres usar, porque ahora  tienes esta:

*_XT_OSC* = Oscilador a cristal hasta 4MHz.
*_WDT_ON* = Watch Dog Timer activo.

Aunque me parece que con la palabra de configuración con oscilador interno como deje el archivo *.inc te debe funcionar bien el programa que estás usando.
Prueba quitando esa parte de tu código y dale una leída a este documento: *Significado de los Fuses*.

Espero que haciendo eso ahora si puedas compilar tu programa.

Suerte.


----------



## tesoro85 (May 1, 2014)

ok gracias amigo de verdad , por tu paciencia, con todo te informo , entonces en el microcode no le pongo nada solo le compilo ??


----------



## D@rkbytes (May 1, 2014)

tesoro85 dijo:


> ¿Entonces en el microcode no le pongo nada, solo le compilo?


Sip, elimina la palabra de configuración de tu código y presiona la tecla F9 (Sólo Compilar)

Si llegas a tener más problemas no dudes en comentarlos.


----------



## tesoro85 (May 1, 2014)

ya me salio amigo muchisimas gracias uff me salvaste la vida un 10 pa la paguina eres grande amigo


----------



## tesoro85 (May 30, 2014)

hola amigo como estas , pero ya lo hago y al rato de probar en el proto no sale sollo se prende el lcd

hola amigo como estas , pero ya lo hago y al rato de probar en el proto no sale sollo se prende el lcd



hola amigo armo en el proto pero no me sale solo se prende el lcd


----------



## D@rkbytes (May 30, 2014)

Revisa bien tus conexiones y escribe un programa sencillo para hacer una prueba de escritura.
Si ya puedes compilar el código de la forma que te mencioné, no debes problemas para hacer funcionar la pantalla.

Suerte.


----------



## tesoro85 (May 30, 2014)

Osea de lado si se ve pero se escribe solito la clave y corrw el programa por si.solp


----------



## D@rkbytes (May 30, 2014)

Eso ya es otra cosa, tienes que corregir tu programa para que eso no ocurra.
La forma como estás realizando la comparación de la clave no es adecuada.
También tienes que corregir la forma para la detección de error de clave.

Busca ejemplos sobre cerraduras con PICBasic en el Foro para que te puedas dar una idea de como hacerlo.
Por ejemplo: _*Cerradura con PIC16F877 en PICBasic*_
Existen más ejemplos aparte de ese con los cuales te puedes orientar para realizar correctamente el tuyo.

Suerte.


----------



## tesoro85 (May 30, 2014)

Eso no lo entiendo*.*
*¿M*e podr*í*as ayudar en eso*?* *¿C*ómo lo corri*j*o*?*
*S*olo eso ne*c*e*s*ito. *P*or fa*vor.*


----------



## D@rkbytes (May 30, 2014)

tesoro85 dijo:


> Eso no lo entiendo*.*


Por eso te dije que miraras ese ejemplo o que busques los que existen en el Foro.


tesoro85 dijo:


> *¿M*e podr*í*as ayudar en eso*?*


Sip, por eso te mencioné ese ejemplo.


tesoro85 dijo:


> *¿C*ómo lo corri*j*o*?*


Cambiando la forma como lo estás haciendo.

Mira ahora este otro ejemplo, te ayudará bastante.
*clave de acceso*


----------



## tesoro85 (May 30, 2014)

claro porq en ´proteus sirve perfect pero en en el proto ya pongo y la cable se escribe sola entoces solo ese es mi problema



el que me pasaste amigo el ultimo me lei pero tienen fallos casi iguales .. solo ayudame en eso a ver como hag


----------



## torres.electronico (May 31, 2014)

tesoro85 dijo:


> claro porq en ´proteus sirve perfect pero en en el proto ya pongo y la cable se escribe sola entoces solo ese es mi problema
> 
> 
> 
> el que me pasaste amigo el ultimo me lei pero tienen fallos casi iguales .. solo ayudame en eso a ver como hag



Eso puede llegar a ser problema de tus conexiones en el protoboard u la fuente... que estas implementando para alimentar el circuito? Decime que no estas usando un cargador de telefonos u alguna otra cosa rara que no sea bien filtrada y estable


----------



## tesoro85 (May 31, 2014)

No.. si  es una estable

Pero se escribe solita la clave


----------



## D@rkbytes (May 31, 2014)

tesoro85 dijo:


> Pero se escribe sólita la clave


Realicé algunos cambios a tu programa.
.- Modifiqué los pines para la pantalla.
.- Eliminé las resistencias pull-up externas para utilizar las internas del puerto B.
.- Agregué y quité algunos retardos.
.- Cambié el pin de salida en donde tenías conectado el LED.
.- Tal vez otras cosas que no recuerdo, pero mira y compara los dos códigos.

El programa está funcionando sin que se escriba sola la clave y adjunto algunas fotos de las pruebas realizadas.
También adjunto el programa con las modificaciones que realicé y la simulación en proteus 7 y 8.

Notas:
Para las pruebas utilicé un teclado matricial 4x4 pero sin conectar la cuarta columna.
Monta el circuito como está ahora y si sigues teniendo problemas, revisa bien las conexiones.
Recuerda que ahora debes grabar el PIC con este programa.

Suerte.


----------



## tesoro85 (Jun 1, 2014)

muchas gracas en verdad eres una exelente persona ayudando a los demas gracias amigo lo voy a probar


----------



## tesoro85 (Jun 1, 2014)

Ya amigo, ya lo armé y todo pero tengo un problema, solo se pone la clave correcta después de 5 o 4 intentos y cuando pongo la segunda configuración me sale lo mismo, tecla incorrecta, hola y se prende el led :/
Lo grabé con el pickit 2 con el oscilador interno.


----------



## D@rkbytes (Jun 1, 2014)

Pues a mi no me sucede lo que mencionas, por eso realicé pruebas físicamente y subí fotos del funcionamiento.
No tiene un funcionamiento óptimo por la forma en que está realizado el programa, pero funciona y no presenta nada de lo que mencionas ahora.

Ya se te dijo que revises bien las conexiones y que la fuente de alimentación este bien filtrada y regulada a 5V.
Coloca un capacitor de 100nF en el pin 14 (VDD) y otro de 470µF o 1000µF en el circuito.
Como no podemos ver cómo y con qué lo estás armando ya no tengo más sugerencias.

Suerte.


----------



## tesoro85 (Jun 1, 2014)

Ok amigo, lo voy hacer.
Una última pregunta. *¿*Con q*ué* programa lo grabas*?*
Tal vez sea eso. *¿*Cómo ajusto todo en aquel programa*?*


----------



## D@rkbytes (Jun 1, 2014)

tesoro85 dijo:


> *¿*Con q*ué* programa lo grabas*?* Tal vez sea eso.


No creo que el problema que tienes se deba al programador que estás usando.
Si logras grabar el PIC y el programa se ejecuta, quiere decir que tu programador funciona.

Para grabar el PIC16F628A utilizo el *WinPic800* con el *JDM Programmer*


tesoro85 dijo:


> *¿*Cómo ajusto todo en aquel programa*?*


Si te refieres al PICkit2, mira por aquí: *PICkit2 Documentation & Software*
O también por aquí: *Programador de microcontroladores PIC y memorias por puerto USB PICKIT2 CLONE*


----------



## banistelrroy (Jun 27, 2016)

Hola a todos*.* *M*uchachos*,* tengo un problema similar al de deimos1000 y tlaloc*.*
*R*esulta que tenía un PIC16F628A y trabajaba muy bien antes,  pero ahora no funciona por nada....
*E*l circuito es el básico de un *LED* intermitente y el código similar*.*

*E*s más*,* sé que ese ejemplo es del libro PICBasic de Reyes, pero mi PIC no funciona por nada*.*
*C*ompr*é* 2PIC[/SIZE]16F628A nuevos y nada.......

Estoy *usando* Micr*o*Code estudio Plus*,* *de* compilador instal*é* el PBP y una carpeta de MPLAB*.**E*stoy usando el esquema básico sin oscilador*,* sólo 5 V, su tierra*,* una resistencia con un LED en la salida y nada...

*T*engo Windows 8 de 64 bits y el código es similar al que inicialmente tuvo deimos 1000 y tlaloc*.*

*P*or-fa*v*or*,* necesito ayuda*.*


----------



## D@rkbytes (Jun 27, 2016)

¿Qué programador estás usando?
Mencionas que el PIC no funciona, ¿pero cuál es el problema?
¿Qué hace o qué no hace?
¿El compilador o el programador muestra o errores?

Adjunta el programa que estás usando, porque puedes tener problemas con la palabra de configuración.


----------



## banistelrroy (Jun 29, 2016)

Bueno, leí todo el tema y al parecer es que estoy compilando usando MPASMWIN520.

Al comienzo el PIC no funciona con ningún ejemplo porque no configuraba los fuses y creo que MicroCode graba con oscilador externo y yo lo estaba montando sin oscilador, o sea, que funcione el interno, ahora sé que por eso el PIC no funcionaba.

1. Ahora necesito compilar programas configurados con el uso de oscilador interno, o sea, sin usar el cristal de 4 MHz.

2. Uso MicroCode Studio Plus 4.0, PBP 2.60, MPASMWIN520 y Windows 8.1 de 64 bits.
Creé una carpeta llamada PBP ejercicios cerca a la carpeta PBP para que no genere error de dirección larga al compilar y guardar el hex, todo esto en la unidad C .

3. Ayuda en cómo configurar los fuses desde el Microcode introduciendo la configuración compatible con MPASM, o otra forma que se pueda.

4. Estoy implementado un contador de pulsos con 3 entradas y visualización por LCD 16x2.


```
' DEFINICIÓN DE REGISTROS PARA EL LCD
Define LCD_DREG PORTB 'Utilizar 4 bits del puerto B para tx de datos
Define LCD_DBIT 4     'Desde el Bit B.4 al Bit B.7
Define LCD_RSREG PORTB'Selección del puerto del registro 
Define LCD_RSBIT 3    'En el bit B.1
Define LCD_EREG PORTB 'Utilizar el enable en el puerto B
Define LCD_EBIT 2     'En el bit B.2

CMCON = 7 ;convierte en digitales el puerto A
trisb=0 ;hace salidas sólo los bits más bajos de Puerto B
numero1 VAR word ;crea la variable número con valor 255
numero2 VAR word
numero3 VAR word
bot1 VAR porta.0
bot2 VAR porta.1
bot3 VAR porta.2

pause 200
LCDOUT $FE, 1 ;limpiar pantalla LCD
LCDOUT $FE,$80,"GAN" ;cursor en el casillero 3 de la 1era línea
LCDOUT $FE,$86,"TROL" ;cursor en el casillero 3 de la 1era línea
LCDOUT $FE,$8C,"PUEN" ;cursor en el casillero 3 de la 1era línea
LCDOUT $FE,$C0, DEC numero1
LCDOUT $FE,$C6, DEC numero2
LCDOUT $FE,$CC, DEC numero3

contar1:
IF bot1=0 THEN aumentar1
contar2:
IF bot2=0 THEN aumentar2
contar3:
IF bot3=0 THEN aumentar3   
goto contar1

aumentar1:
IF bot1=0 THEN aumentar1
numero1=numero1 + 1
LCDOUT $FE,$C0, DEC numero1  
pause 200
goto contar2

aumentar2:
IF bot2=0 THEN aumentar2
numero2=numero2 + 1 
LCDOUT $FE,$C6, DEC numero2
pause 200
goto contar3

aumentar3:
IF bot3=0 THEN aumentar3
numero3=numero3 + 1 
LCDOUT $FE,$CC, DEC numero3
pause 200
goto  contar1
end
```
Hasta aquí me compila bien, pero como les repito, creo que escribiéndolo así funciona con oscilador externo y quiero configurar para que funcione el interno y cómo configurar el Master Clear y demás fuses.

Gracias de antemano.

Adjunté imágenes y agradezco infinitamente su ayuda.


----------



## Daniel Meza (Jun 29, 2016)

Hola
¿Con que programador grabas al PIC?, en el caso del PIckit 2 y sus clones la misma interfaz permite modificar los bits de configuración.


----------



## banistelrroy (Jun 29, 2016)

tengo 2 el pickit 2 original y grabo con su sofware original y un grabador pickit 2 clone que tambien grabo con su sofware original

este ultimo cuando trato de borrar el pic 16f628a no lo borra todo al chequear si esta en blanco sale un error con mensaje en rojo eso pasa con el pickit 2 clone con el original lo deja en blanco asumo que el por el grabador


----------



## Daniel Meza (Jun 29, 2016)

Bien, en el Pickit 2 hay una opción donde se puede configurar manualmente los bits que definen el tipo de oscilador a usar. Es cuestión de modificar esos bits. En la hoja de datos del respectivo micro en la sección "Configuration bits" están los valores que deben de tomar para configurar uno u otro oscilador.

Otra cosa, el problema que mencionas me suena a un problema con la entrada del voltaje de programación y VCC del micro. De igual forma el Pickit2 cuenta con la opción "Vpp first", con esto, el programador coloca VPP en MCLR antes de VDD, así se evita que el micro comience a ejecutar el programa cuando se está configurado el oscilador interno.

Este tema ya se ha tratado aquí en el foro y se dan otras alternativas.

Saludos


----------



## banistelrroy (Jun 30, 2016)

Gracias ya pude compilar y gracias por la ayuda .....configure de 2 formas modificado el archivo INC del pic dentro de pbp y desde el pickit 2


----------

