[Tutorial] y manejo de Proton IDE

ok mi este es de 16 los dos del final solo son para iluminar el led de la pantalla, este el potenciometro si lo coloco para regular la intencidad de las letras pero lo muevo para todos lados y no se mira nada este que otra cosa podra ser.
 
Con que frecuencia esta trabajando el oscilador interno del pic?, postea la simulacion, .hex y codigo fuente para mirar como trabajan los registros en la simulacion.

por otro lado intenta colocando a VDD el pin MCLR del pic con una resistencia de 10K

Cambiando la configuracion de coneccion del LCD en PortB y los pines de control en PortA ( E, Rs Rw) y en el programador que estes utilizando deshabilitar las resistencias internas del puerto B, sino es el PIC KIT 2.
 
Última edición:
ok vere de esa manera aver si si capea.. uso el WinPic800 con el pic prog 800,
este te mando el codigo .exe que le cargo al pic junto con el .bas aver que puedes encontrar. gracias....
 

Adjuntos

  • ProgZIP.zip
    776 bytes · Visitas: 436
Amigo configuraste el Oscilador Interno desde el software del Programador?, por ultimo añade estas linas al programa en la parte superior despues de configurar el LCD

OSCCON = %%01100110 'Se configura reloj interno a 4Mhz
TRISB = 0
TRISA=0


 
ok este lo configure en el PIC SIMULATOR IDE en el programa del programador no encuentro nada referente al osilador interno solo le cargo el .hex y lo monto en el
protoboard.

Muchisimas Gracias Viejon, eres atoda dar este parece que si faltaba eso no mas
con esas dos lineas que agrege trabajo al 100 y por fin me quite la espina parece que
valio la pena tanto estar aferrado y por supuesto molestarte demasiado, que se te agradece toda tu atencion mucho, no vivimos cerca si no te invitaba una noche de
parranda de la emocion jajaja MUCHAS GRACIAS AMIGO!!!!!!
 
Última edición:
Una pregunta mas amigo, este como saves cuando uno declara en waitms y pone 500 es igual a medio segundo verdad entonces por que yo si pongo esa cantidad puedo esperar horas y horas y no pasa nada por eemplo nunca parpadeara el led o si lo hara pero tardara mucho en cambio le pongo 1 y parpadea rapido le pongo 5 y un poco mas lento pero si pongo 1000 que se supone tiene que ser un segundo no lo hace y tarda mucho es por eso que le tengo que poner 1 o 2 o 3 cantidades pequenas para que pueda verse en lo fisico que lo aga,, alguna idea de por que sea eso...
 
Hola. Para utilizar el oscilador interno de un pic con protón utiliza este código:

Device 16F628A ' o cualquier otro PIC
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF

INTRC_OSC_NOCLKOUT activa el oscilador interno a su maxima frecuencia.

El resto de los "fusibles" los puedes localizar simplemente situando el cursor del ratón sobre la palabra "Config" y pulsa F1 que es la ayuda de protón y es muy, muy buena.

WDT_ON Enable the internal Watchdog timer.
WDT_OFF Disable the internal Watchdog timer.
HS_OSC Use a High-speed crystal (Xtals over 4MHz) .
XT_OSC Use a standard crystal (4MHz or under).
LP_OSC Use a low frequency crystal (KHz range).
PWRTE_ON Enable power up timer.
PWRTE_OFF Disable power up timer.
 
Amigo Jann para que no te pase eso debes definir el oscilador con el que trabajara el pic y su valor ya sea interno , o externo , ya que con esta frecuancia seleccionada realizara las operaciones el pic en tu caso 16f88 como siempre te invito a subir lo que realices para mirar como se te puede colaborar mejor.Por otro lado busca el la red El PROTON PLUS.

gracias por el aporte masd, podrias colocar un ejemplo aplicativo y su respetiva simulacion en proteus para todos los miembros del foro.
 
Última edición:
que tal compañeros del foro , disculpas si me adelanto al preguntar esto pero podrian explicarme el como funciona la instruccion o comando RESTORE ? lo que pasa es que estoy pasando un programa de proton a pic basic pro.

saludos ¡!
 
que tal creo que con lo que te explico y los ejemplo con otros comandos sabras como se utiliza el comando RESTORE

RESTORE

Restaurar el valor

Descripción general

Mueve el puntero en una tabla de datos a la posición especificada por el valor destrito

Operadores

Relación calidad - una constante, variable o expresión.
Ejemplo

DIM VAR1
DATA 5 , 8 , "fred" , 12
RESTORE
READ VAR1
' VAR1 ahora contendrá el valor 5
READ VAR1
' VAR1 ahora contiene el valor 8
RESTORE 3
' Puntero ahora colocado en la posición 4 en nuestro ejemplo es "r"
READ VAR1
'VAR1 ahora contiene el valor 114 es decir la 'r' carácter en decimal


La tabla de datos se define con los valores 5, 8, 102, 114, 101, 100,12 como "Fred" equivale a F: 102, I: 114, E: 101, d: 100 en decimal. El puntero de tabla es restituido de inmediato al inicio del programa. Esto no siempre es necesario, pero como regla general, es una buena idea para evitar que se desborde. La VAR1 lee el primer elemento de los datos de la tabla e incrementa el puntero de la tabla. El próximo VAR1 Leer considera por lo tanto el segundo punto de los datos.


RESTORE 3 desplaza el puntero a la ubicación de la tabla de sesiones (primera ubicación es la posición de puntero 0) en la tabla - en este caso donde la letra «r» es. Leer VAR1 ahora recupera el equivalente decimal de «r», que es de 114.


DATA

Sintaxis

DATA ( datos alfanuméricos )

Descripción general

Coloque la información en la memoria de código utilizando la instrucción RETLW cuando se utiliza con dispositivos de 14-bit y la memoria FLASH cuando se utiliza un dispositivo de 16-bit . Para el acceso de lectura.

Operadores

De datos alfanuméricos - un 8,16, valor de 32 bits, o valores en coma flotante, o de cualquier carácter alfabético o cadena entre comillas.

Ejemplo

DIM VAR1 AS BYTE
DATA 5, 8, "fred”, 12
RESTORE
READ VAR1 ' Variable VAR1 contiene el valor 5
READ VAR1 ' Variable VAR1 contiene el valor 8
' Puntero se coloca en la posición 4 en la tabla de datos "r"
RESTORE 3
' VAR1 contiene ahora el valor 114, es decir la 'r'
READ VAR1


La tabla de datos se define con los valores 5, 8, 102, 114, 101, 100,12 como "Fred" equivale a F: 102, I: 114, E: 101, d: 100 en decimal. El puntero de tabla es restituido de inmediato el inicio del programa. Esto no siempre es necesario, pero como regla general, es una buena idea para evitar que el contador de lectura se desborde.

La VAR1 leyó por primera vez, toma el primer elemento de los datos de la tabla e incrementa el puntero de la tabla. El próximo VAR1 Leer considera por lo tanto el segundo punto de los datos. RESTORE 3 mueve el puntero de la tabla a la ubicación de sesiones (primera ubicación es la posición de puntero 0) en la tabla - en este caso donde la letra «r» es. Leer VAR1 ahora recupera el equivalente decimal de «r», que es de 114.


Notas

Las tablas de DATA deben ser colocadas al comienzo del programa. Los intentos de leer más allá del final de la tabla pueden resultar en errores y resultados imprevisibles. Sólo una instancia de DATA se permite por el programa, sin embargo, puede ser de cualquier longitud. Si el contenido de la declaración alfanumérica DATA no cabe en una sola línea, una continuación de la información adicional debe ser colocada directamente debajo, utilizando otra declaración de datos:


DATA "HELLO "
DATA "WORLD"

Es el mismo:

DATA "HELLO WORLD"


LOOKUP


Sintaxis

Variable = LOOKUP Index , [ Constant { , Constant…etc } ]


Descripción general


Busque el valor especificado por el índice y lo almacena en la variable. Si el índice supera el valor más alto de los elementos de la lista, y luego la variable permanece sin cambios.


Operadores

Variable - una constante, una variable o expresión. Aquí es donde el valor recuperado será almacenado.
Índex - una constante o variable. Este es el número del artículo del valor a recuperar de la lista.
Constante (s) - cualquier valor de 8 bits (0-255). Un máximo de 255 valores puede ser colocado entre corchetes, 256 si se utiliza un dispositivo de núcleo de 16 bits.

Ejemplo

'Crear una animación de una línea de hilatura.

DIM INDEX as BYTE
DIM Frame as BYTE
CLS ' limpiar LCD
Rotate:
FOR INDEX = 0 TO 3 ' Crear un bucle de 4
Frame = LOOKUP INDEX , [ "|\-/" ] ' Tabla de caracteres
PRINT AT 1 , 1 , Frame ' Mostrar en LCD
DELAYMS 200 ' Tiempo para ver caracteres
NEXT ' Siguiente
GOTO Rotate ' Crea un Bucle Cerrado


Notas

Comienza por el valor índice de 0. Por ejemplo, en el comando de búsqueda abajo. Si el primer valor (10) Se requiere, entonces el índice será cargado con 0 y 1 para el segundo valor (20), etc

VAR1 = LOOKUP INDEX, [10, 20 , 30 ]



READ

Sintaxis

LEA variable

Descripción general

Lea el valor siguiente de una tabla de datos y el lugar en la variable

Operadores

Variable - una variable definida por el usuario de tipo bit, byte, matriz de bytes, palabra, palabra matriz, DWORD o flotar.

Ejemplo 1


DIM VAR1 AS BYTE
DATA 5, 8, "fred”, 12
RESTORE
READ VAR1 ' Variable VAR1 contiene el valor 5
READ VAR1 ' Variable VAR1 contiene el valor 8
RESTORE 3 ' Puntero se coloca en la posición 4 en la tabla de datos "r"
READ VAR1 ' VAR1 contiene ahora el valor 114, es decir la 'r'


Ejemplo 2


DEVICE 16F877
DIM CHAR AS BYTE
DIM LOOP AS BYTE
DATA "HELLO WORLD" ' Crea un cadena de texto en el código de la memoria
CLS
FOR LOOP = 0 TO 9 ' Crea un bucle de 10
RESTORE LOOP ' Punto de posición dentro de la declaración DATA
READ CHAR ' Leer CHAR
PRINT CHAR ' Mostrar Valor de CHAR
NEXT
STOP



El programa anterior lee y muestra 10 valores de la declaración de datos de acompañamiento. Que resulta en "HELLO WORLD" como se muestra. Los datos no se utilizan simplemente para el almacenamiento de caracteres, también puede contener 8, 16, 32 bits, o valores en coma flotante. El siguiente ejemplo ilustra esto:



DEVICE = 16F628DIM VAR1 AS BYTE
DIM WRD1 AS WORD
DIM DWD1 AS DWORD
DIM FLT1 AS FLOAT
DATA 123 , 1234 , 123456 , 123.456
CLS
RESTORE ' Ir a la Primera ubicacion de DATA
READ VAR1 ' Leer el valor de 8-bit
PRINT DEC VAR1," "
READ WRD1 ' Leer el valor d e16-bit
PRINT DEC WRD1
READ DWD1 ' Leer el valor de 32-bit
PRINT AT 2,1, DEC DWD1," "
READ FLT1 ' Leer el valor de punto flotante
PRINT DEC FLT1
STOP


Ejemplos de Punto Flotante

14-Bit Ejemplo


"14-bit de lectura de datos de punto flotante de una tabla y mostrar los resultados



DEVICE = 16F877
DIM FLT AS FLOAT ' Declarar una variable de punto flotante
DATA 3.14 , 65535.123 , 1234.5678 , -1243.456 , -3.14 , 998999.12 , 0.005
CLS ' Limpiar LCD
RESTORE ' Primera ubicación dentro de DATA
REPEAT ' Crea un bucle
READ FLT ' Lee los Datos de la tabla DATA
PRINT AT 1 , 1 , DEC3 FLT ' Mostrar datos Leídos
DELAYMS 1000 ' tiempo de espera
UNTIL FLT = 0.005 ' Para 0.005 cuando se lee
STOP
16-bit Ejemplo

"16-bit de lectura de datos de punto flotante de una tabla y mostrar los resultados

DEVICE = 18F4550
DIM FLT AS FLOAT
DATA 3.14 , 65535.123 , 1234.5678 , -1243.456 , -3.14 , 998999.12 , 0.005
CLS
RESTORE
REPEAT
READ FLT
PRINT AT 1 , 1 , DEC3 FLT
DELAYMS 1000
UNTIL FLT = 0.005
STOP

Notas

Si una variable float, DWORD o WORD se utiliza en el comando de lectura, y luego a 32, o 16-bit (respectivamente) el valor se lee en la tabla de datos. En consecuencia, si se utiliza una variable de tamaño en bytes, y luego de 8-bits se leen. Las variables de tamaño BIT de tamaño, también leen 8-bits de la tabla, pero cualquier valor mayor que 0 es tratado como un 1. Los intentos de leer más allá del final de la tabla pueden resultar en errores y los resultados indeterminados.

El comando de lectura es un remanente de la sintaxis básica de otro tipo y ha sido sustituida por el uso de LREAD y CREAD, que ofrecen mucho más flexibilidad.
 
excelente explicacion amigo mecatrodatos voy a implementarlo y pues de paso felicitarte por tus dos iniciativas de curso (pic basic pro y proton )y ademas con excelentes explicaciones.

ahora aprovecho para preguntar si esta bien ir aprendiendo los dos lenguajes de programacion al mismo tiempo tanto pbp y proton. puesto que voy siguiendo el de pic basic pro pero ahora tengo la intencion de tambien mirar el proton.

saludos ¡!
 
Claro tiene tienen el mismo fundamento auque decidi abrir este hilo para comunicacion USB con el EasyHID por ello el pic que estoy utilizando en lo ejercicios de los tutoriales es el 18f4550
 
Hola una peticion tendras algun ejemplo (no de los que vienen con el proton) sobre control de pantallas graficas, ya andube buscando alternativas y todos coinciden que en proton es sencillo pero no compredno muy bien la forma en que esto se hace, tambien si me puedes indicar que herramintas de software son las indicadas para digitalizar imagnes para estas pantallas desde ya gracias por la ayuda
 
Bien la parte 6 del Tutorial de proton ide manejo de Telado Matrixal con el pic 18f4550 von las resistencias internas del puertoB , el siguiente numero cumplira los requerimeirnots de manejo de pantallas LCD Y GLDC con ejemplos y teoria.:aplauso:(y)
 

Adjuntos

  • Tutorial Proton Part 6.pdf
    152.8 KB · Visitas: 1,275
buen dia, quisiera que me comenten porque no me funciona el circuito de una matriz de leds de 8x8 conectando las filas al puerto B del pic16f877A y las columnas al puerto C esto lo ago para visualizar la letra R en la pequeña matriz y con el siguiente codigo que viene comentado y pertenece al tutorial de NEO TEO "matriz de led de 8x8" y esta en proton ide.

DEVICE = 16F877A ' VAMOS A USAR UN PIC16F876A
XTAL = 12 ' CON UN CRISTAL DE 12MHz


DATA 0,0,127,72,76,74,49,0 'DATOS QUE LEEREMOS CON LA INSTRUCCIÓN
'"READ" Y DIRECCIONAREMOS CON "RESTORE"
'(LETRA "R")

DIM A AS WORD 'VARIABLE QUE INCREMENTARÁ EN
'BASE 2 PARA ACTIVAR LA COLUMNA CORRESPONDIENTE
DIM LETRA AS BYTE 'VARIABLE DONDE SE UBICARÁ ELVALOR DECIMAL QUE
'SALDRÁ POR EL PUERTO B
DIM CONTADOR AS BYTE 'VARIABLE PARA EL CONTADOR DE COLUMNAS

SYMBOL COLUMNA = PORTC 'AL PUERTO C LO LLAMAREMOS "COLUMNA"
SYMBOL FILA = PORTB 'AL PUERTO B LO LLAMAREMOS "FILA"

ALL_DIGITAL = True 'VAMOS A UTILIZAR TODO EL PIC EN MODO DIGITAL

LOW FILA 'INICIAMOS CON LOS PUERTOS EN ESTADO BAJO
LOW COLUMNA

A = 1 'ESTA VARIABLE NO PUEDE INICIAR EN CERO PORQUE
'MULTIPLICADA POR DOS SIEMPRE RESULTARÍA = 0
Inicio: 'COMIENZA EL LAZO DEL PROGRAMA

FOR CONTADOR = 0 TO 7 'INICIAMOS UN CICLO DE 8 VUELTAS

RESTORE CONTADOR 'CARGAMOS EL "PUNTERO" CON EL VALOR DE LA
'VARIABLE "CONTADOR"
READ LETRA 'LEEMOS ESE ESPACIO DENTRO DE "DATA" Y LO CARGAMOS
'EN LA VARIABLE "LETRA"

FILA = ~LETRA 'ACTIVAMOS LAS FILAS CON EL DATO EXTRAÍDO DE "DATA"
COLUMNA = A 'ACTIVAMOS LA COLUMNA QUE CORRESPONDA

A = A * 2 'INCREMENTAMOS EN BASE 2 EL NÚMERO QUE SACAREMOS POR
'EL PUERTO C
IF A > 128 THEN A = 1 'SI ESTE VALOR "SE SALE" DE LA MATRIZ LO DEVOLVEMOS
'AL INICIO (A LA IZQUIERDA)
DELAYMS 2 'pequeño retardo(este valor determina el refresco de la imagen)

NEXT 'CERRAMOS EL CICLO DE 8 VUELTAS

GOTO Inicio 'VOLVEMOS A INICIAR
al original solo le modifique la primera y segunda linea del programa para un pic16f877A y XTAL = 12; bueno el problema que tengo es que al cargarlo al pic y poner a funcionar el circuito no me sale la letra R me salen todos ls led's de la matriz encendidos entonces le aumento tiempo de refresco a 200 mili segundos y veo que si avanzan las columnas con los 8 leds de cada una de ellas encendidos (de la 1 a la 8) y al llegar a la columna 8 se vuelve a iniciar el ciclo for; entonces pienso que no se estan tomando los datos correspondiantes para formar la letra R que estan contenidos al inicio del programa con el comando DATA.
el circuito lo tengo conectado asi : http://www.neoteo.com/Portals/0/imagenes/cache/9B7Ax1024y768.jpg

y estos son los enlaces del tutorial de NEO TEO que consta de dos partes
parte 1 :Matriz de LED 8X8
parte 2:Matriz de LED 8X8 (Parte II)

saludos ¡¡¡
 
que tal amigo moisecito, pues el amigo mecatrodatos solo ha posteado 6 partes de las 10 que consta el tutorial de proton ide y en cuanto tenga listas las demas partes estoy seguro que las compartira con nosotros que estamos siguiendo el tuto. pero con las 6 partes que ha puesto tenemos para ir estudiando un buen rato..

saludos ¡¡ :D
 
Atrás
Arriba