Ejemplos, tutoriales y cursos de mikroC Pro for AVR

Hola como estan?, la idea de este tema es tratar de subir, compartir y el que pueda explicar como se programan los microcontroladores ATMEL AVR mediante ejemplos y explicaciones de por que no? propias ideas de como llevar una logica para programar.
De a poco ire subiendo toda la informacion que yo pude recojer de internet concerniente a este tema.

Este es un programa que parece ser una herramiente muy buena y poderasa por sus librerias pero no hay mucha informacion o no esta muy bien explicada, el objetivo de estos es eso. Llevar este tema a todos lo que les interese y quiera aportar sobre este compilador muy comprometedor.

saludos!!!



link del compilador : http://www.mikroe.com/eng/products/view/228/mikroc-pro-for-avr/
 
Última edición:
Genial me apunto, sobre los ejemplos se puede empezar por los que trae incluidos ya que ahí está prácticamente todiiiito... y la explicación de la sintaxis se encuentra en el archivo de ayuda (help) en ingles.
Lo demás pues al ser lenguaje C es más fácil de asimilar.

Bueno solo tengo el proteus a la mano pero con eso me presto...

saludos.
 
Hola vengo de trabajar con microcontroladores de parallax bs2 y otros en idioma pbasic hace poco me inicie en el mundo de los pic con el 16f628a y 16f873a aún sigo aprendiendo a programar estos micros usando mikroc pero ahora también tengo un ATtiny2313 y quisiera programarlo con mikroc el tema es que no he podido hacer titilar un led (por ahora solo simule en proteus y con el ATtiny13) mi programa es el siguiente:

void main() {
DDRB.B3 = 0;
while(1)
{
PORTB.B3=1;
delay_ms(500);
PORTB.B0=0;
PORTB.B3=1;
}
}
Alguien tiene algun libro en español sobre mikroc for avr? ...
 
Hola.
Los MikroC se parecen entre ellos y al C clásico, así que manuales al respecto y en C te van a servir

Más que un libro, es saber como funciona el AVR y eso se ve en la hoja de datos... registros y configuración.

Lo 1ro diria que ya estás configurando mal los puertos, a diferencia de los PICs los puertos en un AVR se configuran al revéz, es decir que 1 es salida y 0 es entrada... no confundir, leer la hoja de datos.

Saludos.
 
Saludos amigos,

También quisiera hacer parte he ir aportando al foro, seria bueno ir colgando ejemplos e ir aumentando cada vez su complejidad, yo programo Micros ATmel también, espero ir subiendo ejemplos.

Por ahora, le ayudo a nuestro compañero con el sgte ejemplo

void main() {
DDRB = 0X08;
while(1)
{
PORTB ^=(1<<PB3);
_delay_ms(500);
}
}
 
Sugiero emezar simulando en proteus con el microcontrolador ATtiny 2313 que es equivalente al PIC16F628A uno de los recomendados para empezar con PIC. También tendríamos que escribir un libro para organizar la información y ejemplos (siempre que se suba un ejemplo y se comprende cada instrucción del mismo hay que explicarlo mediante comentarios (//) para quien tenga menos idea pueda comprenderlo lo mejor posible. Les dejo un inicio del libro (los programas no estan porbados por un error del proteus es solo para que vean mi idea)
 

Adjuntos

  • Programación rapida en MikroC Pro For AVR.doc
    55 KB · Visitas: 250
Hola Buenas Noches,

Tiguer te comparto los programas probados, los adjunto dentro del documento que colgaste, voy a ir haciendo los otros ejercicios para seguir, por ahora cuelgo estos.

Saludos amigo, espero se pueda sacar un buen libro de esto y que les sirva a todos en el foro y al que desee iniciar con los AVR
 

Adjuntos

  • Programación rapida en MikroC Pro For AVR.doc
    83 KB · Visitas: 172
Última edición:
Muchachos, les comparto estos otros, no había tenido tiempo.

Ejercicio 1, LED con pulsador, enciende dos LED cuando se pulsa un botón.

Programa:
C:
# define F_CPU 1000000UL

//Librerias
#include <avr/io.h>
#include <util/delay.h>

#define    Config_        DDRB    //Registro que configura los pines de entrada y salida
#define    salidas        PORTB    //Registro que actúa sobre los pines del puerto de salida
#define    entradas        PINB    //Registro que se utiliza para leer el estado de un puerto
#define    pulsador        PINB0    //utilizado cuando de va a realizar la lectura de un pin
#define    led        PB1    //Bit del puerto como salida
#define    led2        PB2    //        ||

int main(void)
{
    Config_ = 0XFE;        //PINB0 como entrada y el resto como salidas
    //Ciclo Infinito
    while(1)
        {
    //Se pregunta si el pulsador se encuentra en 1, de lo contrario ingresa al else porque está en cero
        if (entradas & (1<<pulsador)){
            salidas |= (1<<led) | (1<<led2);    //Los dos led se encienden porque el pulsador es 1
        }else {
            salidas &= ~(1<<led) & ~(1<<led2);//los dos led se apagan porque el pulsador es 0
        }
       
        //Para preguntar si el pulsador se encuentra en cero se realiza de la siguiente forma
        /*if((PINB & (1<<PINB1))==0) salidas &= ~(1<<led) & ~(1<<led2);
        else salidas |= (1<<led) | (1<<led2);*/               
    }
}

Ejercicio 2, Enciende LED's con 1 pulsador y apaga LED's con otro pulsador.

Programa:
C:
//Frecuencia de Reloj
# define F_CPU 1000000UL

//Librerías
#include <avr/io.h>
#include <util/delay.h>

#define    Config_        DDRB    //Registro que configura los pines de entrada y salida
#define    salidas        PORTB    //Registro que actúa sobre los pines del puerto de salida
#define    entradas    PINB    //Registro que se utiliza para leer el estado de un puerto
#define    pulsador1    PINB0    //Pin por el cual se realizará la lectura del pulsador 1
#define    pulsador2    PINB1    //Pin por el cual se realizará la lectura del pulsador 2
#define    led1        PB2        //led1
#define    led2        PB3        //            ||

//Para preguntar por el estado de un pin de un puerto si es cero
//if((PINB & (1<<PINB1))==0)
//Para preguntar por el estado de un pin de un puerto si es uno
//if (PINB & (1<<PINB1))
int main(void)
{
    Config_ = 0XFC;        //PINB0 y PINB1 como entradas y el resto como salidas
    //Ciclo Infinito
    while(1)
    {
        //Si está presionado el pulsador 1, enciende Leds
        if ((entradas & (1<<pulsador1))==0){
            salidas |= (1<<led1) | (1<<led2);
        //Si no, si está presionado el pulsador 2, apaga leds
        }else if((entradas & (1<<pulsador2))==0){
            salidas &= ~(1<<led1) & ~(1<<led2);
        }
    }
}
 
Última edición por un moderador:
Atrás
Arriba