
Para aprender a programar microcontroladores en algún lenguaje de programación necesitaremos, además de una buena guía, un conjunto de programas que nos permita a través del análisis del mismo, entender mejor las características y funciones de nuestro microcontrolador.
Es así como, dándome a la tarea de buscar algunos programas escritos en C para los microcontroladores PIC de Microchip (utilizando el compilador PCW de CCS), me tope con una grandiosa colección de 58 programas escritos por Vszener de foros todopic. Una serie de programas que aunque, escritos para el 16F648A, son fácilmente implementables en otros modelos de PIC. Además, podremos descargar los archivos de código y de simulación en Isis Proteus para cada uno de ellos (previa registración en el foro).
A continuación, algunos de los programas que encontrarás:
- Parpadeo de un LED cada medio segundo.
- Contador ascendente de 0 a 9.
- Dado digital.
- Escribir y leer EEPROM interna del PIC.
- LCD y teclado matricial.
¿Que más se puede pedir para comenzar a programar microcontroladores PIC en C?
Ir a: 58 programas en C para el compilador PCW de CCS.
Gracias, es lo que necesitaba para seguir aprendiendo C para mi micro.
ResponderEliminargracias vale mia te debo una
ResponderEliminarGracias hermano... se te agradece...!!!
ResponderEliminarNo puedo ver
ResponderEliminarExcelente y muy útil información. Mil gracias
ResponderEliminarholaaa
ResponderEliminarExcelente aporte amigo, me sirvió muchísimo para poder practicar, espero que más adelante hagas más ejemplos
ResponderEliminarHola, una consulta estoy queriendo armar una condición if, pero cuando lo simulo en el proteus no me la reconoce.
ResponderEliminarif(PIN_B7==0){
for(i=0;i<10;i++){
PORTB=0b00000000;
delay_ms(350);
PORTB=0b00000001;
}
La idea es que el for se ejecute cuando la entrada RB7 del pic esta en 0. Pero no estaría funcionando.
Gracias
Hola, tengo una duda (soy nuevo en esto), esta programación, se hace en el programa C++
ResponderEliminarif(input(pin_b7==0) {
ResponderEliminar}
if(input(pin_b7==0)) {
ResponderEliminar}
if(PIN_B7==0){
ResponderEliminarfor(i=0;i<10;i++){
PORTB=0b00000000;
delay_ms(350);
PORTB=0b00000001;
"}"
}
Vamos a ver, primero unos detalles.-
1ºFalta una llave de cierre del if o del for.
2ºCuidado dentro del for no defines i for(int i=0;i<10;i++)
Después de lo anterior ... el programa te funcionará pero no lo verás, porque el problema que tienes es que cada vez que se ejecuta una pasada del for, el PIN_B7 pasa inmediatamente de 1 a 0 porque no tienes un segundo retardo después PORTB=0b00000001, o sea en la salida del for.
Recomendaciones: si quieres evitar problemas siempre que ejecutes algo, actúa solo sobre lo imprescindible, en este caso sobre el PIN_B7 en vez de PORTB, ya que estás actuando sobre todo el puerto y quizás no haga falta, importante al terminar deja todo lo que has alterado como estaba, todo es todo, variables, salidas, pilas de datos, etc.
Prueba esto.-
if(!PIN_B7){
for(char i=0; i<10; i++){
PIN_B7=1; // empieza por cambiar algo lo imperscindible
delay_ms(500); // pon mas retardo para verlo mejor
PIN_B7=0; // siempre termina como empezaste
delay_ms(500); // imprescindible para ver el cambio
}
}
Bueno
ResponderEliminarUtiliza nuestro foro de electronica si tienes dudas no relacionadas con este tema.