Вы находитесь на странице: 1из 5

Sistemas Microprocesados 1

I. PLANTEAMIENTO DEL PROBLEMA

El sistema cuenta con un cronometro cuyo lmite es un minuto


(60 segundos), el tiempo se visualizara en dos displays 7
segmentos, durante este tiempo el jugador deber encestar el
mayor numero de canastas posible, la cantidad de canastas
sera visible en dos displays 7 segmentos.

Se cuenta con dos pulsantes: uno de inicio y uno de reseteo


que podr ser pulsado en cualquier momento regresando el
juego a condiciones iniciales (el cronometro en 60 segundos y
0 pelotas encestadas).

La deteccin de ingreso de la pelota al aro se realizara Fig.1. Conexiones de elementos al microprocesador. Simulacin desarrollada
mediante un sensor de movimiento ubicado al filo del aro. en Proteus.

II. MATERIALES UTILIZADOS IV. PROGRAMACIN DESARROLLADA EN ATMEL


Sensor de movimiento. STUDIO
Botn de inicio ;
Botn de reseteo ; aro_basquet.asm
;
2 Displays de 7 segmentos para visualizacin del
; Created: 13/02/2017 11:15:50
tiempo restante en el cronometro. ; Author : Ana Maria Chicaiza,
2 Displays 7 Segmentos para visualizar numero de ; Carlos Catucuago
canastas encestadas. ; Yessica Cruz
Aro de baloncesto infantil. ; Mayra Shaigua
Capacitores de 1nF ;

.include "m164pdef.inc"
III. CONEXIONES DE ELEMENTOS AL .def tempo=r16
MICROPROCESADOR AT-MEGA 164P
// Reserva d espacios de memoria en la SRAM
.dseg
Entradas: binariol: .byte 1
El botn de inicio se conecta en el puerto D en el pin digitos: .byte 2
PD3. numeros: .byte 2
El sensor de movimiento se conecta en el puerto D en
el pin PD2. .cseg
El botn de reseteo se conecta al pin RESET del .org 0x00
rjmp inicio
microprocesador.
Cada botn cuenta con un capacitor de 1nF para evitar rebotes.
// Interrupcion 0 recibida por el sensor
.org 0x02
Salidas rjmp subir
Para los displays del cronometro: los 7 segmentos se
conectan al puerto A, a los pines PA0 PA6; // Interrupcion 1 recibida por el boton de inicio
mientras que los dgitos se conectan al puerto C a lo .org 0x04
pines PC0 y PC1. rjmp comienza
Para los displays del conteo del nmero de canastas:
los 7 segmentos se conectan l puerto B, a los pines //Timer 1
PB0 PB6; mientras que los dgitos se conectan al .org 0x1A
puerto C a lo pines PC2 y PC3. rjmp reloj

inicio:
//CONFIGURACION DE PUERTOS
ldi tempo,255

Sistemas Microprocesados 2

out ddrb,tempo .include "bin_bcd.asm"


out ddra,tempo .include "bcd_7seg.asm"
out ddrc,tempo .include "barrido.asm"
out portd,tempo .include "barrido2.asm"

com tempo //Interrupcion generada por sensor incrementa el


out portb,tempo numero de aros encestados
out porta,tempo subir:
out portc,tempo inc r21
out ddrd,tempo reti

//CONFIGURACION DEL PUD //Interrupcion generada por boton de inicio


in tempo,mcucr comienza:
andi tempo,0b11101111 ldi tempo,0b00000011
out mcucr,tempo out eimsk,tempo
out eifr,tempo
// Configuracion del stack
ldi tempo,high(ramend) ldi tempo,0b00001100
out sph,tempo sts tccr1b, tempo
ldi tempo,low(ramend)
out spl,tempo reti

// Configuracion timer 1 //Timer 1 para generar el cronometro de 1 minuto


ldi tempo,0b00000000 reloj:
sts tccr1a, tempo inc r22
cpi r22,60
/* ldi tempo,0b00001100 breq cero
sts tccr1b, tempo*/ finreloj:
reti
ldi tempo,high(31250)
STS ocr1ah,tempo cero:
ldi r22,0
ldi tempo,low(31250) ldi tempo,0
STS ocr1al,tempo out eimsk,tempo

ldi tempo,0b00000010 ldi tempo,0


sts timsk1,tempo sts tccr1b, tempo

rjmp finreloj
// Configuracion de interrupciones 0 y 1
SUBRUTINA BINARIO A BCD (bin_bcd.asm)
ldi tempo,0b00001010 /*
sts eicra,tempo * bin_bcd.asm
ldi tempo,0b00000010 *
out eimsk,tempo * Created: 13/02/2017 13:05:02
out eifr,tempo * Author: Ana Maria Chicaiza,
sei ; Carlos Catucuago
clr r21 ; Yessica Cruz
; Mayra Shaigua
lazo: */
sts binariol,r21
call bin_bcd bin_bcd:
call bcd_7seg push r16
call barrido push r17
push r18
sts binariol,r22 push xl
call bin_bcd push xh
call bcd_7seg
call barrido2
ldi xh,high(digitos)
rjmp lazo ldi xl,low(digitos)
clr r17
Sistemas Microprocesados 3

lds r16,binariol pop yh


pop xl
valor_decena: pop xh
subi r16,10 pop r17
brcs unidad pop r16
inc r17 ret
rjmp valor_decena
///////////
unidad: tabla: // anodo con CEROS....... catodo con 1
subi r16,-10
st x+,r17 .db 0b00111111,0b00000110 ;0,1
st x+,r16 .db 0b01011011,0b01001111 ;2,3
.db 0b01100110,0b01101101 ;4,5
pop xh .db 0b01111101,0b00000111 ;6,7
pop xl .db 0b01111111,0b01101111 ;8,9
pop r18
pop r17 SUBRUTINA BARRIDO PARA CONTEO DE
pop r16 CANASTAS (barrido.asm)
ret
/*
* barrido.asm
SUBRUTINA BCD A 7 SEGMENTOS (bcd_7seg.asm) *
/* * Created: 05/02/2017 15:09:05
* bcd_7seg.asm * Author: Ana Maria Chicaiza,
* ; Carlos Catucuago
* Created: 13/02/2017 13:50:50 ; Yessica Cruz
* Author: Ana Maria Chicaiza, ; Mayra Shaigua
; Carlos Catucuago */
; Yessica Cruz
; Mayra Shaigua barrido:
*/ push r16
bcd_7seg: push r17
push r18
push r16 push xl
push r17 push xh
push xh
push xl ldi r17,2 ; cantidad de digitos
push yh ldi xh,high(numeros) ; cargo direcion para
push yl sacar
push zh ldi xl,low(numeros) ; ya los valores codificados
push zl ldi r18,0b11110111 ; barro el cero pro catodo
comun
ldi xh,high(numeros)
ldi xl,low(numeros) barrido0:
ldi yh,high(digitos) ser r16 ; pongo uno en puerto c para apagar los
ldi yl,low(digitos) displays
ldi r17,2; cantidad de numeros out portc,r16
rutina: ld r16,x+; cargo el valor codificado
ldi zh,high(tabla<<1) out portb,r16; boto el valor de r16 que saque
ldi zl,low(tabla<<1) de numeros

ld r16,y+ out portc,r18; prendo activo los displays


add zl,r16 call retardo_barrido; retardo pequeo
clr r16 sec ; prendo el carry
adc zh,r16 ror r18; desplazo a la derecha el cero
lpm r16,z
st x+,r16 dec r17; decremnto para coger el otro valor
dec r17 brne barrido0; hasta que se acabe debo repetir
brne rutina el barrido
pop zl
pop zh ser r16; prendo r16 para apagar los displays
pop yl out portc,r16
Sistemas Microprocesados 4

out portc,r16
pop xh
pop xl pop xh
pop r18 pop xl
pop r17 pop r18
pop r16 pop r17
ret pop r16
ret
retardo_barrido:
push r16 retardo_barrido2:
ldi r16,255 push r16
ldi r16,255
retardo0:
nop retardo02:
decr16 nop
brne retardo0 decr16
pop r16 brne retardo02
ret pop r16
ret
SUBRUTINA BARRIDO PARA CRONOMETRO
(barrido2.asm)
/*
* barrido2.asm V. CONSTRUCCIN E IMPLEMENTACIN
* Created: 05/02/2017 17:16:09
En las siguientes figuras se presenta la implementacin fsica
* Author: Ana Maria Chicaiza,
realizada para asegurar que los elementos no se desprendan y
; Carlos Catucuago
; Yessica Cruz
el sistema sufra cambios.
; Mayra Shaigua
*/

barrido2:
push r16
push r17
push r18
push xl
push xh

ldi r17,2 ; cantidad de digitos


ldi xh,high(numeros) ; cargo direcion para
sacar Fig.2. Implementacin fsica (placa) 1.
ldi xl,low(numeros) ; ya los valores codificados
ldi r18,0b11111101 ; barro el cero pro catodo
comun

barrido02:
ser r16 ; pongo uno en puerto c para apagar los
displays
out portc,r16
ld r16,x+; cargo el valor codificado
out porta,r16; boto el valor de r16 que saque
de numeros

out portc,r18; prendo activo los displays


call retardo_barrido2; retardo pequeo Fig.3. Implementacin fsica (placa) 2.
sec ; prendo el carry
ror r18; desplazo a la derecha el cero

dec r17; decremnto para coger el otro valor


brne barrido02; hasta que se acabe debo repetir
el barrido

ser r16; prendo r16 para apagar los displays


Sistemas Microprocesados 5

Fig.4. Implementacin fsica (placa) 3. Fig.6. Implementacin fsica (placa) 5.

VI. CONCLUSIONES Y RECOMENDACIONES.


El diseo que se ha planteado para la implementacin del
contador de canastas por un determinado tiempo (60
segundos) ha implementado todos los conocimientos
aprendidos a lo largo del semestre, pues se han empleado
barrido de display, interrupciones, timer, subrutinas,
conversions binario BCD, conversin BCD a 7 segmentos.

La utilizacin de interrupciones es til para relacionar


eventos que ocurren en el exterior generados por sensores,
Fig.5. Implementacin fsica (placa) 4.
pulsantes, etc y que debido a su cambio de estado, el generan
cambios en las salidas.

Вам также может понравиться