Professional Documents
Culture Documents
1223210065
Turno:
19/10/2015
01 - L
Microcontroladores
1. En esta prctica evitaremos programas sofisticados con cdigos grandes que desven
la atencin hacia una breve explicacin de la teora explicada.
El programa tendr dos tareas:
La rutina principal se encargara de hacer parpadear un LED y la funcin de
interrupcin har bascular otro LED cada vez que presionemos un pulsador.
Esto ser como fusionar dos programas que alguna vez hicimos. Correr dos
programas a la vez, dicen que algo as paso por la cabeza de Bill Gates cuando
pens en MS Windows. De las seales al presionar el botn, escogeremos el flanco d
bajada para disparar la interrupcin INT0.
Se pide:
a)
Escribir el programa, comente cada instruccin.
b)
Hacer pruebas en Proteus.
Solucin:
a)
Programa:
La carpeta contenedora del archivo de compilacin y programacin en Atmel Studio 6.2 se
encuentra en el CD, en la siguiente ruta:
Practica Calificada N2\Problema 1\Programacin
* P.asm
*
* Created: 04/10/2015 09:11:31 a.m.
*
Author: Hairo Gutierrez Espinoza
/*
* parpadeo_y_parpadeo_con_interrupciones.asm
*
* Created: 11/10/2015 09:31:52 p.m.
*
Author: Popow
*/
.include "m8def.inc"; durectiva del microcontrolador Atmega8
.cseg; directiva que almacena memoria
.org 0x0000; vector Reset
rjmp inicio; Salto a inicio
.org 0x0001; vector int0
rjmp int_ext0; salto a int_ext0
inicio:; etiqueta
ldi r16, high(ramend);habilito la pila del atmega 8...
out sph, r16
ldi r16, low(ramend)
out spl, r16;... direccionamiento a la posicion de memoria STACK, habilito
los retardos
sbi ddrc, 0; pinc0 -> salida
sbi ddrc, 1; pinc1 -> salida
cbi ddrd, 2; pind2 -> entrada
sei; pongo a uno el bit I del SREG
ldi r16, 0b00001010; habilito las interrupciones...
Pgina 2
Microcontroladores
b) Proteus:
Sabemos que las patitas 8 y 22 van a GND y la patita 7 va a+5V, en el circuito mostrado, dichas
patitas estn conectadas por defecto y no aparecen en el microcontrolador.
La carpeta que contiene la simulacin en Proteus est ubicada en el CD, en la siguiente ruta:
Practica Calificada N2\Problema1\Simulacion
Pgina 3
Microcontroladores
Pgina 4
Microcontroladores
Pgina 5
Microcontroladores
Pgina 6
Microcontroladores
Pgina 7
Microcontroladores
Pgina 8
Microcontroladores
Problema 1:
La rutina principal se encargar de parpadear 8 leds, ubicados en el puerto B, y la
funcin de interrupcin har desplazar 4 veces el encendido de los 8 leds cada vez que
se presione un pulsador.
De las seales que se generan al presionar el botn, escogeremos el flanco de bajada
para disparar la interrupcin.
Programacin
/*
* E.asm
*
* Created: 18/10/2015 07:41:37 p.m.
* Author: Popow
*/
.include "m8def.inc"; atmega 8
.cseg
.def temp=r16; definimos r16 = temp
.def stack=r17; definimos r16= stack
.org 0x0000; vector reset
rjmp inicio; salto a inicio
.org 0x0002; vector int1
rjmp int_ext1; salto a ext1
inicio:
ldi stack, high(ramend);configuracin de...
out sph, stack
ldi stack, low(ramend)
out spl, stack;... la pila del atmega8, habilita los retardos
;configuracion de puertos
ldi temp,0b00000000
out ddrd, temp; puerto D entrada
ldi temp, 0b11111111
out portd, temp; vizualizamos por el puerto D
out ddrB, temp; puerto C salida
sei; pone a 1 el bit I del SREG
ldi temp, 0b00001010; habilitando...
out mcucr, temp
ldi temp, 0b11000000
out gicr, temp;... las interrupciones
;.....Programa Principal.....
bucle:
LDI R18,0B11111111;cargo el registro
OUT PORTB,R18;visualizamos por el puerto b
RCALL DELAY;llamamos a subrutina especial
LDI R18,0B00000000;cargo el registro
Pgina 9
Microcontroladores
Pgina 10
Microcontroladores
Simulacin
U1
14
15
16
17
18
19
9
10
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
D8 D7 D6 D5 D4 D3 D2 D1
21
20
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
R1
R2
10k
10k
R1
R2
10k
10k
2
3
4
5
6
11
12
13
ATMEGA8
R3
0
U1
14
15
16
17
18
19
9
10
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
D8 D7 D6 D5 D4 D3 D2 D1
21
20
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
2
3
4
5
6
11
12
13
ATMEGA8
R3
0
Pgina 11
Microcontroladores
U1
14
15
16
17
18
19
9
10
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
D8 D7 D6 D5 D4 D3 D2 D1
21
20
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
R1
R2
10k
10k
2
3
4
5
6
11
12
13
ATMEGA8
R3
0
U1
14
15
16
17
18
19
9
10
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
D8 D7 D6 D5 D4 D3 D2 D1
21
20
AREF
AVCC
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
23
24
25
26
27
28
1
R1
R2
10k
10k
2
3
4
5
6
11
12
13
ATMEGA8
R3
0
Pgina 12
Microcontroladores
Problema 2:
Hacer girara un PAP unipolar (5 o 6 cables) de 45 por paso conectados a los pines
digitales PB3, PB2, PB1, PB0 a travs de un array de Darlingtons, cada vez que completa
una vuelta el motor debe cambiar de giro, el motor debe comenzar a girara cuando se
presiona un interruptor conectado al PD0.
Programacin
/*
* E.asm
*
* Created: 18/10/2015 08:24:21 p.m.
* Author: Popow
*/
.include"m8def.inc"
.cseg
.org 0x0000
rjmp inicio
inicio:
ldi r16,high(ramend);configuracin de LA MEMORIA STACK Y .....
out sph,r16
ldi r16,low(ramend)
out spl,r16;....HABILITAMOS RETARDOS
ldi r17,0b00001111
out ddrb,r17;CONFIGURAMOS COMO SALIDA
ldi r17,0b00000000;Configuramos como entrada
out ddrd,r17
interruptor:;rutina para lectura del interrutor
sbic pind,0;;salta si esta en cero
rjmp interruptor;salta a rutina interruptor
sentido_horario:;etiqueta para para el giro en sentido horario
ldi r18,0x05;cargamos a registro
out portb,r18
rcall delay;llamamos a subrutina delay
ldi r18,0x0D;cargamos a registro
out portb,r18
rcall delay;llamamos a subrutina delay
ldi r18,0x0C;cargamos a registro
out portb,r18
rcall delay;llamamos a subrutina delay
ldi r18,0x0E;cargamos a registro
out portb,r18
rcall delay;llamamos a subrutina delay
ldi r18,0x0A;cargamos a registro
out portb,r18
rcall delay;llamamos a subrutina delay
ldi r18,0x02;cargamos a registro
out portb,r18
rcall delay;llamamos a subrutina delay
ldi r18,0x03;cargamos a registro
out portb,r18
rcall delay;llamamos a subrutina delay
Pgina 13
Microcontroladores
Pgina 14
Microcontroladores
Simulacin
U2
U1
R1
1k
1k
2
3
4
5
6
11
12
13
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
14
15
16
17
18
19
9
10
1
2
3
4
5
6
7
COM
1C
2C
3C
4C
5C
6C
7C
1B
2B
3B
4B
5B
6B
7B
9
16
15
14
13
12
11
10
+88.8
R2
23
24
25
26
27
28
1
ULN2003A
21
20
ATMEGA8
U2
U1
R1
1k
1k
2
3
4
5
6
11
12
13
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
14
15
16
17
18
19
9
10
1
2
3
4
5
6
7
1B
2B
3B
4B
5B
6B
7B
COM
1C
2C
3C
4C
5C
6C
7C
9
16
15
14
13
12
11
10
+293
R2
23
24
25
26
27
28
1
ULN2003A
21
20
ATMEGA8
U2
U1
R1
1k
1k
2
3
4
5
6
11
12
13
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
PC6/RESET
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/T0/XCK
PD5/T1
PD6/AIN0
PD7/AIN1
PB0/ICP1
PB1/OC1A
PB2/SS/OC1B
PB3/MOSI/OC2
PB4/MISO
PB5/SCK
PB6/TOSC1/XTAL1
PB7/TOSC2/XTAL2
AREF
AVCC
14
15
16
17
18
19
9
10
1
2
3
4
5
6
7
1B
2B
3B
4B
5B
6B
7B
COM
1C
2C
3C
4C
5C
6C
7C
9
16
15
14
13
12
11
10
+0.54
R2
23
24
25
26
27
28
1
ULN2003A
21
20
ATMEGA8
Pgina 15