Curso de programación de PIC en PICBasic Pro

Bravo! Muy buen aporte autotronico, el 16f877A es el que comentaba serviria para el control de temperatura que decia atricio, el ahorro de tu amigo es lo bueno yo tambien ando empezando en esto de los PIC estoy usando el 16F84A y tambien funciona para poder usar motores de CA pero se necesitan mas aditamentos como contactores y relevadores con transistores jeje, estoy usando MPLAB y tiene muchas funciones pero vi que el MikroBasic y el PBP son mas sencillos para programar por eso tambien los uso :).
Gracias por el aporte!
Saludos.
 
hola amigos si quisera usar el 16F877A o en su defecto u 16F628A mas me inclino por el 628A que opinan ustedes que tan buenos resulatados me daria?? puedes pasarme para mirar el codigo que implementaste para tu termometro digital. En lo particular yo uso proton creo que andan usando ustedes Microcode me defiendo un poquito en ese compilador les agradeceria mucho que me ayudaran
 
Claro solo se tiene que adaptar al PIC16F628A porque ese tambien tiene entradas ADC es cuestion de que le modifiques en el codigo que te paso ya que en el ejemplo usa el PIC16F870, solo lo utilice con este pero es cuestion que le intentes acoplar y verifiques resultados, el texto es este:

'DEFINE LOS REGISTROS PARA LA PANTALLA LCD
DEFINE LCD_DREG PORTB 'UTILIZAR 4 BITS DEL PUERTO B PARA TX DE DATOS
DEFINE LCD_DBIT 4 'DESDE EL BIT B.4 AL BIT B.7
DEFINE LCD_RSREG PORTB 'UTILIZAR EL REGISTRO DE CONTROL/DATOS EN EL PUERTO D
DEFINE LCD_RSBIT 1 'EN EL BIT B.1
DEFINE LCD_EREG PORTB 'UTILIZAR EL ENABLE EN EL PUERTO B
DEFINE LCD_EBIT 2 'EN EL BIT B.2
DEFINE OSC 4 'DEFINES EL OSCILADOR DE 4 MHZ

'DEFINE LOS PARÁMETROS DEL ADC
DEFINE ADC_BITS 8 'NÚMERO DE BITS, ESTE LO PUEDES MODIFICAR
'A 10 PARA TENER MAYOR EXACTITUD SOLO CON EL PIC16F870
'VERIFICA EL QUE DICES
DEFINE ADC_CLOCK 3 'USAR CLOCK INTERNO DEL ADC
DEFINE ADC_SAMPLEUS 50 'TIEMPO DE MUESTREO EN 50uS

'DEFINES LAS VARIABLES A UTILIZAR
RES VAR WORD 'RESULTADO DE LA CONVERSIÓN
TEMP1 VAR BYTE 'TEMPERATURA C
TRISA = 1 'RA0 (AN0) COMO ENTRADA
TRISB = 0 'PORTB SALIDA (ADC)
PAUSE 500 'PAUSA DE INICIALIZACIÓN DEL LCD EN uS

'INICIAR CONVERSIÓN A/D
ADCON1 = %00001110 'ESTABLECER SOLO UN CANAL COMO ANALÓGICO
'VOLTAJE DE REFERENCIA ES VDD
ADCON0 = %11000001 'RELOJ DEL A/D, SELECCIONA CANAL AN0 VERIFICA EL DE 16F628A
'INICIAR EL A/D
LCDOUT $FE, 1 'BORRAR LCD

INICIO:
'INICIAR CONVERSIÓN
ADCIN 0, RES 'LEER EL CANAL A0
TEMP1 = 2 * RES '2 VIENE DE->19.53
LCDOUT $FE,2,"TEMP = ",DEC TEMP1,$DF,"C" 'MOSTRAR RESULTADO EN EL LCD
'EN LA SEGUNDA LINEA DE LA PANTALLA
PAUSE 500 'PAUSA 0.5 SEGUNDOS
GOTO INICIO
END

Esta en PBP y tiene error de +/- 1ºC para mas exacto se cambian los bits de 8 a 10 en este caso. Espero sea de ayuda.

Saludos.
 
El cristal es de 4 Mhz, no lo e llegado a armar fisicamente, solo lo tenia en proteus pero ahorita no lo tengo a la mano, si me das tiempo lo vuelvo a hacer y lo subo para que veas como funciona en proteus y te adjunto el .hex, recuerda que lo hare en PBP.
 
hace un ratito lo arme en el proteus y segun este me da como tu dices un error de 1 grado..por otro lado me puedes explicar el porque de el 2 que me mencionas que viene de 19.53 muchas gracias lo subo para que miren
 

Adjuntos

  • temperatura.rar
    10.4 KB · Visitas: 157
El 19.53mV es el resultado de una formula y quiere decir que por cada 19.53mV del LM35 el PIC lo va a redondear a 2ºC para que lo muestre en la pantalla, si lo quieres mas exacto tendrias que utilizar los 10 bits del ADC, cambiaria un poco el programa que te pase, pero no tendria saltos de 2 en 2 en cada muestra de temperatura, seria un poco mas exacto que el anterior. Te lo adjunto para que lo programes.

El de 10 bits te lo mando en formato de texto para que lo compiles con tu programa, solo cambia y se le aguregan unas cosas, y al archivo que me mandaste de proteus le agregue un voltimetro en mV para que verifiques lo que comento de los 19.53mV.

Suerte.
 

Adjuntos

  • temperatura.rar
    29 KB · Visitas: 179
  • TEMP_16F870_10B.txt
    1.5 KB · Visitas: 119
ME PODRIAN ALGUIEN AYUDAR CON ESTA PARTE DEL PROGRAMA, DETALLADAMENTE.
POR LO MENOS SE QUE EN LA PRIMERA LINEA UBICA EL CURSOR EN LA CASILLO 18
EN LA SEGUNDA LA VARIABLE A TOMA VALORES DE 0 A 18 USANDOLA COMO UN CONTADOR
EN LA TERCERA LINEA Y CUARTA LINEA NO LA ENTIENDO, MUCHAS GRACIAS DE ANTEMANO

LOOP:
LCDOUT $FE,$91 ; ubicar cursor en la casilla 18
for a =0 to 18
lookup a,["CURSO PIC BASIC PRO"],B
LCDOUT,B
PAUSE 500
NEXT
GOTO LOOP
 
Ya lo simulaste? te provoca error? o anda bien el programa en proteus?

Hola cesar, ese prgrama que comentas con que pic y lcd lo estas simulando? y que es lo que quiere que haga? tengo pocos conocimientos en esto de los pic pero haber si puedo y algo te ayudo sino pues alguien aqui a de saber lo que buscas. No te estara faltando algo mas en la linea de LCDOUT,B ? o si te funciona como quieres?
 
Última edición:
gracias nemesis hoy en la noche lo armo y miro como me fue con las variantes del caso y comento lo que susedio muchas gracias por la colaboracion.

Cesar esas sentencias es para que aparezca en un lcd la palabra que pones ahi de izquierda a derecha si no me equivoco una a una las letras revisa en el gogle hay una pagina que se llama matpic ahi hay un ejemplo muy completo con un video incluso

miralo

http://www.matpic.com/esp/microchip/lcd.html
 
buenas de nuevo por aca, con respecto al trozo de programa de @cesarpelen, lo que sucede en ese programa es que la lcd va mostrando letra por letra en vez de escribir todo de una vez:

LOOP:
LCDOUT $FE,$91 ; ubicar cursor en la casilla 18
for a =0 to 18
lookup a,["CURSO PIC BASIC PRO"],B ' son 18 por que son 18 espacios de la lcd que se van a usar
'hay que aclarar que la lcd solo tiene 16 para visualizar ose
'hay dos letras que no se van a ver en la lcd.
'otra cosa en ["CURSO PIC BASIC PRO"] serian 19 no 18 moscas
LCDOUT,B
PAUSE 500
NEXT
GOTO LOOP

entonces en resumen el programa no hace mas que escribir letra por letra lo que esta dentro de las casillas con un retardo de 500ms cada letra...saludossss
 
Saludos a todos,

Quisiera trasmitirles mi inquietud respecto al manejo de las interrupciones en pic basic, hasta el momento que empiezo a mirar resulta entendible cuando se trata de aplicar a un solo interruptor pero no encuentro ejemplos que permitan la aplicación de un teclado, aclaro esto, me gustaría mantener un mensaje en un lcd hasta que se active el teclado, algo parecido a hacer un protector de pantalla mientras no hay actividad. En este momento me baso en el libro de Carlos Reyes pero la información es corta y no he podido encontrar nada en la red aparte de encender leds con un solo pulsador.

Desde ya, muchas gracias por cualquier orientación al respecto.
 
En este momento me baso en el libro de Carlos Reyes pero la información es corta y no he podido encontrar nada en la red aparte de encender leds con un solo pulsador.

Porque me caes bien viggiani... te voy a dar el mejor consejo que puedo dar yo....

Agarra todos los libros de computación que tengas, siiii... todos incluyendo guías rápidas de bolsillo... todos todos... ponlos apilados dentro de un tambo, cubeta o similar, toma una garrafa y compra 1 litro de gasolina, viertela sobre el tambo, consigue un extintor, toma un cerillo y arrojalo en el tambo, observa el fuego mientras se consume el papel, manten el extinguidor en tus manos y usalo inmediatamente en el caso de que se riegue el fuego... si dominas el arte del fuego prepara unos malvabisco insertalos en un palo o varilla y doralos un poco y disfrutalos... despues del ritual de iniciacion....

toma tu computadora... preferentemente un laptop, y usala 25hrs al dia, picale, muevele, subele, bajale a los codigos, navega en internet y busca ejemplos... repite el proceso de picale subele bajale, y asi infinatmente hasta que la computadora este totalmente domada....

La tecla F1 es tu mejor amiga y compañera incondicional....

si hiciste los pasos al pie de la letra, seguramente estas en proceso de realizar tus propios codigos...

:D
 
Última edición:
Ja,ja,ja...:LOL:

Si que no doy en esto, pero bueno, soy mas necio que niño pequeño.

Gracias por responderme amigo, fresco que todo esto que hago es solo con fines didácticos, es más, hasta ahora no he armado mas allá del protobard algunos circuitos basicos, no creas que mi idea es lucrarme con el trabajo de ustedes, es especial el tuyo, pues si que me has ayudado bastante. La verdad, la electrónica y los micros es por hobby, a pesar que soy muy burro para esto.

La cuestión es que andaba leyendo sobre el tema de interrupciones y veo que los ejemplos siempre están enfocados a swiches sobre el portb.0 por ejemplo, pero no he visto código referente con sensores de presencia o cosas así, será que es difícil abordar el asunto y simplemente es omitido?:
 
será que es difícil abordar el asunto y simplemente es omitido?
mmm... no lo digo porque lucres o no lucres con las ayudas o consejos que pongamos, de echo para mi es molesto que no lucres con ellos... ese es el fin de aprender...

por otro lado lo de las interrupciones si son un poco complejas y para mi hasta un poco absurdo su funcionamiento, pero en fin...

ese es mi punto del consejo que te di, desarrolla un algoritmo y te puede quedar mucho mejor que usando las interrupciones.. me explico???...

ejemplo... yo en mis algoritmos no uso ningun antirrebote que eso te detiene el proceso de lectura, para eso existe un codificador de taclados matriciales y eso en los libros no lo vas a encontrar...
 
Muy bien, entiendo tu punto de vista, yo apenas alcancé a tocar el intcon para ver que sucedía. La solución podría darse con un ciclo While que mantenga por ejemplo, un mensaje determinado y que una vez la variable para el ciclo varíe, pase a x o y función.
 
Muchas gracias, por la ayuda de todos, creo que este foro es uno de los mejores por la gente que lo conforma, gracias por compartir sus conocimientos. Es una maravillosa ayuda para los amantes de los microcontroladores.
 
Hola respetable foro,
Hace bastante que aprendo de este foro y de los consejos muy buenos que aquí se dan. Hace unos días quise profundizar el tema del comparador en el 12F675 pero no encontré nada suficientemente claro para mí, que soy bien novato. En consecuencia me puse a buscar y he terminado haciendo un tuto, que tiene cuatro partes y que adjunto por si es útil:
a) comparador con referencia externa
b) comparador con referencia interna
c) comparador con referencia externa e histéresis
d) comparador con referencia interna e histéresis
En este último punto tengo algunas dudas, a pesar que en proteus está funcionando, si encuentran errores por favor no duden en comentar!!
Todo ha sido programado en PBP y probado en Proteus.
Gracias de antemano!!
 

Adjuntos

  • COMPARADOR en el PIC 12F675_Ferrero.pdf
    609.5 KB · Visitas: 201
Hola reyvilla,
debe ser un problema de versiones de acrobat, yo lo bajé sin problema.
Igual lo he vuelto a subir en un .doc rareado, me imagino que ahora lo vas a poder ver. Saludos
 

Adjuntos

  • Uso de COMPARADOR en el PIC 12F675_Ferrero.rar
    1.4 MB · Visitas: 187
Atrás
Arriba