Introduccion a la programacion de PICS en lenguaje C (CCS)

Iniciado por MARCO_RECARGADO, 26 Julio 2007, 17:47 PM

0 Miembros y 2 Visitantes están viendo este tema.

aliasx

Saludos osmar6

no entiendo tu pregunta, si te refieres a que si el compilador tiene alguna herramienta que permita quemar el PIC directamente desde él, pues sí, pero yo nunca lo utilice, siempre trabajo con el winPIC800

odrareg33

hola marco.. he e stado prcaticando con las practicas que has puesto y son interesantes gracias por compartirlas. y tambien aprovecho para hacer te un comentario buen o lo k pasa es que trate de compilar el reloj en timepo real y me sale un error y me lo manda en #include <ds1307.c> si me pudieras ayudar a algo k este hacieno. gracias por tus aportes

newfag

muy buen tutorial, estaba atascado con ésto de los pics per o en una tarde ya me he aclarado de cómo iba, muchisimas gracias!!!

pepesolde

Hola MARCO_RECARGADO, muchas felicidades por ese tema, me parece un muy buen trabajo.

Yo soy muy principiante y al igual que les pasó a otros hay cosas que se me escapan. He leido que a -Xenon- le enviaste un tutorial para principiantes muy bueno. Me lo podrias mandar a mi también por mail? (es que no se cómo funcionan los mensajes privados).

Mi dirección es: pepesolde@hotmail.com

Espero que no te importe. Un saludo.

hhereje

que tal salu2 para los de este foro ,como se daran cuanta soy nuevo en este foro solo una pregunta se que esta pregunta esta fura del tema del foro pero hay va...alguien sabe como programar el micro MC68HC908GP32 de motorola en code warrior? pues gracias por su atencion....

master1030

Buenas tardes por favor alguien me puede ayudar con el codigo fuente del i2c para expansores pcf 8574 en lengueje gracias

wblasc

Hola a todos, soy nuevo, y creo q este es el foro q buscaba, pues esta excelente felicitaciones a los q lo crearon y a tambien a los q contribuyen con sus preguntas y respuesta, me gustaria saber si alguien tiene informacion de como emitir un sonido con un pic de preferencia 16F877A, para ser mas especifico si es posible grabar un mp3 en un pic, bueno me conformo con q haga un BIP ????

vetealdemonio

Hola compañeros agradezco este foro porque me ha motivado a aprender un poco C sobre PIC. He estado mirando un poco los ejemplos y he probado algunas cosas pero mi duda por el momento es algo sencillo quiero que atraves de un pulsador o un switch me active un mensaje en una lcd. Miren parte de mi codigo, considero que esta bien pero no me da nada en la simulacion. les agradezco si me pueden explicar porque no logro hacerlo.

Citar#include <16F877A.h>
#fuses nowdt,noprotect,nowrt,HS,nobrownout,nolvp,noput

#use delay(clock=8M)

#use fast_io(A)

#byte porta=5
#byte portc=7
#byte portd=8
//#bit portb3 = 0x06.3

#define LCD_ENABLE_PIN  PIN_C5                                    ////
#define LCD_RS_PIN      PIN_C6                                    ////
#define LCD_RW_PIN      PIN_C7                                    ////
#define LCD_DATA4       PIN_D4                                    ////
#define LCD_DATA5       PIN_D5                                    ////
#define LCD_DATA6       PIN_D6                                    ////
#define LCD_DATA7       PIN_D7 

#include <lcd.c>

void main(void)
{
   set_tris_a(0xff);
   if(input(PIN_A0==1))
   {
   lcd_init();
   lcd_putc("Abrir Cofre");
   lcd_putc("\nOpciones");
   }
}

Tokes

Una pregunta, mi amigo: ¿La librería lcd.c que incluyes es la que viene por defecto con el compilador?

Si es así, para cambiar los pines (enable, rs, rw, etc.) no debes usar #define. Lo que debes hacer es modificar la librería lcd.c.

Esta librería puede operar con el PORTB o con el PORTD. Por defecto es el PORTD. Si quieres utilizar el PORTB debes definir en tu programa principal, antes de incluir la librería, lo siguiente:

#define   use_portb_lcd

Si quieres cambiar la configuración de los pines debes alterar la librería. En ella se declara una estructura que define la posición de los pines de control y de datos del lcd dentro del puerto seleccionado.

struct lcd_pin_map {                 // This structure is overlayed
           BOOLEAN enable;           // on to an I/O port to gain
           BOOLEAN rs;               // access to the LCD pins.
           BOOLEAN rw;               // The bits are allocated from
           BOOLEAN unused;           // low order up.  ENABLE will
           int     data : 4;         // be pin B0.
        } lcd;


Lo anterior quiere decir que el pin enable ocupa el bit 0 del PORT seleccionado. El pin RS ocupa el bit 1; el pin RW, el bit 2; el bit 3 no se usa, y los bits 4, 5, 6 y 7 son los pines de datos.

Espero haberte ayudado. Hasta la próxima.

vetealdemonio

Gracias Tokes por responderme creo que ya he solucionado mi problema, he modificado mi código ya me sale bien el menú, ahora me toca probarlo con un teclado 4x4. Acerca de tu respuesta es cierto que se puede modificar la librería lcd.c que viene por defecto en el ccs pero también se puede modificar como lo hago en mi código sin necesidad de modificar la librería. En realidad estoy tratando de hacer una cerradura tipo cofre electrónico pero voy al suave aprendiendo poco a poco por eso me gusta probar partes de código para entender completamente. Al final mi código quedo de esta forma mírenlo y denme sus comentarios.

#include <16F877A.h>

#fuses noprotect,nowdt,noput,nolvp,nowrt,HS

#use delay(clock=8M)

#byte porta = 0x05
#byte portc = 0x07

#define LCD_ENABLE_PIN  PIN_C5                                    ////
#define LCD_RS_PIN      PIN_C6                                    ////
#define LCD_RW_PIN      PIN_C7                                    ////
#define LCD_DATA4       PIN_D4                                    ////
#define LCD_DATA5       PIN_D5                                    ////
#define LCD_DATA6       PIN_D6                                    ////
#define LCD_DATA7       PIN_D7 

#use fast_io(A)
#include <lcd.c>

void mostrar(void)
{
   lcd_putc("\fAbrir Cofre==> A");
   lcd_putc("\nOpciones ==> B"); 
}

void main(void)
{
   set_tris_a(0xff);
   lcd_init();
   lcd_gotoxy(4,1);
   lcd_putc("Bienvenidos");
   lcd_putc("\nPuls Cualq Tecla");
   while(1)
   {
      if(input(PIN_A0)==0){
      delay_ms(200);
      mostrar();
      }
   }
}


PD: Necesito ayuda, me he fijado que el ccs solo trae una librería para un teclado de 3x4. Que puedo modificar para poder usarla con un teclado de 4x4. Si tienen alguna librería o si me dicen como modificar la que viene por defecto se los agradecería mucho.