Como empezar a programar PIC en C

Como están todos

Me estoy iniciando en la programación de PIC, ya e programado un poco en ensamblador pero quiero aprender lenguaje C para PIC, alguien sabe de alguna pagina o algún tutoríal de C para PIC con el que pueda aprender y no me caería nada mal algunas recomendaciones para este leguaje.

El programa que tengo para trabajar con C es: PIC C Compiler
 
J.D.R. dijo:
Como están todos

Me estoy iniciando en la programación de PIC, ya e programado un poco en ensamblador pero quiero aprender lenguaje C para PIC, alguien sabe de alguna pagina o algún tutoríal de C para PIC con el que pueda aprender y no me caería nada mal algunas recomendaciones para este leguaje.

El programa que tengo para trabajar con C es: PIC C Compiler

Te sugiero que compres un buen libro de C, hay muchos y sería largo sugerir alguno. El punto es que lo principal es que aprendas la sintaxis de un programa en C, a declarar variables, a comprender sus directivas, los bucles, los llamados a funciones, punteros, etc.

Una vez que conozcas todo eso, recién te conviene meterte de lleno en algún compilador para PICs.

Saludos
 
Hola a todos, gracias por recibirme en el foro, es la primera vez que ingreso al mismo, creo que , uds estan con este tema me parece que aca puedo publicar mi duda, estoy intentando hacer un programa para un pic 16F877a en lenguaje C , la idea de esta rutina es que por hyper terminal mandarle al pic un caracter y que segun cual se el caracter encienda uno u otro led, en el caso de que el caracter sea una 's' encienda el led conectado a pata 2 RA0 y si es distinto de 's' encienda el led conectado a pata 4 RA2 les adjunto el codigo que tengo escrito, lo trate de simular en proteus pero solo logro que sea cual sea el caracter encoiende siempre el led de pata 4 RA2, si no los molesto demasiado algien puede controlar mi codigo , desde ya muchas gracias tony.
codigo :
#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#endif
#include <input.c>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
char lee(void);
char dato;
char pregunto;
void main() {
SET_TRIS_A(0x00);
SET_TRIS_B(0x00);
SET_TRIS_D(0x00);
SET_TRIS_C(0x80);
pregunto = 's';
do {
dato = getc();
//dato = lee();
printf(dato);
if(dato == pregunto){
OUTPUT_HIGH(PIN_A0);
}else{
OUTPUT_HIGH(PIN_A2);
}
delay_ms(60);
OUTPUT_LOW(PIN_A0);
OUTPUT_LOW(PIN_A2);
} while (TRUE);

}
char lee(){
return(getc());
 
Hola Tony_lp.

Por lo que veo, de la forma que lees el caracter, es constante.

Prueba a leer solo quando exista un caracter.

Prueba de substituir la rutina de lectura por:

do{
while ( !kbhit() ) ; // Espero aquí hasta que exista un caracter en el puerto serie.

dato = getc(); // Si existe caracter, lo leo.
if (dato == pregunto)
.
.

}

A ver si te funciona con esta modificacion.

Un Saludo.
 
Hola Paloky, agradezco tu respuesta rapida, probe el codigo que sugeriste pero sige sin andar para mi pensando el problema puede estar en que es lo que esta leyendo puede ser que no identifique el caracter de entrada, por eso que siempre entra por el else, te paso de nuevo mi codigo con el agregado lo escribi en la misma funcion main y ademas lo probe desde una funcion, creo que tengo que investigar por el lado de que esta recibiendo no se que te parece a vos paso el codigo gracias y disculpa la molestia :
void main() {
SET_TRIS_A(0x00);
SET_TRIS_B(0x00);
SET_TRIS_D(0x00);
SET_TRIS_C(0x80);
pregunto = 's';
do {
while(!kbhit())
delay_us(10);
dato = getc();
//dato = lee();
//printf(dato);
if(dato == pregunto){
OUTPUT_HIGH(PIN_A0);
}else{
OUTPUT_HIGH(PIN_A2);
}
delay_ms(60);
OUTPUT_LOW(PIN_A0);
OUTPUT_LOW(PIN_A2);
} while (TRUE);

}
char lee(){
long timeout;
short timeout_error;
timeout_error=FALSE;
timeout=0;
while(!kbhit()&&(++timeout<50000))
delay_us(10);
if(kbhit()){
return(getc());
}
else {
timeout_error=TRUE;
return(0);
}
}
 
Hola de nuevo Paloky, estuve probando al final el problema era de compatibilidad de velocidades de transmision y recepcion setie todo a una velocidad de clock de 1Mhz y uso delay de 42us y asi salio andando ok , desde ya muchas gracias si les parece, puedo subir para que lo tengan tanto el codigo como el archivo para simular todo en proteus basta que me avisen graicas estamos en contacto un saludo a todos
 
Buenas necesito una ayuda para copiar un pic 12c805a e sabido que este pic despuÉs de grabado no se puede reutilizar no se puede leer porque no aparece completo parece protegido.
Bueno este hace las siguiente funciÓn enciende un led ( rojo) que dura encendido dos minuto al minuto del recorrido va apareciendo el led ( azul) ase la mezcla de los dos colores y completa el otro minuto a los dos minutos se desvanece el led (rojo) y que da el led ( azul) encendido por otro minuto luego al minuto va apareciendo el led ( verde ) y hace la mezcla por otro minuto mas luego se desvanece el led ( azul) y que da el verde al otro minuto encienden los tres dando por su mezcla el color ( blanco) .
Esto da una mezcla de 7 colores esto debe tener un sencillo programa por lo que parece y necesito hacerlo pero no se como. Alguien me puede ayudar estarÉ gratamente agradecido
 
Quetal, disculpe las molestias pero me gustaria ver la forma si alguien pueda recomendarme alguna pagina de internet o algun tutorial para aprender lo basico de lenguaje C para programar Pic's, soy estudiante de electronica pero tengo las ganas de adelantarme un poco ya que me llama la atencion.................... bueno muchas gracias por la atencion prestada................ saludos a todos los del foro !!!!!!
 
Hola wlopez !!
Si no puedes pasarme esas diapositivas estaria muy bien............. disculpa la tardanza.................. bueno me despido y muchas gracias por tener respuesta.................... !!!! gracias
 
Atrás
Arriba