Curso de programación en C para microcontroladores PIC

Andres Cuenca

Moderador general
#1
Presentación donde se explica de una manera muy didáctica el entorno de programación en C para microntroladores PIC, usando como ejemplo la familia 16f87xx.

Contenido:

1. IDES
2. BOOTLOADER
3. PLATAFORMAS DESARROLLO DE PROYECTOS
4. RECORDATORIO DE C
5. PROGRAMACIÓN EN C DE LOS MÓDULOS DEL PIC16F8XX.
  • ENTRADA/SALIDA DIGITAL.
    COMUNICACIONES RS232.
    INTERRUPCIONES.
    CONVERTIDOR A/D.
    CCP (PWM).

Espero que les sea de utilidad.

Saludos.
 

Adjuntos

Última edición:
#2
Andaba buscando un cursillo de c para programar pics ya que en un curso que tuve ahora nos enseñaban a programar en assembler y aunque ya no me molesta, hay muchas cosas que son mucho mas fáciles con C.

de paso quiero compartir con ustedes un tutorial que encontré sobre lo mismo

Espero que sirva y complemente al otro

Saludos
 

Adjuntos

#3
Realmente te felicito. Muy buen tutorial, de los mejores que he visto en español.

Hace poco mas de un año que uso el C y la verdad me dio mucha lata al principio por que me tocaba traducir los tutoriales en ingles y el help del CCS.

Te quería preguntar si me permitirías publicarlo en mi web. Agradezco de antemano tu rta.
 
#5
No conozco mucho de programacion en C sobre pics, pero un consejo q no esta nunca de mas y sirve para cualquier procesador, sea un pic o un pentium itanium...

Q tu compilador de C sea ESTANDARD ... Esto te permitira portar tus programas entre microcontroladores con mayor facilidad. ( si te cansas del pic y quieres cambiar al avr por ejemplo ;).

Leete este manual:

http://www.crasseux.com/books/ctut.pdf

Suerte, y buena lectura ;)

Salu2
 

Adjuntos

Última edición por un moderador:
#6
hola, primeramente, soy nuevo en este foro, mi problema es lo siguiente:

tengo que crear el codigo en "c" del siguiente problema
se supone que cada vez que presione un push botton , se va realizando un conteo hasta que llegue a nueve reflejandolo en un display

es decir que si orpimo una vez el push botton en el display me marque 1, si lo oprimo una segunda vez me marque 2, uan tercera vez un 3, asi sucesivamente

la parte del display ya la tengo solucionada mi problema es lo del push botton

mi logica es la siguiente


if(input(pin_a0)==true)
contador++;

if (contador==0)
output_b(63);

if (contador==1)
output_b(6);

if (contador==2)
output_b(91);

y asi hasta llegar al nueve

no simula correctamente y no funciona al momento de cargarlo al pic
me dicen que necesito crear un codigo para evitar el rebote
para ser algo tan sencillo, se ma ha complicado el asunto
porfavor ayuda
 
#7
es simple... cuando leas el cambio de estado en el puerto solo pon el micro a contar un retardo de 5mS y vuelve a leer al finalizar... si ambas lecturas son identicas entonces consideras que el boton esta presionado y levantas una bandera de advertencia para el resto del programa...
 
#9
Bueno, el lenguage C es muy poderoso, con una sola instruccion puedes hacer lo mismo que en Ensamblador pero hecho en varias lineas; sin embargo C ocupa mas memoria en el micro. Tambien se dice que con Ensamblador se tiene un accceso mas directo a los recursos del micro. Yo prefiero C, y un buen compilador (para mi) es el CCS. Ademas que tiene un plug-in para trabajar en MPLAB.
Un saludo.
 
#10
Bueno, el lenguage C es muy poderoso, con una sola instruccion puedes hacer lo mismo que en Ensamblador pero hecho en varias lineas; sin embargo C ocupa mas memoria en el micro. Tambien se dice que con Ensamblador se tiene un accceso mas directo a los recursos del micro. Yo prefiero C, y un buen compilador (para mi) es el CCS. Ademas que tiene un plug-in para trabajar en MPLAB.
Un saludo.
Con respecto a la memoria: si escribes un programa corto, sí, puede ocuparte más memoria, pero cuando escribes un programa extenso, el resultado final es que terminas ocupando menos ya que el compilador te reduce mucho la cantidad de instrucciones necesarias (claro, a no ser que seas un guru de la programación en assembler).

Saludos
 
#11
Hola gente, os escribo en este post, aunque se que no es exactamente lo que busco, pero qiza sepais informarme.
El tema es que nocesito programar en C, y en el programa codewarrior una dsp de motorola, no se si podriais ayudarme o facilitarme algun tutorial de codewarrior.
Un saludo y gracias de antemano
 
#12
Muchas gracias por el curso, me declaro un aficionado a la electrónica y a la programación en PIC, desde ya hace varios años tenia esto olvidado, por cuestiones de trabajo, pero quiero retomarlo porque quiero empezar a trabajar en lo que me gusta. Aprendí a programar en assembler y confieso que lo de C en microcontroladores es un poco nuevo para mi, pero se que con la ayuda de estos foros volvere a retomar la forma rapidamente.
Gracias
 
#13
hola queria saber de donde obtener el compilador ccs..puesto q he coseguid uno en la web..per no pued instalarlo si alguien me brinda informacion desde ya agradecido
 
#15
Hay un curso muy bueno de
MPLAB C18 desde 0.


La verdad qu eel 16F876A y 16F877A no los fabrica www.microchip.com no los vende, ahora su sustituto es el 16F886 y 16F887. La verdad que programar C con estos PIC no valen la pena, para ello están los 18F como 18F2550 y 18F4550 con USB 2.0 incluido. (Ya aparecerán PIC de USB 3.0). La verdad que veo que hasta algunas tiendas los 18F son más baratos que los 16F, los 16F son para ensamblador (ASM).

Mejor usar 18F para C que están diseñados para ellos. Voy a escribir algo que parece contradictorio. Han sacado nuevos PIC16F que si están un poco orientado a programarlo a C aunque su base es ASM ya que estos PIC mejoraron su núcleo, más RAM y con nuevas 14 instrucciones, sobre todo por primera vez hay una instrucción de RESET por software cosa que no se había visto antes y muchos lo pedía.

http://www.elektor.es/noticias/prim..._source=ES&utm_medium=email&utm_campaign=news

http://www.elektor.es/noticias/los-..._source=ES&utm_medium=email&utm_campaign=news

Ojalá se hagan manuales de eso.



Saludo.
 
Última edición:
#16
Hola Meta,si irme del tema,estaba pensando seriamente en aprender el C18,te parece que es una buena opcion? ya que siempre programe pic en la gama 16f en ASM,y quiero pasar a la familia 18F en la cual,usar ensamblador se hace mas pesadito,una pregunta importante? si bien programoa algo en CCS,seguro que el C18 es mucho mejor para esta familia verdad?
 

Nepper

Miembro algo reconocido
#17
gran aporte colegas!
tengo que retomar el tema de los pics sea como sea.... me estoy oxidando y se me vence el "conocimiento"... no quiero decir que perdí 3 años de la secundaria....
 
#19
Hola a todos

estoy programando en C un 16f877a y la cosa es que necesito leer los bits del puerto E individualmente, tengo conectadas ahi resistencias y botones y de ahi a la fuente, tengo algo como esto


port_e_pullups(TRUE);
set_tris_E=(0b00000111);
if(bit_test(9,1))
{
// aqui irian las instrucciones en caso de que se este presionando el boton conectado al pin RE0
}
while(true){}
}

se que estoy haciendo algo mal porque no me sale o no se que me falte o que onda

mucho agradecere su ayuda
 
#20
lo bueno se c es q se puede escribir partes de codigo en assembler ademas en c existen librerias anterior mente creadas. en consecuencia nuestro codigo sera mas resumido
 
Arriba