# [Problema] Pic simulator IDE y proteus.



## nicomatex (Dic 19, 2011)

Hola a todos. Tengo un pequeño problema a la hora de simular en proteus un programa hecho en pic simulator ide.

El codigo es el siguiente:


```
AllDigital

Define LCD_DREG = PORTB
Define LCD_DBIT = 4
Define LCD_RSREG = PORTB
Define LCD_RSBIT = 0
Define LCD_EREG = PORTB
Define LCD_EBIT = 1
Define LCD_BITS = 4
Define LCD_INITMS = 500

TRISB = 0
Lcdinit

loop:

Lcdout "HOLA"

WaitMs 2000

Lcdcmdout LcdClear

Lcdout "Adios"

WaitMs 2000

Lcdcmdout LcdClear
Goto loop
End
```

Cuando simulo el programa en el mismo pic sim ide, funciona de maravilla e incluso descargando el programa a un pic real y probando en protoboard funciona. El problema no es este programa en si, sino que necesito poder simular circuitos mas complejos , con otros componentes, y necesito usar proteus pero no me simula nada del pic sim ide. Estoy usando pic 16f628a , el esquema del circuito es el siguiente: 







Muchas gracias. Adios


----------



## Saint_ (Dic 19, 2011)

Hola, te olvidaste de conectar a tierra el pin RW del Lcd.


----------



## nicomatex (Dic 19, 2011)

Cierto, pero aun asi conectandolo y todo, no funciona.


----------



## Saint_ (Dic 20, 2011)

desafortunadamente no puedo coperarte mas, aparte de las conecciones al LCD.
En mi caso siempre a funcionado, pero yo trabajo en ascembler y C, tambien en Microbasic...


----------



## MVB (Dic 20, 2011)

Has configurado la velocidad del cristal para el pic en proteus?


----------



## ydroz (Dic 20, 2011)

Tal vez, configura el crystal a 4mHz. O tal vez tu proteus no simula , hay versiones que no simulan o tienen problemas te recomiendo la 7.7
Saludos


----------



## Cobain77 (Dic 23, 2011)

Hola.
El problema parece ser una cuestion de compatibilidad entre el PSI y el Proteus cuando se usa un LCD en configuracion de 4 bits, ya que si probas el mismo programa pero configurado en 8 bits, la simulacion corre perfecta.
Yo lo solucione, habriendo el programa en el que estaba trabajando, no en Basic, si no en Assembler, ya que se deven modificar algunas lineas para que la simulacion funcione correctamente.
Si entendes algo de Assembler, te paso alguna de las modificaciones que yo hice.


----------



## WUANEJO (Feb 2, 2012)

Holas amigos y amigas, apenas estoy empesando a estudiar la programacion del pic16f84 estoy usando el Pic Simulador IDE v6.65, pero tengo un problema con esta linea:
#DEFINE BANCO1 BSF OPTION,RP0, segun el simulador no es una instruccion válida, a que se deberá este problema el simulador es muy pobre? o yo estoy cometiendo algun error:


;************************************
;* El siguiente programa configura                    *
;* RA1 como entrada y RA0 como                  *
;* salida y hace que la salida (RA0)                  *
;* sea la inversa de la entrada                           *
;* (RA1)                                                          *
;************************************
Estatu_s  EQU   03H
TRIS_A    EQU   05H
PORT_A    EQU   05H
;*************************************
#DEFINE BANCO1 BSF OPTION,RP0 
#DEFINE BANCO0 BCF OPTION,RP0 
reset	org	0x00   ;equivale a ORG 00H Empezamos siempre a escribir en esta dirección
BANCO1                 ;Pasamos al banco 1 para hacer algunas configuraciones
        BCF    TRIS_A,0                         ;Configuramos RA0 como salida
        BSF    TRIS_A,1                         ;Configuramos RA1 como entrada
BANCO0                                              ;Volvemos al banco 0
INICIO  BTFSC  PORTA,1   ;Comprueba la entrada (RA1), si es "0" se salta la siguiente instrucción
        GOTO   ESUNO           ;si la entrada (RA1) es "1" va a ESUNO
        BSF    PORTA,0         ;Pone a "1" la salida RA0. Ejecuta esta instrucción porque la entrada RA1 era "0"
        GOTO   INICIO          ;Vuelve otra vez a comprobar el estado de la entrada RA1
ESUNO   BCF    PORTA,0     ;Pone a "0" la salida RA0. Ejecuta esta instrucción porque la entrada RA1 era "1"
        GOTO   INICIO          ;Vuelve otra vez a comprobar el estado de la entrada RA1
END                     ;Indica final del programa


----------



## D@rkbytes (Feb 2, 2012)

WUANEJO dijo:


> Holas amigos y amigas, apenas estoy empesando a estudiar la programacion del pic16f84 estoy usando el Pic Simulador IDE v6.65, pero tengo un problema con esta linea:
> #DEFINE BANCO1 BSF OPTION,RP0, segun el simulador no es una instruccion válida, a que se deberá este problema el simulador es muy pobre? o yo estoy cometiendo algun error:


Me supongo que te advierte que no es valida porque así no se definen los bancos.
Prueba con esto:
#DEFINE BANCO1        BSF     STATUS,RP0      ;ELIJO AL BANCO 1
; Lo mismo para el Banco 0
#DEFINE BANCO0        BCF     STATUS,RP0      ;ELIJO AL BANCO 0
; O simplemente así:
        BSF     STATUS,RP0      ;ELIJO AL BANCO 1
        BCF     STATUS,RP0      ;ELIJO AL BANCO 0


----------



## WUANEJO (Feb 4, 2012)

gracias por responder, pero no funciona

mejor voy a tratar de suprimir esa instruccion por EQU


----------



## D@rkbytes (Feb 4, 2012)

WUANEJO dijo:


> gracias por responder, pero no funciona
> 
> mejor voy a tratar de suprimir esa instruccion por EQU


Ok. Saludos.
Mira, si funciona como te mencione, pero compilando con MPASMWIN
Ya que al parecer el PIC Simulator IDE no entiende esas instrucciones.
Te recomiendo que mejor edites y compiles con MPLAB (Es gratuito) desde la pagina de Microchip
Para usar el compilador MPASMWIN con el editor Assembler del PIC Simulator IDE
Ve al menú Tools y selecciona Assemble With MPASMWIN o presiona la tecla F9


Si no lo tienes configurado, te aparecera una ventana que te pide localizar el ejecutable MPASMWIN.exe
No se como piensas sustituir con EQU esas instrucciones, pero como te indique funciona.
Dejo aqui tu programa compilado con el metodo y las instrucciones necesarias de código
para compilarlo con MPASMWIN. Como yo no uso el PIC Simulator IDE para simular,
genere un archivo de simulación pero en ISIS para verificar si funcionaba tu programa.
Y si funciona 
Suerte y hasta luego.


----------



## D@rkbytes (Feb 5, 2012)

La opción mas simple para ahorrarse la definición de registros es usar el respectivo archivo *.inc
Y de esa forma el código se reduce bastante y con menos posibilidad de errores.
Resalto con azul las líneas agregadas para tal cambio.

```
[COLOR=Blue]list      p=16F84A
    #include <p16F84A.inc>
    __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC[/COLOR]
;*************************************
RESET org 0x00        ;Equivale a ORG 00H
            ;Empezamos siempre a escribir en esta dirección
    BSF STATUS,RP0    ;Pasamos al banco 1 para hacer algunas configuraciones
    BCF TRISA,0    ;Configuramos RA0 como salida
    BSF TRISA,1    ;Configuramos RA1 como entrada
    BCF STATUS,RP0    ;Volvemos al banco 0
INICIO BTFSC PORTA,1    ;Comprueba la entrada (RA1), si es "0" se salta la siguiente instrucción
    GOTO ESUNO    ;si la entrada (RA1) es "1" va a ESUNO
    BSF PORTA,0    ;Pone a "1" la salida RA0. Ejecuta esta instrucción porque la entrada RA1 era "0"
    GOTO INICIO    ;Vuelve otra vez a comprobar el estado de la entrada RA1
ESUNO BCF PORTA,0    ;Pone a "0" la salida RA0. Ejecuta esta instrucción porque la entrada RA1 era "1"
    GOTO INICIO    ;Vuelve otra vez a comprobar el estado de la entrada RA1
    END        ;Indica final del programa
```


----------



## WUANEJO (Feb 7, 2012)

Mi duda solo era si funcionaba la instruccion o no, pero veo que la respuesta es no. Asi que Intentare migrar a otro simulador me gusta Simulador Ide porque es fácil de usar, pero ya es hora de abandonar el nido y migrar. muchas gracias por la ayuda.


----------



## WUANEJO (Feb 16, 2012)

Gracias, por tus consejos DARKBYTES ahora probe con Isis proteus, creeme es fantastico, reconoce todas las instrucciones, no tengo que suprimir nada. mil gracias. 
saludo de retalhuleu guatemala.


----------



## D@rkbytes (Feb 16, 2012)

WUANEJO dijo:


> Gracias, por tus consejos DARKBYTES ahora probe con Isis proteus, creeme es fantastico, reconoce todas las instrucciones, no tengo que suprimir nada. mil gracias.
> saludo de retalhuleu guatemala.


  Bien pues, de nada, es grato poder haber ayudado.
Ahora que ya conoces Proteus, podrás dejar volar más tu imaginación.
Proteus es muy bueno para simular microcontroladores, y varias cosas más.
Pero no te dejes llevar mucho por lo que muestra, a veces no son confiables sus resultados.
Te servirá mucho para saber que hará tu programa de forma grafica.
Pero siempre es mejor un protoboard o una tarjeta entrenadora.
  Suerte y hasta luego.
PD. Saludos desde México


----------



## anicastro (May 10, 2012)

Estimados; soy principiante en PICs. Y me gustaría saber porqué en PIC Simul IDE, el fuente más simple de entrada-salida no me funciona. El siguiente no me anda:

AllDigital
TRISA = %11111111
TRISB = %00000000
loop:
PORTA.1 = PORTB.4
Goto loop

Mientras que el siguiente, que hace lo mismo pero es más elaborado, sí anda:


AllDigital
TRISA = %11111111
TRISB = %00000000
loop:
If PORTA.1 = 1 Then
	PORTB.4 = 1
Else
	PORTB.4 = 0
Endif
Goto loop

Saludos a todos.


----------



## Eduardo (May 10, 2012)

Estás haciendo la asignación al revés, y encima al ser PORTA entrada y PORTB salida no cambia nada.

Debe ser :  PORTB.4 = PORTA.1


----------



## anicastro (May 10, 2012)

Perfecto, te agradezco


----------



## anicastro (May 14, 2012)

Hago otra consulta. Tengo el siguiente enclavamiento, que en PIC Simullator IDE (PIC16F628A) anda perfecto:

AllDigital
TRISA = %11111111
TRISB = %00000000
loop:
If PORTA.1 = 1 Then PORTB.4 = 1
If PORTA.0 = 1 Then PORTB.4 = 0
Goto loop

pero no anda en la protoboard: cuando le pongo 5V en PORTA.1 me manda 5V a PORTB.4; pero cuando pongo 5V en PORTA.0, en vez de llevarme PORTB.4 a 0V, me lo lleva a 2V. Además queda muerto el enclavamiento, sucesivos 5V en PORTA.1 ya no devuelven los 5V en PORTB.4 (queda clavado en 2V)
saludos y agradezco cualquier pista.


----------



## D@rkbytes (May 14, 2012)

anicastro dijo:


> Hago otra consulta. Tengo el siguiente enclavamiento, que en PIC Simullator IDE (PIC16F628A) anda perfecto:
> 
> AllDigital
> TRISA = %11111111
> ...


Saludos.
Me parece que AllDigital no esta haciendo bien su trabajo en ese PIC.
Prueba poniendo...
CMCON = 7

PD. Un detalle importante para RB4
Verifica que el fuse LVP se encuentre en OFF al momento de grabar el PIC

Suerte.


----------



## anicastro (May 16, 2012)

Probé varias de las opciones y sigue sin funcionar. No tengo del todo claro que esté pudiendo inhabilitar el LVP de RB4, pero no obstante renové el código para que la salida sea RB5, RB0, RB1 y RB2 sucesivamente y siempre tengo el mismo resultado: el enclavamiento me da 2V en la salida programada y queda fijo en esa situación. CMCON = 7 funciona pero no cambia el resultado. Otra cosa, estoy grabando el PIC con PicKit2. Si bien no salta ningún error en la grabación, ¿podrá ser el programa el que está generando problemas?. Y otra cosa más: PicKit2 tiene dos casilleros de verificación que los estoy dejando sin tildar porque no estoy seguro de su uso. Están dentro de un cuadro que se llama VDD PicKit 2, y son "On" y "/MCLR". ¿alguna idea de si la cosa puede tener que ver con esto?
Muchas gracias y saludos a todos


----------



## D@rkbytes (May 16, 2012)

Pues ni idea de si sea por lo que comentas del Pickit 2, pero no creo que sea por eso.
Yo arme el circuito físicamente y funciona tal cual lo escribiste usando AllDigital
y no tengo ese problema de caída de tensión a 2V en el puerto B
Yo use el programador JDM y el software WinPic800 para grabar el PIC
Lo único que note y es normal, es que quedan en 1 lógico algunos bits del puerto B
al no estar declarado PORTB = 0 al iniciar el programa, pero de ahí en fuera nada raro.
El programa lo compile con PIC Simulator IDE v6.83 y funciona normal físicamente.
Por ahí debes tener algo mal en tu fuente, en las conexiones, el protoboard o hasta el PIC.

Revisa bien todo y la conexión de RA5 (MCLR), porque no es por programación el problema.

Suerte.


----------



## robertosebastian92 (Jun 9, 2013)

aclaro que descubri que PSI para usar un LCD a 4 bits tiene un problema, la coneccion de los cuatro bits en el puerto (a,b,c,d,e) tiene que empezar del 0 al 3. Cosa que a mi criterio esto nunca funcionaria






Saludos espero te sirva


----------

