TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: masacre en 09 de Julio de 2008, 03:50:22
-
Hola gente, bueno estoy aprendiendo o eso intento a hacer un programa para controlar unos led y un lcd, lo que pasa es que no se como hacerlo. Y por mucho que busco no encuentro como hacerlo seria con el micro 18f4620. Lo que busco es una guía en español (en ingles no lo entiendo :() o unas intrusiones para ir cogiendolo y hacerme una idea. Gracias
-
Buenas,
Si quieres realizar el código en lenguaje C es fácil, creas un proyecto mediante el project wizard y en la ventana de seleccionar el lenguaje, seleccionas el C18.
Te digo el C18 ya que veo que quieres trabajar con un PIC de dicha familia, en caso de querer trabajar con otro compilador, por ejemplo en CCS, deberás ir a la página web del fabricante y descargarte el plug-in que te integra el CCS en MPLAB.
Una vez integrado el CCS en MPLAB, haces igual que antes, en la ventana de seleccionar el lenguaje, buscas el CCS y ha realizar el programa en sí.
PD: Por cierto, este blog que es interesante, hay temas de como realizar proyectos en MPLAB desde cero, eso sí, en ASM, pero es muy parecido: Aqueronte MPLAB IDE (http://unbarquero.blogspot.com/2008/06/mplab-ide.html).
PPDD: Si vas a usar el C18, deberás añadir el archivo .lkr correspondiente a tu microcontrolador a tu proyecto.
Suerte!!! ;)
-
Gracias por contestar, todo lo que dices ya lo tengo echo pero lo que no se realmente seria los comandos a poner para que encienda o apague los led por ejemplo.
#include <p18f4620.h>
#define ON 1
#define OFF 0
#define LEDROJO PORTEbits.RE0
void main (void)
{
TRISE = 0b00000000;
LEDROJO = ON;
}
Se que seria algo a si pero no se como hacerlo para el LCD parpadeos y similares.
-
Tu no sabes las instrucciones que se usan para el PIC.
En este mismo foro, tienes muchos ejemplos para ello, y también tema dedicado para aprender CCS desde 0
-
Hola, yo he puesto eso y funciona, solo se enciende el LED pero funciona :-)
¿Dónde puedo sacar las intrusiones para los PIC?¿Y los ejemplos donde están?
Gracias por la ayuda.
-
Masacre, bienvenido al foro!
Toda esa información la consigues en este mismo subforo.
Aquí en este hilo hay un índice que te puede ser muy útil:
http://www.todopic.com.ar/foros/index.php?topic=14634.0 (http://www.todopic.com.ar/foros/index.php?topic=14634.0)
Te recomiendo el "Microcursillo en C" para CCS o el "C18 desde cero"... seguro te ayudarán muchísimo.
Ok saludos, nos leemos! :mrgreen:
-
Además de lo que te recomienda firepic, que es un buen consejo, te adjunto dos archivos relacionados con el CCS
Aclaro que hace rato que lo tengo en la PC y no se de dónde lo saqué. Si el creador de los siguiente ficheros se siente ofendido por no haberle pedido permiso antes de publicarlo, no tiene más que pedirle a algún moderador de este subforo, que lo saque. El mismo lo puede hacer en forma privada.
Desde ya, muchas gracias si lo dejan compartir.
http://www.mediafire.com/?emdzdbwmnuj
http://www.mediafire.com/?tutgns4byzb
-
Muchas gracias por la información :), voy a echarle un ojo y os cuento.
-
Bueno mas o menos ya voy haciendo algo :) :) ¿Que os parece?
#include <p18f4620.h>
#include <delays.h>
#define ON 1
#define OFF 0
#define LEDROJO LATEbits.LATE0
#define LEDAMARILLO LATEbits.LATE1
#define LEDVERDE LATEbits.LATE2
#define PULSADOR1 PORTDbits.RD2
#define PULSADOR2 PORTDbits.RD3
#define PULSADOR3 PORTDbits.RD4
void main (void)
{
TRISD = 0b00011111;
TRISE = 0b00000000;
OSCCON = 0b01111100;
OSCTUNEbits.PLLEN = 1;
while(1)
{
if (PULSADOR1==0)
{
LEDROJO = ON;
LEDAMARILLO = OFF;
LEDVERDE = OFF;
}
else if (PULSADOR2==0)
{
LEDROJO = OFF;
LEDAMARILLO = ON;
LEDVERDE = OFF;
}
else if (PULSADOR3==0)
{
LEDROJO = OFF;
LEDAMARILLO = OFF;
LEDVERDE = ON;
}
else
{
LEDROJO = ON;
Delay10KTCYx(250);
LEDROJO = OFF;
Delay10KTCYx(250);
LEDAMARILLO = ON;
LEDVERDE = ON;
}
}
}
Después de buscar mucho y probar más aun, me he quedado atacado. Tengo el siguiente problema con el LCD y es que en vez de mostrarme el texto que quiero me salen unos caracteres extraños. ¿Por que sale eso así?
#include <p18f4620.h>
#include <xlcd.h>
#include <delays.h>
unsigned char BusyXLCD( void );
void main (void)
{
Delay10KTCYx (200);
OpenXLCD (EIGHT_BIT & LINES_5X7);
WriteCmdXLCD( CURSOR_OFF );
putrsXLCD(" 546 ");
}
//RUTINAS TIMER DISPLAY
void DelayFor18TCY (void) //rutina de inicio de LCD
{
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
}
void DelayPORXLCD (void) //rutina de inicio de LCD
{
Delay10KTCYx (12); //15 ms 60
return;
}
void DelayXLCD (void) //rutina de inicio de LCD
{
Delay10KTCYx (4); //5 ms 20
return;
}