[Problema] Pic simulator IDE y proteus.

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:

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

35m1dsl.jpg


Muchas gracias. Adios
 
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...
 
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
 
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.
 
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
 
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
 
Última edición:
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
MPASMWIN.gif

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. :apreton:
 

Adjuntos

  • Compiled.gif
    Compiled.gif
    30.1 KB · Visitas: 18
  • WUANEJO.rar
    10 KB · Visitas: 39
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.
Código:
    [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
:apreton:
 
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.
 
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.
 
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
 
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.
 
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.
 
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.
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.
 
Última edición:
Atrás
Arriba