Está en la página 1de 6

Robtica 0.

Programacin rpida MicroC pro for avr


El contenido de este libro est protegido por la licencia de documentacin libre GFDL(GNU
Free Documentation License)

Autores:
Indice
1. Hacer titilar un LED.
2. Hacer titilar todos los LEDs a la vez.
{
PORTB.B3=1; //Enciende el LED.
delay_ms(500);//Espera 500 mili segundos.
PORTB.B0=0; //Apaga el LED.
delay_ms(500);//Espera 500 mili segundos.
}
{

while(1)

/*
Aclaraciones: Las etiquetas se utilizan por si se debe utilizar ese puerto para otra aplicacin, solo
sea
necesario cambiar en la etiqueta la posicin del nuevo puerto
*/
int main(void)
{
Config_Pin_Leds = 0XFF;
Leds = 0;

//Ciclo Infinito
while(1)
_delay_ms(500);
Leds ^= 0XFF;

//Se configuran Todos los Bits del Puerto B Como Salida


//Se inicializa el Puerto B en Ceros

//Retardo de 0.5 Segundos


//Complemento el PB3 del puerto B, es decir, el cuarto bit

}3

Hacer una oruga:

void main() {
1

Robtica 0.1
DDRB= 1; //Configura el puerto B3 como salida.
while(1)

//Bucle infinito.

{
PORTB.B0=1; //Enciende el LED1.
delay_ms(500);//Espera 500 mili segundos.
PORTB.B1=1; //Apaga el LED2.
delay_ms(500);//Espera 500 mili segundos.
PORTB.B2=1; //Enciende el LED3.
delay_ms(500);//Espera 500 mili segundos.
PORTB.B3=1; //Apaga el LED4.
delay_ms(500);//Espera 500 mili segundos.
PORTB.B4=1; //Enciende el LED5.
delay_ms(500);//Espera 500 mili segundos.
PORTB.B5=1; //Apaga el LED6.
delay_ms(500);//Espera 500 mili segundos.
PORTB.B6=1; //Enciende el LED7.
delay_ms(500);//Espera 500 mili segundos.
PORTB.B7=1; //Apaga el LED8.
delay_ms(500);//Espera 500 mili segundos.
PORTB=0;

//Apaga todos los LEDs.

}
}
Correciones
# define F_CPU 1000000UL
//Librerias
#include <avr/io.h>
#include <util/delay.h>
#define
Config_Pin_Leds
del Puerto B
#define
Leds
#define
Led_3
Puerto B, es decir el PB3

DDRB //Se etiqueta el Registro de Configuracin


PORTB //Se etiqueta el Puerto B
PB3
//Se etiqueta el cuarto Pin del

/*
Aclaraciones: Las etiquetas se utilizan por si se debe utilizar ese puerto para otra aplicacin, solo
sea
necesario cambiar en la etiqueta la posicin del nuevo puerto

Robtica 0.1
*/
int main(void)
{
Config_Pin_Leds = 0XFF;
//Se configuran Todos los Bits del Puerto B Como Salida
Leds = 0;
//Se inicializa el Puerto B en Ceros
unsigned char i;
//Ciclo Infinito
while(1)
{
//Este For recorre todos los 8 bits del puerto
for (i=0;i<8;i++)
{
Leds |= 0X01;
//Se realiza una OR con y se enciende el primer Bit
_delay_ms(500);
//Retardo de 0.5 Segundos
Leds = Leds<<1;
//Se rota el puerto de 1 en 1
}
Leds = 0X00;
//Se apaga todo el puerto
}
}

4 Hacer un programa para un semaforo


void main() {
DDRB= 1;
while(1)
{
PORTB.B0=1;

//Enciende Rojo1

PORTB.B5=1;

//Enciende Verde2

Delay_ms(3000);//Retardo de 3 Segundos
PORTB.B5=0;

//Apaga Verde2

PORTB.B0=1;

//Enciende Amarillo2

Delay_ms(1000);//Retardo de 1 Segundos
PORTB.B4=0;

//Apaga Amarillo2

PORTB.B0=0;

//Apagar Rojo1

PORTB.B3=1;

//Enciende Rojo2

PORTB.B2=1;

//Enciende Verde1

Delay_ms(3000);//Retardo de 3 Segundos
PORTB.B2=0;

//Apaga Verde1

PORTB.B1=1;

//Enciende Amarillo1

Delay_ms(1000);//Retardo de 1 Segundo
PORTB.B1=0;

//Apaga Amarillo1
3

Robtica 0.1
PORTB.B3=0;

//Apaga Rojo2

}
}
Correcciones
# define F_CPU 1000000UL
//Librerias
#include <avr/io.h>
#include <util/delay.h>
#define
Puerto B
#define
#define
#define
#define
#define
#define
#define

Config_Pin_Sem

DDRB //Se etiqueta el Registro de Configuracin del

Semaforos
Sem_1_R
Sem_1_A
Sem_1_V
Sem_2_R
Sem_2_A
Sem_2_V

PORTB //Se etiqueta el Puerto B


PB0
//Semaforo
PB1
//Semaforo
PB2
//Semaforo
PB3
//Semaforo
PB4
//Semaforo
PB5
//Semaforo

1
1
1
2
2
2

Bombillo
Bombillo
Bombillo
Bombillo
Bombillo
Bombillo

Rojo
Amarillo
Verde
Rojo
Amarillo
Verde

int main(void)
{
Config_Pin_Sem = 0XFF;//Se configuran Todos los Bits del Puerto B Como Salida
Semaforos |= (1<<Sem_1_R) | (1<<Sem_2_V);//Se inicializan los semaforos, el semaforo 1
en rojo y el 2 en verde
_delay_ms(1000);

//Ciclo Infinito
while(1)
//Proceso de semaforo 2
Semaforos |= (1<<Sem_2_V);
_delay_ms(3000);
Semaforos &= ~(1<<Sem_2_V);
Semaforos |= (1<<Sem_2_A);
_delay_ms(1000);
Semaforos &= ~(1<<Sem_2_A);
Semaforos |= (1<<Sem_2_R);
//
_delay_ms(1000);
//

//Se enciende el bombillo Verde del semaforo 2


//Se apaga Verde de semaforo 2
//Semaforo dos enciende el amarillo
//Se apaga amarillo de semaforo 2
//Semaforo dos enciende el Rojo

//Delay mientras los ultimos carros pasan

//Proceso de semaforo 1
Semaforos &= ~(1<<Sem_1_R);
Semaforos |= (1<<Sem_1_A);
1

//Se apaga el bombillo rojo del semaforo 1


//Se enciende el bombillo amarillo del semaforo

_delay_ms(1000);
Semaforos &= ~(1<<Sem_1_A);
Semaforos |= (1<<Sem_1_V);
_delay_ms(3000);
Semaforos &= ~(1<<Sem_1_V);
Semaforos |= (1<<Sem_1_A);

//Se apagaga la luz amarilla del semaforo 1


//Se enciende la Luz verde del semaforo 1
//Se apaga luz verde del semaforo 1
//Se enciende el bombillo amarillo del semaforo

Robtica 0.1
_delay_ms(1000);
Semaforos &= ~(1<<Sem_1_A);
Semaforos |= (1<<Sem_1_R);
//
_delay_ms(1000);
//

//Se apagaga la luz amarilla del semaforo 1


//Se enciende el rojo del semaforo 1

//Delay mientras los ultimos carros pasan

Semaforos &= ~(1<<Sem_2_R);


Semaforos |= (1<<Sem_2_A);

//Se apaga el bombillo rojo del semaforo 2


//Se enciende el bombillo amarillo del semaforo

_delay_ms(1000);
Semaforos &= ~(1<<Sem_2_A);

//Se apagaga la luz amarilla del semaforo 2

Otros programas fciles para seguir:

1.

Encender un LED con un pulsador (Cuando se suelta el pulsador el LED se apaga).

2.

Encender un LED con un pulso del pulsador y apagarlo con un segundo pulso.

3.

Usar librera de sonido.

4.

Hacer un juego de luces.

5.

Hacer 3 juegos de luces con tres pulsadores que se activaran con cada pulsador.

6.

PWM por software.

7.

Hacer programa de control de tiempo para rel.

Robtica 0.1