Autor Tema: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877  (Leído 12807 veces)

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

Desconectado alekspm

  • PIC10
  • *
  • Mensajes: 13
Hola a todos los pICteros, si les sirve de ayuda, tengo algunos programas en PIC Basic para compartir, como son...
Interfaz con LCD para F84, F73 y F877, Conversor analogico a digital, Comunicación serial a hiperterminal y algunos mas...
Preguntame, tal vez lo tengo...
Adios....

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #1 en: 17 de Enero de 2010, 04:01:18 »
Hola.

Pues seria bueno que los compartieras con el foro  ;-)

Saludos
El papel lo aguanta todo

Desconectado jmacochi

  • PIC10
  • *
  • Mensajes: 1
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #2 en: 02 de Octubre de 2010, 09:27:17 »
Hola:
estoy empezando la porgramacion en pic basic, creo que me serviran mucho, trabajo con el f877.  me los puedes porfavor.

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #3 en: 03 de Octubre de 2010, 10:57:05 »
me uno a Mlo y gracias por la iniciativa :lol:

Desconectado eddie_utt

  • PIC10
  • *
  • Mensajes: 4
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #4 en: 09 de Marzo de 2011, 02:22:17 »
hola amigo, de casualidad no tienes uno de temperatura
usando un 16f877?
tengo el pic 16f877
sensor lm35
lcd 2x20

Desconectado jrody

  • PIC10
  • *
  • Mensajes: 25
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #5 en: 16 de Abril de 2011, 02:03:08 »
Hola. Mi estimados master de PBP.
Estoy trabajando en un proyecto de contador de monedas, me llega una señal digital al puerto A.0 al A.3 y con eso determino que moneda es y la cuento
Escribo para pedir ayuda. ya estoy a punto de tirar la toalla y renunciar a los PIC.
El problema que tengo es que no puedo leer la señal de entrada de PIC16F876A en el Puerto A.0 al A.3 y con esta señal. Tengo entendido que el puerto A tiene aplicaciones analógicas y que lo tengo que poner a digital, y que tengo que definir si es de entrada o salida. Estoy seguro que en esta parte esta mi error porque esta misma practica ya la logre pero con el puerto B del mismo PIC recibiendo las señales en el B.0 al B.3 y todo camino OK
Tengo un Oscilar de 4Mhz Externo y estoy programando con un MasterPorg.
Ya cheque con un Pic16f870 y es lo mismo
Anexo mi programa en MicroPICBASIC. Saludos y muchas gracias de antemano por la ayuda que me puedan brindar. 

TRISA = 1               ;defino el puerto A como entradas (0= Salida, 1=Entrada)
ADCON1 = 7              ; Apaga los comparadores de voltaje

@ device XT_OSC
@ device WDT_OFF
@ device PWRT_ON

define osc 4

uno var porta.0         ; chanel 1
dos var porta.1         ; chanel 3
cinco var porta.2       ; chanel 4
diez var porta.3        ; chanel 6

x var BYTE

define LCD_DREG     PORTc   ;define los bit de Datos para el LDC en el Pto C
define LCD_DBIT     4       ;empesando por el C4 al C7
define LCD_RSREG    PORTc   ;define el bit de Registro del LCD en el Pto C.2
DEFINE LCD_RSBIT    2
DEFINE LCD_EREG     PORTc   ;define el bit de Enable del LCD en el Pto C.3
DEFINE LCD_EBIT     3


Inicio:
clear
lcdout $FE, 1
x = 0

display:
    lcdout $FE,1
    lcdout $FE, $80, "CUENTA MONEDAS"
    pause 50
espera:
    if uno = 0 then goto cuentauno
    if dos = 0 then goto cuentados
    if cinco = 0 then goto cuentacinco
    if diez = 0 then goto cuentadiez
    goto espera
cuentauno:
    gosub norebote
    x = x + 1
    gosub imprime
    goto espera
cuentados:
    gosub norebote
    x = x + 2
    gosub imprime
    goto espera
cuentacinco:
    gosub norebote
    x = x + 5
    gosub imprime
    goto espera
cuentadiez:
    gosub norebote
    x = x + 10
    gosub imprime
    goto espera

imprime:
    pause 25
    lcdout,$FE, $C1
    lcdout, "$ ", dec x, ".00 pesos"
    return
END

norebote:                     
  if uno = 0 then norebote
  if dos = 0 then norebote 
  if cinco = 0 then norebote 
  if diez = 0 then norebote   
  pause 25                   
  return

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #6 en: 16 de Abril de 2011, 07:32:55 »
Alldigital ;Todas las versiones de lenguaje Basic suelen permitirla
TRISA = 1               ;defino el puerto A como entradas (0= Salida, 1=Entrada)
ADCON1 = 7              ; Apaga los comparadores de voltaje

De todas formas lo que te ocurre es muy frecuente con el puerto  A.

Saludos desde Granada, España.

Desconectado jrody

  • PIC10
  • *
  • Mensajes: 25
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #7 en: 16 de Abril de 2011, 11:17:37 »
Gracias por contestar a mi solicitud de ayuda
mmmm no entiendo muy bien lo de ALLDIGITAL.
Es una instrucción y la sustituyo por TRISA y ADCON1 ????

Fíjate que con el puerto A si puedo controlar un Display LCD 2x16, pero si lo quiero usar para leer es donde no camina.

Alldigital ;Todas las versiones de lenguaje Basic suelen permitirla
TRISA = 1               ;defino el puerto A como entradas (0= Salida, 1=Entrada)
ADCON1 = 7              ; Apaga los comparadores de voltaje

De todas formas lo que te ocurre es muy frecuente con el puerto  A.



Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #8 en: 17 de Abril de 2011, 09:32:22 »
Tienes razón, no me he explicado bien por las prisas.

Tabla de configuración del puerto A y E:
http://www.todopic.com.ar/foros/index.php?topic=14917.msg172500#msg172500

CMCON = 0x07  'Modulo comparador a Off.
Saludos desde Granada, España.

Desconectado jrody

  • PIC10
  • *
  • Mensajes: 25
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #9 en: 18 de Abril de 2011, 00:31:34 »
Tienes razón, no me he explicado bien por las prisas.

Tabla de configuración del puerto A y E:
http://www.todopic.com.ar/foros/index.php?topic=14917.msg172500#msg172500

CMCON = 0x07  'Modulo comparador a Off.


OK Amigo muchas gracias.  excelente ya camino.
Lo único que cambie del código ya publicado es la siguiente linea.
TRISA = 255

Desconectado jrody

  • PIC10
  • *
  • Mensajes: 25
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #10 en: 18 de Abril de 2011, 13:56:39 »
Hola estimados Master de PBP en Todopic
Siempre en todos los manuales y consejos de maestros, y aqui mismo en el foro he leido lo siguiente: Tratar de evitar lo mas posibles la intruccion de GOTO y sustituirla por GOSUB.
Ahora mi gran duda y pregunta es la siguiente, puedo realizar un GOSUB dentro de otro GUSUB. Por ejemplo anexo una parte de mi programa para explicarme mejor y puedan indicarme si es correcta la logica de mi programa.

espera:
    if uno = 0 then gosub cuentauno                      ;lo mando a subrutina cuentauno
    if dos = 0 then gosub cuentados                      ;lo mando a subrutina cuentados
    goto espera                                                  ;regreso a espera

cuentauno:                                ;subrutina cuentauno
    gosub norebote                     ;lo mando a subrutina norebote
    x = x + 1                             ;incremento variable x
    gosub imprime                      ;lo mando a subrutina imprimir en LCD
    return                                  ;regreso a espera
cuentados:
    gosub norebote
    x = x + 2
    gosub imprime
    return
imprime:    
    if r = 1 then goto imprimer
    pause 10
    LCDOUT, $FE, 1
    LCDOUT, $FE, $82, "RECIBIDOS"
    R = 1
imprimer:
    pause 10
    lcdout,$FE, $C1
    lcdout, "$", dec x, ".00 pesos"
    return
norebote:                                               ;subrutina norebote      
  if uno = 0 then norebote
  if dos = 0 then norebote  
  pause 25                  
  return

END
« Última modificación: 18 de Abril de 2011, 13:59:54 por jrody »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #11 en: 20 de Abril de 2011, 13:18:30 »
En principio si, la cantidad de gosub permitidos solo dependen de la gestión que realice el compilador en cuestión, si utiliza el método tradicional solo podrá manejar un máximo de 8 gosub seguidos porque estos micros tienen una pila de 8 niveles. De todas maneras recuerda que por tantos gosub tiene que haber la misma cantidad de return, si olvidas alguno el sistema tarde o temprano hará cosas raras.

De todas formas a nivel de programación no es muy correcto usar más de dos niveles por la complejidad del código resultante y por el riesgo de inestabilidad.

Ejemplo de uso correcto del gosub:

main:
gosub pepe
goto main
----------------
pepe:
gosub pepe1
gosub pepe2
gosub pepe3
gosub pepe4
return

pepe1:
algo
return
pepe2:
algo
return
pepe3:
algo
return
pepe4:
algo
return

En este ejemplo nunca ocupas más de dos niveles y el resto queda para uso propio del sistema que los necesita para su autogestión.
Saludos desde Granada, España.

Desconectado eddie_utt

  • PIC10
  • *
  • Mensajes: 4
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #12 en: 07 de Mayo de 2011, 15:34:34 »
Hola amigo, oyes disculpa mira hise un proyecto de sensor de temperatura, usando un pic 16f877a, sensor lm35, y lcd 2x20, mira el detalle es que mi lcd no detecta nada, si me prende la lcd en color verde, pero no me saca ni un resultado, me gustaria saber si sabes el por que me sucede esto, esto es para un proyecto de la universidad

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: Programas en PIC Basic para 12F508, 12F509, F84, F73, F870, F877
« Respuesta #13 en: 08 de Mayo de 2011, 20:11:56 »
Hola amigo, oyes disculpa mira hise un proyecto de sensor de temperatura, usando un pic 16f877a, sensor lm35, y lcd 2x20, mira el detalle es que mi lcd no detecta nada, si me prende la lcd en color verde, pero no me saca ni un resultado, me gustaria saber si sabes el por que me sucede esto, esto es para un proyecto de la universidad

Para este tipo de consulta lo más normal es abrir un tema nuevo, pero de todas formas para que te puedan ayudar deberías indicar que lenguaje estás utilizando, un esquema del montaje para ver si está erróneo y la configuración del lcd.
Saludos desde Granada, España.


 

anything