Autor Tema: PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)  (Leído 603701 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado allado

  • PIC10
  • *
  • Mensajes: 10
    • Circuitos Impresos
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #495 en: 24 de Diciembre de 2008, 09:16:56 »
Bienvenido amigo lince... Es lo que comentamos en algún momento--- La compilación de PSI arroja un hex mucho mas pequeño y compacto que otros compiladores basic. .. Desde ya una saludo para todos  y que tengan un muy buen año 2009.
La humildad es el hilo con el que se encadena la gloria.

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #496 en: 24 de Diciembre de 2008, 11:09:09 »
bueno amigos ya es 24 feliz navidad a todos :mrgreen: :mrgreen:
nuevos cambios y nuevos micros en el psi

News in version 6.71
- Support for 7 new devices: 16F631, 16F677, 16F882, 16F883, 16F884, 16F886, 16F887
- Several small and/or invisible improvements ...


Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #497 en: 24 de Diciembre de 2008, 13:31:02 »
FELIZ NAVIDAD Y PROSPERO AÑO NUEVO PARA TODOS.

PD. Dejo un regalito para los que tienen puerto paralelo en su ordenador.
Esto es una version de programador paralelo free que hay en la pagina de oshonsoft.
El sofware para manejarlo lo bajais de la misma pagina.

Download Programador para puerto paralelo

Y aqui queda la configuracion:



PD: Corregida la configuración del programador.
« Última modificación: 03 de Mayo de 2014, 14:51:30 por dogflu66 »
Saludos desde Granada, España.

Desconectado _Lince_

  • PIC10
  • *
  • Mensajes: 12
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #498 en: 27 de Diciembre de 2008, 20:22:07 »
'Função da aplicação:Semear amor aos corações.
'Autor: _Lince_.
'Data: 27/12/2008.
'Versão : Única e sem bugs.
'*****************Variaveis***********************
dim amigos_todo_pic as bit
dim amor as bit
dim felicidades as bit
dim armonia as bit
dim trabalho as bit
'******************Constantes********************
const  legais = 1
const  muito = 1
'******************Principal**********************
amigos_todo_pic = 1
main:
        if amigos_todo_pic = legais then
todos_usuarios_do_forum:
           amor = muito
           felicidades = muito
           armonia = muito
           trabalho = muito
           goto main
       else
          goto todos_usuarios_do_forum 'Embora o uso de goto em programas seja questionado eu gosto de usa-los :D
       endif
'******************Fim**************************

Desejo a todos um feliz ano novo repleto de realizações !!!! :-/

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #499 en: 27 de Diciembre de 2008, 20:23:12 »
Dejo una función que me ha parecido interesante. Devuelve el estado del BIT deseado de los que se compone una variable. No es muy complejo así que no lo voy a explicar a no ser que alguien pregunte. Solo diré que arg1 y arg2 son dos variables locales a la función (entrada de datos del programa a la función) y v_bit es el registro de transferencia (salida de datos de la función al programa). Lo bueno que tiene este tipo de código es que se pude añadir a cualquier programa y funciona sin más.


Código: [Seleccionar]
    '*************************************************
'Ejemplo 32
'PIC16F88, 12/08, By COS, PSI v7.41
'Solo para simulación
'Devuelve el valor de un bit determinado
'de una varia de hasta 32Bits.
'El valor del los bits son enviados al puerto serie que son
'visualizados en el modulo Hardware UART Simulation Interface
'*************************************************
Define CLOCK_FREQUENCY = 4
Define SIMULATION_WAITMS_VALUE = 1  'Solo simulación, se aceleran los WaitMs
AllDigital
Hseropen 4800  'Configura puerto RS232 por hardware
Dim entrada As Long  'word  'byte
Dim dato As Byte
Dim n As Byte
entrada = %01000001000000001000000010001001
dato = 0
For n = 31 To 0 Step -1
dato.0 = v_bit(entrada, n)  'Selecciona el bit n
Hserout #dato, " "
WaitMs 1000
Next n
End                                               
'Subrutinas y funciones
'--------------------------------------------------------------
'Devuelve valor: Bit
'V_BIT es una funcion que nos devuelve el estado
'de un bit de una variable determinada.
'ARG1 es la variable de entrada, hasta 32bit.
'ARG2 es el numero de orden del bit deseado de 0 a 31.
'Mediante V_BIT se transfiere el valor del bit deseado
Function v_bit(arg1 As Long, arg2 As Byte) As Bit
arg1 = ShiftRight(arg1, arg2) 'Desplazamiento de bit a la derecha
v_bit = arg1.0
End Function         
« Última modificación: 19 de Junio de 2016, 10:41:50 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #500 en: 27 de Diciembre de 2008, 20:26:14 »
Y para ti tambien _Lince_.  :-)
Saludos desde Granada, España.

Desconectado 21CURIOSOS

  • PIC12
  • **
  • Mensajes: 56
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #501 en: 18 de Enero de 2009, 20:40:21 »
Una pregunta.

 He intentado bajar los ultimos esquemas de la entrenadora e-basic y no los encuentro todos los enlaces me dan error, Dogflu66 o alguien me los podriais facilitar

Gracias de antemano


Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #502 en: 18 de Enero de 2009, 22:39:11 »
Hola, hace unos días que comprobé los enlaces para descarga y estaban operativos todavía, pero de todas formas pongo uno nuevo.

http://rapidshare.de/files/42392088/Pic_EBasic_1.4.rar.html

PD. Por un casual encontré tu proyecto en la red y estaba quedando genial, espero que lo termineis... :-)
Saludos desde Granada, España.

Desconectado 21CURIOSOS

  • PIC12
  • **
  • Mensajes: 56
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #503 en: 19 de Enero de 2009, 07:56:12 »
Gracias por tu pronta respuesta.

Y aprovecho para preguntarte una cosa, en los pins 15 y 16, ¿ seria posible conectar mediante una seleccion con jumpers, la placa tal y como esta, o como opcion cristales externos para ir provando con diferentes frecuencias de cristal?


Sobre el tema de mi proyecto

¿ De que proyecto me hablas, del mando o del banco de pruebas?, el mando que hay en la red no consegui acabarlo de hacer funcionar pues soy novato en pic y tan solo soy "electronico de copiar y pegar" esto hace que cualquier pequeño problema  que me encuentro se haga en algunas ocasiones insalvable.

Si el que viste es el mando, desistí por el momento de aquel esquema, aunque te puedo decir que funcionaba la parte de potencia que en un principio era el principal escollo, pero la parte de control no, pues el 16f88 solo tiene una salida para el PWM y no consegui gestionar el freno correctamente.

El programa en el que me ayudaste era para otro modelo de mando mas sencillo que hice mejorando el esquema de un mando comercial y que me permite mejorar el control sobre las curvas de potencia, (y me va bastante bien)

No obstante no descarto mas adelante hacer el otro mando con un pic mas potente y con la posibilidad de un USB para conectarlo al PC, pero, uff, se me hace muy cuesta arriba...

Ahora ando metido en un banco de pruebas para motores.

Y repito gracias por tu pronta respuesta
« Última modificación: 19 de Enero de 2009, 08:15:13 por 21CURIOSOS »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #504 en: 20 de Enero de 2009, 10:51:59 »
Se puede colocar cristales exteriores, lo que se hace normalmente si no se quiere modificar la placa es un zócalo adaptador para el PIC, y en este zócalo se colocan los puentes, condensadores y el cristal. Operando con cristal externo solo pierdes la tecla S1 y el LED1 amarillo.
« Última modificación: 05 de Octubre de 2010, 19:46:09 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #505 en: 24 de Enero de 2009, 21:53:31 »
Para el que quiera experimentar con el sensor de temperatura de precisión DS1624 dejo el antiguo ejemplo 25 para trabajar con temperaturas positivas y negativas, he simplificado la función y añadí otra función que modifica la salida del LCD con distintos formatos de representación de la temperatura, signo, 3 dígitos para la parte entera, y selección de 0, 1 o 2 decimales y también la selección de imprimir o no imprimir "C" al final de la temperatura. Recordar que este sensor tiene un rango de trabajo de temperatura entre -55 a +125 ºC en pasos de 0.0625ºC. También pude comprobar que llega a -50ºC sin problemas, es la mínima temperatura que pude conseguir con mis medios. A la lectura de temperatura negativa hay que hacer un proceso de complemento a 2 para poder pasarla a decimal.

PD. El DS1624 tiene una E2prom interna independiente del sensor de temperatura que no usaremos.
« Última modificación: 26 de Junio de 2016, 07:52:19 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #506 en: 24 de Enero de 2009, 21:54:42 »
El programa:

Código: [Seleccionar]
'***************** Placa Entrenadora (PIC EBadic) ***************************************
'NOMBRE: 16F88_Pic_EBasic_EJEMPLO_33
'Descripcion: TEST DE LA PLACA EBasic_I2C (Led y DS1624), Temperatura positiva y negativa)
'Micro: PIC16F88 / 8mhz reloj interno
'Fecha/Autor: 23/01/09, 15/01/09, 2/08/07, 29/7/07 By COS, PSI v7.41
'Version: 1.3
'Se añaden temperaturas negativas
'Se crea la función lcdsig_ds1624, que permite seleccionar 0,1 o 2 decimales
'Version: 1.2
'Se eliminan elementos redundantes en la funcion
'Version: 1.1
'Se añade TEST para el DS1624 (temperatura)
'*****************************************************************************************
Define CONF_WORD = 0x2f50  'Configuración de bits (fuses)
Define CONF_WORD_2 = 0x3ffc  'Configuración de bits (fuses)
Define CLOCK_FREQUENCY = 8  'Frecuencia del reloj en Mhz
'Define SIMULATION_WAITMS_VALUE = 1  'Hace que se ignoren los tiempos de los WaitMs
'-------------------------------------Puertos del LCD-------------------------------------
Define LCD_BITS = 4  'Indicamos que el bus de datos del lcd sera de 4bit
Define LCD_DREG = PORTA  'Bus de datos sera el puerto A
Define LCD_DBIT = 0  'Bus de datos seran los 4 bit menos significativos del puerto A
Define LCD_RSREG = PORTB  'Bit de control RS sera del puerto B
Define LCD_RSBIT = 7  'RB7 como RS
Define LCD_EREG = PORTB  'Bit de control E sera del puerto B
Define LCD_EBIT = 6  'RB6 como E
Define LCD_COMMANDUS = 2000  'Tiempo de espera despues de ejecutar un comando del lcd en uSeg.
Define LCD_DATAUS = 50  'Tiempo de espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 50  'Tiempo de espera despues de inicializar el Display.
'Definicion de puertos--------------------------------
AllDigital  'los pin I/O digitales
'ANSEL = %00010000  'los pin I/O digitales y RA4 analogico
CMCON = 0x07  'comparador a off
OSCCON = 0x7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
TRISA = 0x00  'Puerto A como salidas
TRISB = 0x00  'puerto B como salidas
'TRISA.4 = 1  'como entrada (RA4, adc)
TRISA.6 = 1  'como entrada (RA6, tecla S1)
TRISA.5 = 1  'como entrada (RA5, tecla S2)
'Declaracion de constantes-----------------------------
Const p_off = 0  'apaga el led
Const p_on = 1  'enciende el led
Const p_nc = 2  'no cambia estado el led
'Reasignacion de nombres------------------------------
Symbol sda = RB1  'asignamos nombre al pin que hara de SDA del puerto I2C
Symbol scl = RB4  'asignamos nombre al pin que hara de SCL del puerto I2C
Symbol led_amarillo = RA7  'led amarillo
Symbol led_verde = RB0  'led verde
Symbol luz_lcd = RB3  'iluminación del lcd
Symbol s1 = RA6  'tecla S1
Symbol s2 = RA5  'tecla S2
'Variables generales---------------------------------------
Dim temperatura As Word  'temperatura entero .HB, decimales .LB
'Inicio------------------------------------------------
Lcdinit  'inicializa el LCD sin cursor
WaitMs 100  'pausa de 100 mSeg.
Lcdout "Test P. EB_I2C"  'Imprime el texto en el LCD
WaitMs 3000  'pausa de 3Seg.
Call led(p_off, p_off, p_on, p_off)  'led a off
'Rutina Programa---------------------------------------
main:
Call led(p_nc, p_nc, p_nc, p_on)  'Control luces
temperatura = d_ds1624(0)  'genera una lectura en el chip ds
Call led(p_nc, p_nc, p_nc, p_off)  'Control luces
WaitMs 1000  'pausa de 1Seg, tiempo maximo de conversion del chip ds
Call led(p_nc, p_nc, p_nc, p_on)  'Control luces
temperatura = d_ds1624(1)  'almacena la lectura en dos bytes
Call led(p_nc, p_nc, p_nc, p_off)  'Control luces
Lcdcmdout LcdLine2Home  'cursor al principio de la linea 2
Lcdout "Temp. "  'Imprime en el LCD
Call lcdsig_ds1624(temperatura, 1, 1)  'Llama a imprimir temperatura con formato
WaitMs 1000  'hace una pausa de 1Seg.
Goto main
End                                               
'Rutinas-----------------------------------------------
'Detecta signo e imprime con 0, 1 o 2 decimales
'Parte entera con formato de 3 digitos
'arg1 = Valor de entrada de temperatura
'arg2 = 0 no hay decimales, arg2 = 1 un decimal, arg2 = 2 con dos decimales
'arg3 = 0 no imprime "C" despues de los decimales, arg3 = 1 si la imprime
Proc lcdsig_ds1624(arg1 As Word, arg2 As Byte, arg3 As Bit)  'Declara el tipo y argumentos de la funcion
If arg1.15 = 0 Then  'Selecciona +/-
If arg1 > 0 Then Lcdout "+"  'Imprime en el lcd
If arg1 = 0 Then Lcdout " "  'Imprime en el lcd
Else
arg1.15 = 0  'Deja la parte entera
If arg1 > 0 Then Lcdout "-"  'Imprime en el lcd
If arg1 = 0 Then Lcdout " "  'Imprime en el lcd
Endif
If arg1.HB < 100 Then Lcdout "0"
If arg1.HB < 10 Then Lcdout "0"
Lcdout #arg1.HB  'Escribe parte entera
If arg2 = 1 Or arg2 = 2 Then Lcdout "."  'Escribe lcd
If arg2 = 1 Then arg1.LB = arg1.LB / 10  'Suprime el segundo decimal
If arg2 = 2 And arg1.LB < 10 Then Lcdout "0"  'Mantiene el formato dos decimales
If arg2 = 1 Or arg2 = 2 Then Lcdout #arg1.LB  'Escribe los decimales
If arg3 = 1 Then Lcdout "C"  'Imprime en el lcd
End Proc                                         
'Funcion de lectura/escritura del DS1624
'ds_rw=0 el chip prepara un lectura
'ds_rw=1 el chip entrega una lectura
'ds_rw=2 se hace una lectura del registro de control.
'd_ds1624, byte mas significativo parte entera, menos significativo 2 decimales
'Hay que recordar declarar SDA y SCL
Function d_ds1624(ds_rw As Byte) As Word  ', d_aux As Long) As Word
Dim d_aux As Long
RA4 = 1  'Led placa I2c a On
If ds_rw = 0 Then  'Solicita una lectura de temperatura
I2CWrite sda, scl, %10010010, 0xac, 0x00  'Inicializa el registro de control
WaitMs 10  'Pausa para que termine la escritura
I2CWrite1 sda, scl, %10010010, 0xee  'Comienza una conversión
Endif
If ds_rw = 1 Then  'Hace la lectura de la temperatura
I2CWrite1 sda, scl, %10010010, 0xaa  'Prepara el chip para lectura de temperatura
I2CRead1 sda, scl, %10010011, d_ds1624.HB, d_ds1624.LB  'Lee la temperatura
If d_ds1624.15 = 1 Then  'Detecta signo de la temperatura
d_ds1624 = Not d_ds1624  'Pasa a complemento a 1
d_ds1624 = d_ds1624 + 1 'Pasa a complemento a 2
d_ds1624.15 = 1  'Activa bit de signo negativo que se pierde en la operación
Endif
d_ds1624.LB = ShiftRight(d_ds1624.LB, 3)  'Elimina bit que no se usan
d_aux = (d_ds1624.LB * 625) / 1000  'Calcula la parte decimal, 2 digitos
'd_aux = (d_ds1624.LB * 9) / 15  'Calcula la parte decimal, 2 digitos, operación simplificada
d_ds1624.LB = d_aux.LB  'Pasa los decimales a la variable de transferencia
Endif
If ds_rw = 2 Then  'Hace una lectura del registro de control
d_ds1624 = 0  'Inicializa variable
I2CRead sda, scl, %10010011, 0xac, d_ds1624.LB  'lee registro de control
Endif
RA4 = 0  'led placa i2c a Off
End Function                                     
'Controla el estado de los led, Call(x1, x2, x3, x4)
'x=0 led apagado, x=1 led encendido, x=2 no hay cambio
Proc led(led_amarillo As Byte, led_verde As Byte, luz_lcd As Byte, led_ebi2c As Byte)
If led_amarillo = 1 Then RA7 = 0  'led amarillo a on
If led_amarillo = 0 Then RA7 = 1  'led amarillo a off
If led_verde = 1 Then RB0 = 0  'led verde a on
If led_verde = 0 Then RB0 = 1  'led verde a off
If luz_lcd = 1 Then RB3 = 1  'LCD iluminado
If luz_lcd = 0 Then RB3 = 0  'LCD apagado
If led_ebi2c = 1 Then RA4 = 1  'led EB_I2C a on
If led_ebi2c = 0 Then RA4 = 0  'led EB_I2C a off
End Proc
« Última modificación: 26 de Junio de 2016, 07:54:27 por dogflu66 »
Saludos desde Granada, España.

Desconectado cymons

  • PIC10
  • *
  • Mensajes: 1
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #507 en: 11 de Febrero de 2009, 00:47:08 »
Buenas Noches Ariel soy nuevo en el foro, me llamó mucho la atencion tu programa del reloj aunque no pude correrlo xq no se como van conectados los pines de la pantalla LCD  :( .....

X casualidad en el foro ya no han publicado como trabajar con un teclado matricial y que al pulsar cada tecla se vaya mostrando en cuatro displays 7segmentos?

es que estoy tratando de realizar esa asignacion pero tengo dudas a la hora de guardar por ejemplo el primer valor a mostrar en el display "Posicion menos significativa" xq cada vez que pulse otra tecla deben desplazarse hacia la izquierda los valores ya mostrados anteriormente en los displays....el teclado es de 4x4 y el display multiplexado 7x4....x favor seria de gran ayuda si me echan una hand....  :)

avisenme si debo ser mas explícito en mi duda x favor...

Otra duda, en PROTON el comando POT se que permite leer cualquier tipo de resistencia variable: potenciometros, termistores, etc...pero la sintaxis como tal que arroja la ayuda de PROTON dice lo siguiente:
Variable = POT Pin, scale
no entiendo como explicar que significa ese operador  "scale" ¿?....espero su pronta respuesta GRACIAS....
#cy_pic#

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #508 en: 12 de Febrero de 2009, 23:07:55 »
Buenas Noches Ariel soy nuevo en el foro, me llamó mucho la atencion tu programa del reloj aunque no pude correrlo xq no se como van conectados los pines de la pantalla LCD  :( .....

X casualidad en el foro ya no han publicado como trabajar con un teclado matricial y que al pulsar cada tecla se vaya mostrando en cuatro displays 7segmentos?

es que estoy tratando de realizar esa asignacion pero tengo dudas a la hora de guardar por ejemplo el primer valor a mostrar en el display "Posicion menos significativa" xq cada vez que pulse otra tecla deben desplazarse hacia la izquierda los valores ya mostrados anteriormente en los displays....el teclado es de 4x4 y el display multiplexado 7x4....x favor seria de gran ayuda si me echan una hand....  :)

avisenme si debo ser mas explícito en mi duda x favor...

Otra duda, en PROTON el comando POT se que permite leer cualquier tipo de resistencia variable: potenciometros, termistores, etc...pero la sintaxis como tal que arroja la ayuda de PROTON dice lo siguiente:
Variable = POT Pin, scale
no entiendo como explicar que significa ese operador  "scale" ¿?....espero su pronta respuesta GRACIAS....


Como Ariel no te contesta todavia, a ver si te puedo orientar:

No sé a que programa te refieres del Reloj. En el caso que estés haciendo referencia al Relojito de Ariel tienes toda la info en su pagina.
En este hilo no se ha trabajado con el tipo de teclado que indicas, ni con display de 7 Segmentos. Pero en el foro si que se ha tratado este tema muchas veces, puedes hacer uso del buscador del foro para encontrarlos, o esperar a ver si algún amigo recuerda en que parte del foro puedes mirar.
Y para terminar, este hilo es del Basic del Pic Simulator IDE, así que es posible que nadie té conteste sobre el Basic Proton. Hay hilos sobre Proton puedes consultar en ellos.
Saludos desde Granada, España.

Desconectado 21CURIOSOS

  • PIC12
  • **
  • Mensajes: 56
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #509 en: 15 de Febrero de 2009, 20:59:07 »
Hola a todos, he estado mirando las caracteristicas del PIC 16f88 y veo que la salida pwm se puede generar tanto en RB0 como en el  RB3 configurandolo en el bit 12 del WORD 1, viendo esto mi pregunta son:

¿ Como se configura este bit en el Pic simulator Ide ?

¿ Durante la ejecucion de un programa es posible alternar la salida PWM de un pin al otro ?

Sal u2 y gracias


 

anything