Está en la página 1de 33

ndice

I INTRODUCCIN

II PRCTICAS

1. Prctica 1
1.1. Objetivo . . . . . .
1.2. Destreza . . . . . .
1.3. Diagrama elctrico
1.4. Codigo . . . . . . .
1.4.1. Descripcin

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

8
8
8
8
9
9

2. Prctica 2
2.1. Objetivo . . . . . .
2.2. Destreza . . . . . .
2.3. Diagrama elctrico
2.4. Cdigo . . . . . . .
2.4.1. Descripcin

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

10
10
10
10
11
11

3. Prctica 3
3.1. Objetivo . . . . . .
3.2. Diagrama elctrico
3.3. Cdigo . . . . . . .
3.3.1. Descripcin

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

12
12
12
12
13

4. Prctica 4
4.1. Objetivo . . . . . .
4.2. Diagrama elctrico
4.3. Cdigo . . . . . . .
4.3.1. Descripcin

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

14
14
14
14
15

5. Prctica 5
5.1. Objetivo . . . . . .
5.2. Diagrama elctrico
5.3. Cdigo . . . . . . .
5.3.1. Descripcin

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

16
16
16
16
17

6. Prctica 7
6.1. Objetivo . . . . . .
6.2. Diagrama elctrico
6.3. Cdigo . . . . . . .
6.3.1. Descripcin

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

18
18
18
18
19

7. Prctica 8
7.1. Objetivo . . . . . .
7.2. Diagrama elctrico
7.3. Cdigo . . . . . . .
7.3.1. Descripcin

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

20
20
20
20
20

8. Prctica 9
8.1. Objetivo . . . . . .
8.2. Diagrama elctrico
8.3. Cdigo . . . . . . .
8.3.1. Descripcin

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

21
21
21
21
21

9. Prctica 10
9.1. Objetivo . . . . . .
9.2. Diagrama elctrico
9.3. Cdigo . . . . . . .
9.3.1. Descripcin

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

22
22
22
22
22

10.Prctica 11
23
10.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
10.2.Cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
10.2.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
11.Prctica 12
11.1.Objetivo . . . . . .
11.2.Diagrama elctrico
11.3.Cdigo . . . . . . .
11.3.1. Descripcin

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

24
24
24
24
24

12.Prctica 13
25
12.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.2.Cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.2.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
13.Prctica 14
26
13.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
13.2.Cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
13.2.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
14.Prctica 15
27
14.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
14.2.Cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
14.2.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
15.Prctica 16
28
15.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
15.2.Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

UNIVERSIDAD TECNOLGICA DE TEHUACN


Robtica
Reporte de Practicas
Luis Antonio Trinidad Cid
Francisco Gaspar Hernandez
Michael Milton Huerta Sevilla
19 de Octubre de 2015

Parte I

INTRODUCCIN
Microcontrolador
El microcontrolador es un circuito integrado de muy alta escala de integracin
que contiene las partes funcionales de un computador:
CPU (Central Processor Unit o Unidad de Procesamiento Central)
Memorias voltiles (RAM), para datos
Memorias no voltiles( ROM, PROM, EPROM) para escribir el programa
Lneas de entrada y salida para comunicarse con el mundo exterior.
Algunos perifricos (comunicacin serial, temporizador, convertidor A/D, etc)
Es decir el microcontrolador es un computador integrado en un solo chip. Integrar
todos estos elementos en un solo circuito integrado a significado desarrollar aplicaciones importantes en la industria al economizar materiales, tiempo y espacio.

ATMEL
ATMEL fabrica los microcontroladores de la familia AVR, esta nueva tecnologa
proporciona todos los beneficios habituales de arquitectura RISC y memoria flash
reprogramable elctricamente. La caracterstica que los identifica a estos microcontroladores de ATMEL es la memoria flash y eeprom que incorpora. AVR compite con
3

varias familias de microcontroladores bien establecidas en el mercado, tales como


8051 de Intel, 68HC11 de Motorola y la familia PIC de Microchip. La firma tambin
produce y vende varios subproductos de la popular familia 8051 con la diferencia de
que estn basados en la memoria flash.
El ATmega8 es un microcontrolador de la familia Atmel, contiene una arquitectura
tipo RISC, sus instrucciones se ejecutan en un solo ciclo de maquina, su estructura
elimina la necesidad de usar componentes externos ya que internamente contiene: osciladores, USART, SPI, resistencias pull-up, modulacin por anchura de pulso (PWM), convertidor ADC, comparador analgico y cronometros, estas son solo
algunas caractersticas que se encuentran en este dispositivo. Su programacin es
posible realizarla en leguaje C, assembly o Basic. Todo su sistema esta depositado
en una sola pastilla.

Caractersticas
Entre sus caractersticas encontramos:
Organizacin de memoria Flash
Capacidad de memoria EEPROM
Capacidad de memoria SRAM
Carcasa
Frecuencia de tacteado
Perifricos
Cantidad de entradas/salidas
Cantidad de canales PWM
Cantidad de timers 8-bit
Cantidad de timers 16-bit
Montaje
Tensin de trabajo
Cantidad de transductores A/C 10-bit

8kx8bit
512B
512B
DIP28
16MHz
RTC, comparador
23
3
2
1
THT
4.5...5.5V
6 92

Pines
El ATmega 8 cuenta con 26 pines de los cuales:
VCC y GND. Son los pines de alimentacin (+5 v) y tierra (0 v).
XTAL1 y XTAL2. Conectores del cristal de reloj externo.
RESET. Corresponde a la lnea de reset (entrada).
AVCC. Es el pin para conectar la fuente de alimentacin al convertidor A/D.
AREF. Para conectar una tensin de referencia para el conversor.
Puerto C(PC0 .. PC5). Tiene 7 bits, bidireccionales con resistencias internas pull up,
para cada bit.
Puerto B(PB7 .. PB0).
Puerto D (PD0..PD7).
PC6/RESET.

Figura 1: Diagrama de pines del ATMEGA8.

El microcontrolador tiene varios puertos de los cuales podemos hacer uso, estos
puertos los podemos configurar como nosotros queramos, como entrada o como
salida, para poder hacer esto es necesario escribir en los registros del puerto para
darle las instrucciones necesarias. Existen tres principales formas de controlar los
puertos, tomamos como ejemplo el puerto B.
DDR
Para obtener que el puerto B se comporte como entrada, como salida o ambos,
es necesario indicarle esto en el DDR, este registro no activara ni desactivara ningn
pin del microcontrolador, simplemente le indicara al puerto si este ser entrada o
salida.

Figura 2: Direccion de registro de datos del Puerto B - DDRB.


Para indicarle al DDR si el puerto sea de entrada o salida, el 1 indica salida, y el 0
entrada, se le puede escribir como hexadecimal, decimal, o binario, por ejemplo, si
queremos que todos los bits del puerto sean salidas lo podemos escribir como sigue:

DDRB=0xFF;
DDRB=255;
DDRB=0b11111111;

//Como Hexadecimal
//Como Decimal
//Como Binario

Si queremos que algunos bits funcionen como entradas:


DDRB=0x8C;
DDRB=140;
DDRB=0b10001100;

//Como Hexadecimal
//Como Decimal
//Como Binario

Se puede escribir en cualquiera de los tres tipos (binario hexadecimal y decimal),


en todos los registros.

PORT
El PORT controla la salida del puerto, este se usa en caso de que el DDR haya sido seleccionado como salida, un 1 en el PORT indica un nivel alto en el puerto como
salida, un 0 indica que el pin esta en nivel bajo. Varias configuraciones de ejemplo
para el PORT:
PORTB=0xFF;
PORTB=0x00;
PORTB=0x03;

//Todos los pines estan activos


//Todos los pines estan desactivados
//Solo los primeros dos bits del puerto estan activos

Figura 3: Registro de datos del Puerto B - PORTB.

PIN
El PIN es un registro de lectura (notar en la imagen del registro donde dice Read/Write, todos son R), este registro nos da un 1 si a un pin del microcontrolador se le est
alimentando externamente, y un cero si esta en nivel bajo de voltaje. En este caso el
valor del PIN se le puede asignar a una variable la cual guardara el valor del miso, al
momento de ejecutar la instruccin.
valor=PINB; //El valor de PINB es asignado a la variable "valor"

Figura 4: Direccion de los pines de entrada del Puerto B - PINB

Programacin AVR
Para programar el microcontrolador se hara uso de el software de AVR Studio el
cual utiliza el lenguje C, acontinuacion se describen los detalles del programa.

#define F_CPU 8000000L

Esta linea define la frecuencia a la que trabajar el micro, esta definicin sirve para
hacer calculos en algunas librerias, como en la librera delay.h, que requiere saber la
frecuencia del micro para poder calcular los tiempos de espera de sus rutinas.

#include <avr/io.h>

Incluimos la librera avr/io que contiene la informacin de las entradas y salidas del
microcontrolador.

#include <util/delay.h>

Esta librera es necesaria, ya que contiene todas las funciones para poder utilizar los
retardos de tiempo.

int main (void){

El main es la funcin principal, es donde el programa inicia, siempre es necesario


declarar la funcin main.

while(1){

El ciclo while, es un ciclo que ejecuta todas las instrucciones que se encuentran dentro de sus corchetes, siempre y cuando lo que este dentro del parntesis se cumpla,
en este caso el 1 es lo mismo que TRUE, por lo tanto, siempre se cumple y se ejecutaran cclicamente las instrucciones dentro del while. Esto se hace con la intencin
de que el programa nunca se detenga, y siempre repita lo mismo.

Parte II

PRCTICAS
1. Prctica 1
1.1. Objetivo
Disear un programa que encienda un led, dure 500ms y se apague; esta conmutacin debe darse en cadaterminal del puerto B, del LSB al MSB.

1.2. Destreza
Partiendo del cdigo con el que se logr hacer funcionar el ATMEGA8, disee un
cdigo que resuelva elproblema.

1.3. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 5: Diagrama elctrico de la Prctica 1.

1.4. Codigo

Listing 1: Cdigo AVR


1
2
3
4
5
6

/*
* Practica_1.c
*
* Created: 21/09/2015 08:51:43 AM
*
*/

7
8
9

#define F_CPU 1000000UL //Oscilador interno 10 Mhz

10
11
12

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

13
14
15
16

int main(void)
{
DDRB = 0xFF; // Configurar el puerto B como salidas

17

while(1)
{
PORTB = PORTB | 0x01; // Aplicamos or
_delay_ms(500);
PORTB = PORTB & 0xFE;
_delay_ms(500);
}

18
19
20
21
22
23
24
25

1.4.1. Descripcin

2. Prctica 2
2.1. Objetivo
Disear un programa que muestre los digitos en hexadecimal (01,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
en undisplay 7 segmentos.

2.2. Destreza
El punto clave es guardar los datos en la memoria FLASH usando la libreria
avr/pgmspace.h. Recuerde que solo toma los 4 LSB del puerto D (Puerto D como
entrada). El display est conectado al puerto B.

2.3. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 6: Diagrama elctrico de la Prctica 2.

10

2.4. Cdigo

Listing 2: Cdigo Prctica 2


1
2
3
4
5
6

/*
* Practica_2.c
*
* Created: 21/09/2015 08:51:43 AM
*/

7
8
9

#include <avr/io.h>
#include <avr/pgmspace.h>

10
11

const char tabla [] ={

12
13
14

0x3F,
0x66,
0x7F,
0x39,

0x06,
0x6D,
0x67,
0x5E,

0x5B,
0x7D,
0x77,
0x79,

0x4F,
0x07,
0x7C,
0x71};

15
16
17
18
19
20
21

int main(void)
{
unsigned char dato;
DDRD = 0x00;
PORTD = 0x00;
DDRB = 0xFF;

22

while (1)
{
dato = PIND & 0x0F;
PORTB = pgm_read_byte (& tabla[dato]);
}

23
24
25
26
27
28

2.4.1. Descripcin

11

3. Prctica 3
3.1. Objetivo
Disear una ALU (Unidad Aritmtica Lgica) de 4 bits.

3.2. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 7: Diagrama elctrico de la Prctica 3.

3.3. Cdigo

Listing 3: Cdigo Prctica 3


1
2
3
4
5
6

/*
* Practica_3.c
*
* Created: 21/09/2015 09:01:43 AM
*/

12

7
8

#include <avr/io.h>

9
10
11
12

int main(void)
{
unsigned char Dig1, Dig2, R, Oper;

13

DDRB = 0x00
DDRC = 0x00
PORTB= 0x00
PORTC= 0x00
DDRD=0xFF;

14
15
16
17
18

;
;
; // Resistores
; // Resistores

19

while (1)
{
Dig1 = PINB&0x0F ;
Dig2 =(PINB&0xF0)>>4;
Oper = PINC&0x07 ;

20
21
22
23
24
25

switch(Oper)
{
case 0: R = A +
break;
case 1: R = A break;
case 2: R = A *
break;
case 3: R = A &
break;
case 4: R = A |
break;
default: R = 0;
}
PORTD=R;

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

B;
B;
B;
B;

41
42

B;

3.3.1. Descripcin

13

Pull Down
Pull Down

4. Prctica 4
4.1. Objetivo
Mostrar letras (segn las posibilidades)en un display 7 segmentos, formando
una palabra de mnimo 4 letras. Estas letras deben visulizarse cada 400ms. Disear las letras como se hizo en clase.

4.2. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 8: Diagrama elctrico de la Prctica4.

4.3. Cdigo

Listing 4: Cdigo Prctica 4


1
2
3
4
5

/*
* Practica_4.c
*
* Created: 18/09/2015 07:21:54 AM
*/

6
7

#define F_CPU 1000000UL

14

8
9

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

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

int main(void)
{
DDRB = 0xFF;
while(1)
{
PORTB = 0x7D;
_delay_ms(400);
PORTB = 0xF9;
_delay_ms(400);
PORTB = 0x50;
_delay_ms(400);
PORTB = 0x77;
_delay_ms(400);
PORTB = 0x50;
_delay_ms(400);
PORTB = 0x5E;
_delay_ms(400);
PORTB = 0x3F;
_delay_ms(400);
}
}

4.3.1. Descripcin

15

5. Prctica 5
5.1. Objetivo
Disear un registro de corrimiento de bits utilizando el puerto D. Debe ir del LSB
al MSB y viceversa.

5.2. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 9: Diagrama elctrico de la Prctica 5.

5.3. Cdigo

Listing 5: Cdigo Prctica 5


1
2
3
4
5

/*
* Proyecto_5.c
*
* Created: 18/09/2015 07:38:21 AM
*/

6
7
8
9

#define F_CPU 1000000UL


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

10
11
12
13

int main(void)
{
DDRB = 0xFF;

16

PORTD = 0x01;
while(1)
{
while (PORTB < 0x80)
{
PORTD = PORTD << 1; //Recorrer a la izquierda
_delay_ms(300);
}
while (PORTD > 0x01)
{
PORTD = PORTD >> 1; //Recorrer a la derecha
_delay_ms(300);
}
}

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

5.3.1. Descripcin

17

6. Prctica 7
6.1. Objetivo
Utilizar interrupciones y hacer conmutar el LSB del Puerto B.

6.2. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 10: Diagrama elctrico de la Prctica 7.

6.3. Cdigo

Listing 6: Cdigo Prctica 7


1
2
3
4
5

/*
* Proyecto_7.c
*
* Created: 18/09/2015 07:38:21 AM
*/

6
7
8

#include <avr/io.h>
#include <avr/interrupt.h>

9
10
11
12
13

ISR (INT0_vect)
{
PORTB = PORTB^0X01; //OR EXCLUSIVE PARA CONMUTAR LSB
}

14
15

int main ()

18

16

{
DDRD = 0X00; //PUERTO D COMO ENTRADA
PORTD = 0XFF; //RESISTOR PULL UP

17
18
19

DDRB = 0XFF;

20

//PUERTO B COMO SALIDA

21

MCUCR= 0X02;//CONFIGURACION DE INTERRUPCION POR FLANCO DE BAJADA


GICR = 0X40;//HABILITA INTERRUPCION

22
23
24

PORTB = 0X00; //ESTADO INICIAL DE LA SALIDA


sei () ;
//HABILITADOR GLOBAL DE INTERRUPCIONES

25
26
27

while (1)
{

28
29

asm( "nop" ) ;

30

31
32

6.3.1. Descripcin

19

7. Prctica 8
7.1. Objetivo
Utilizar interrupciones y hacer conmutar el LSB del Puerto B durante 2000ms.

7.2. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 11: Diagrama elctrico de la Prctica 8.

7.3. Cdigo

Listing 7: Cdigo Prctica 8


1
2
3
4

#define
#include
#include
#include

F_CPU 1000000UL
<avr/io.h>
<avr/interrupt.h>
<util/delay.h>

5
6
7
8
9
10
11

ISR (INT0_vect)
{
PORTB = 0x01;
_delay_ms(2000);
PORTB = 0x00;
}

12
13
14
15

int main(void)
{
DDRD = 0x00;

20

PORTD = 0xFF;
DDRB = 0xFF;

16
17
18

cli ();

19
20

MCUCR = 0x02;
GICR = 0x40;

21
22
23

sei ();

24
25

while(1)
{
PORTB = 0x40;
}

26
27
28
29
30

7.3.1. Descripcin

21

8. Prctica 9
8.1. Objetivo
Realice contador de eventos ascendente y descendente con salida en binario.

8.2. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 12: Diagrama elctrico de la Prctica 9.

8.3. Cdigo

Listing 8: Cdigo Prctica 9


1
2

#include <avr/io.h>
#include <avr/interrupt.h>

3
4

unsigned char cuenta; // variable global

5
6
7
8
9
10

ISR (INT0_vect)
{
cuenta ++;
PORTB = cuenta;
}

11
12
13

ISR (INT1_vect)
{

22

cuenta--;
PORTB = cuenta;

14
15
16

17
18
19
20
21
22

int main(void)
{
DDRD = 0x00; //Puerto D como entrada
PORTD = 0xFF; // Configuracion Pull Up
DDRB = 0xFF; // Puerto B como salida

23

MCUCR = 0x0A; // Configuracion por flanco de bajada


GICR = 0xC0; // Hablita INT1 E INT0
cuenta = 0;
PORTB = cuenta; // inicializa la salida
sei ();

24
25
26
27
28
29

while(1)
{
asm ("nop");
}

30
31
32
33
34

8.3.1. Descripcin

23

9. Prctica 10
9.1. Objetivo
Disee un sistema de conteo de 0 a 99 y muestrelos en dos display 7 segmentos.
Cada display representala unidad y la decena.

9.2. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 13: Diagrama elctrico de la Prctica 10.

9.3. Cdigo

Listing 9: Cdigo Prctica 10


1
2
3
4

#define F_CPU 1000000UL


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

5
6
7
8

const char tabla [ ] PROGMEM = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D,
0x7D, 0x7F, 0x67, 0x77, 0x7C, 0x39,
0x5E, 0x79, 0x71};

9
10
11
12
13
14
15
16
17

int main(void)
{
int u=0,d=0;
DDRB=0xFF; //CONF COMO SALIDA
DDRD=0xFF; //CONF COMO SALIDA
while(1)
{
while ( d < 9)

24

18

PORTB = pgm_read_byte(&tabla[d]);
_delay_ms(150);
d++;

19
20
21
22

while (u < 9)
{
PORTD = pgm_read_byte(&tabla[u]);
_delay_ms(150);
u++;
}

23
24
25
26
27
28
29

PORTD = 0x3f;
u = 0;

30
31

32
33

d = 0;
}

34
35
36

9.3.1. Descripcin

25

10. Prctica 11
10.1. Objetivo
Generar una seal PWM en modo no invertido, con el ancho de pulso determinado por el valor delpuerto D.

10.2. Cdigo

Listing 10: Cdigo Prctica 11


1
2
3
4
5
6

#include <avr/io.h>
//PWM
int main(void)
{
DDRB = 0xFF; // Conf como salida
PORTD = 0xFF; // Conf como entrada

TCCR2 = 0x69;

8
9

while(1)
{
OCR2 = PIND;
}

10
11
12
13
14

10.2.1. Descripcin

26

11. Prctica 12
11.1. Objetivo
Disee un sistema que mantenga la temperatura de una habitacin en el rango
de 18 y 23 C. Si esmayor a 23 C debe encender un ventilador, si es menor a 18 C un
calefactor. Si se encuentra dentro de los rangos no debe activarse algo.

11.2. Diagrama elctrico


Se presenta el diagrama elctrico de la prctica.

Figura 14: Diagrama elctrico de la Prctica 12.

11.3. Cdigo

Listing 11: Cdigo Prctica 12


1
2

#define inf 368


#define sup 471

3
4

#include <avr/io.h>

5
6
7
8
9
10

int main(void)
{
unsigned int temp;
DDRB = 0xFF;
PORTB = 0x00;

11

27

ADMUX = 0x00;
ADCSRA = 0xC3;

12
13

// Selecciona ADC0 y Vref sin activar


// Habilita ADC, inicia conversion

14

while(1)
{
while (!(ADCSRA & 1 << ADIF)); // Espera fin de conversion
ADCSRA |= 1 << ADIF;
// Limpia bandera
temp = ADCW;
// Obtiene la temperatura
if (temp < sup)
PORTB = 0x01;
else if (temp < inf)
PORTB = 0x02;
else
PORTB = 0x00;
ADCSRA |= 1 << ADSC;
// Inicia conversion
}

15
16
17
18
19
20
21
22
23
24
25
26
27
28

11.3.1. Descripcin

28

12. Prctica 13
12.1. Objetivo
Disee el control de un seguidor de linea, compuesto por dos llantas traseras
manejadas por motoresindependientes y una llanta (bola loca). El mvil debe seguir
una lnea blanca en una superficie de fondonegro. Suponga que los sensores se han
acondicionado de manera que, cuando se encuentran en una zonaoscura presentan
un voltaje mayor a 2.5V y en una zona clara su voltaje est por debajo de ese nivel.

12.2. Cdigo

Listing 12: Cdigo Prctica 13


1

#include <avr/io.h>

2
3
4
5
6
7
8
9

int main(void)
{
unsigned char sens;
DDRB = 0xFF;
PORTB = 0x03;
ADCSRA = 0x00; // acitva ADC
SFIOR = 0x08; // Conecta multiplexor con AC

10
11
12
13
14
15
16
17
18
19
20
21
22
23

while(1)
{
sens = 0x00;
ACSR = 0x80; // Desact AC
ADMUX = 0x00; // Selecciona Canal 0
ACSR = 0x00; // Activa AC
asm ("nop");
if (!(ACSR & 1 << ACO))
//Si sensor 1 esta en zona oscura
sens |= 0x01;
// Enciende motor 1
ACSR = 0x80;
ADMUX = 0x01;
ACSR = 0x00;
asm ("nop");

24
25
26
27
28
29
30

if (!(ACSR & 1 << ACO))


sens |= 0x02;
if (sens == 0x01 || sens == 0x02)
PORTB = sens;
else
PORTB = 0x03;

29

31
32

12.2.1. Descripcin

30

13. Prctica 14
13.1. Objetivo
Disee un cdigo en RobotC for VEX utilizando tres sensores de linea para resolver el problema del "LineFollower".

13.2. Cdigo

Listing 13: Cdigo Prctica 14

13.2.1. Descripcin

31

14. Prctica 15
14.1. Objetivo
Disee un cdigo en RobotC for VEX que logre situar al mvil dentro de un circulo, y una vez situadodentro del circulo evitar que salga. La destreza es utilizar el sensor o los sensores de luz.

14.2. Cdigo

Listing 14: Cdigo Prctica 15

14.2.1. Descripcin

32

15. Prctica 16
15.1. Objetivo
Disee un robot Mvil de ruedas o patas (articulaciones) con las siguientes caractersticas.

15.2. Caractersticas
1.- El robot Mvil deber tener Ruedas o patas. 2.- Las dimensiones del Robot
Mvil no deben exceder las dimensiones de 20x20x40 cm, esto con el fn deque pueda trasladarse y moverse dentro de un laberinto. 3.- Es libre de usar cualquier dispositivo uC o embebido para su control. 4.- Deber tener como mnimo un sensor
ultrasnico en la parte frontal del Mvil. 5.- Deber tener al menos un par de elementos pticos (IRED y Fototransistor) que ayude al Mvil en ladeteccin de lineas
(blancas o negras). 6.- Es necesario que el Mvil se pueda armar y desarmar de manera practica, procurepegarsolo lo necesario,haga uso de tornillera. 7.- Es necesario
que los circuitos electrnicos posibles a usar esten en PCB (Print Circuit Board). 8.El Mvil debe tener un boton de encendido. 9.- Considere la pila ya en el Mvil. 10.Para este corte valorativo (primer Parcial), se pide solo el mecanismo pero listo para
cargar cdigos. 11.-Podr, si as lo desea, tomar algunas recomendaciones vistas en
clase para su contruccon.12.- Recuerde que este practica equivale a 2.5 pts

33

También podría gustarte