Anda di halaman 1dari 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

Anda mungkin juga menyukai