Vous êtes sur la page 1sur 5

ESCUELA POLITECNICA NACIONAL

SISTEMAS MICROPROCESADORES

Informe de:

Prueba Piano
Realizado por:
Alumno (s):Mara Jos Valencia

Grupo:

GR15

(Espacio Reservado)
Fecha de entrega:
Sancin:

2015 / 07 / 24
ao
mes
da

f. ______________________
Recibido por:

________________________________________________

2015
1. Cdigo del programa:

/*
* Prueba_Casa_Angel_Majo.asm
*
* Created: 23/07/2015 20:19:19
* Author: Angel y Majo
*/
.include "m164pdef.inc"
.def tempo=r16
.org 0x00
rjmp inicio
.org 0x08 ;vector de interrupcion puerto A
rjmp leer
inicio:
;Configurar Puertos
clr
tempo
out ddra,tempo
;defino puerto A como entrada
out ddrc,tempo
;defino puerto C como entrada
out ddrd,tempo
;defino puerto D como entrada
ldi tempo,0b0000_1000
out ddrb,tempo
;Pin 3 como salida, el resto entradas
com tempo
out portb,tempo
;mando a tierra los pines no utilizados del puerto B
ser tempo
out porta,tempo
;activo pull ups puerto A
out portc,tempo
;activo pull ups puerto C
out portd,tempo
;activo pull ups puerto D
;Inicializar Stack Pointer
ldi tempo,high(RAMEND)
out sph,tempo
ldi tempo,low(RAMEND)
out spl,tempo
;Me aseguro que este Activado pull ups
in tempo,mcucr
andi tempo,0b11101111
out mcucr,tempo
;Configuracion Interrupciones Cambio de Estado
ldi tempo,0b0000_0001
sts pcicr,tempo
;Seleciono interrupciones del puerto A
ldi tempo,0b1111_1111
sts pcmsk0,tempo
;Activo las 8 interrupciones del puerto A
;Configuro el TIMER 0
ldi tempo,0b0100_0010
out tccr0a,tempo
ldi tempo,0b0000_0000
out tccr0b,tempo
ldi zh,high(tabla<<1)
ldi zl,low(tabla<<1)
sei
;lazo Principal indefinido
lazo:
rjmp lazo
leer:

;toggle y modo ctc


;no clock reloj detenido

push tempo
in tempo,sreg
push tempo
sbis pina,0
;salto
rjmp do
sbis pina,1
;salto
rjmp re
sbis pina,2
;salto
rjmp mi
sbis pina,3
;salto
rjmp fa
sbis pina,4
;salto
rjmp sol
sbis pina,5
;salto
rjmp la
sbis pina,6
;salto
rjmp si
sbis pina,7
;salto
rjmp cancion
rjmp salir

si el pin 0 del puerto A es 1


si el pin 1 del puerto A es 1
si el pin 2 del puerto A es 1
si el pin 3 del puerto A es 1
si el pin 4 del puerto A es 1
si el pin 5 del puerto A es 1
si el pin 6 del puerto A es 1
si el pin 7 del puerto A es 1

;frecuencia nota DO
do:
//ldi tempo
ldi tempo,29
out ocr0a,tempo
ldi tempo,0b00000011
out tccr0b,tempo
sbis pina,0
rjmp do
rjmp salir
;frecuencia nota RE
re:
ldi tempo,25
out ocr0a,tempo
ldi tempo,0b00000011
out tccr0b,tempo
sbis pina,1
rjmp re
rjmp salir
;frecuencia nota MI
mi:
ldi tempo,23
out ocr0a,tempo
ldi tempo,0b00000011
out tccr0b,tempo
sbis pina,2
rjmp mi
rjmp salir
;frecuencia nota FA
fa:
ldi tempo,21
out ocr0a,tempo
ldi tempo,0b00000011
out tccr0b,tempo
sbis pina,3
rjmp fa
rjmp salir

;cargo al registro ocr0a el valor de tempo


;cargo prescalador 1:64

;cargo al registro ocr0a el valor de tempo


;cargo prescalador 1:64

;cargo al registro ocr0a el valor de tempo


;cargo prescalador 1:64

;cargo al registro ocr0a el valor de tempo


;cargo prescalador 1:64

;frecuencia nota SOL


sol:
ldi tempo,19
out ocr0a,tempo
ldi tempo,0b00000011
out tccr0b,tempo
sbis pina,4
rjmp sol
rjmp salir
;frecuencia nota LA
la:
ldi tempo,17
out ocr0a,tempo
ldi tempo,0b00000011
out tccr0b,tempo
sbis pina,5
rjmp la
rjmp salir
;frecuencia nota SI
si:
ldi tempo,15
out OCR0A,tempo
ldi tempo,0b00000011
out TCCR0B,tempo
sbis pina,6
rjmp si
rjmp salir

;cargo al registro ocr0a el valor de tempo


;cargo prescalador 1:64

;cargo al registro ocr0a el valor de tempo


;cargo prescalador 1:64

;cargo al registro ocr0a el valor de tempo


;cargo prescalador 1:64

cancion:
lpm tempo,z+
out OCR0A,tempo
;cargo al registro ocr0a el valor de tempo
ldi tempo,0b00000011
out TCCR0B,tempo
;cargo prescalador 1:64
call retardo
call retardo
call retardo
rjmp cancion
rjmp salir
;Genero retardo para realizar barrido de notas
retardo:
push r16
push r17
ldi r16, 250
salto1:
ldi r17, 150
salto2:
dec r17
brne salto2
dec r16
brne salto1
pop r17
pop r16
ret
salir:
pop tempo
out sreg,tempo
pop tempo

ldi tempo,0b00000000
out tccr0b,tempo
reti
;Contiene Notas Cancion
tabla:
;Sol La Sol Mi Sol La Sol Mi
.db 19, 17, 19, 23, 19, 17, 19, 23
;re re Si do do Sol La La
.db 25, 25, 15, 29, 29, 19, 17, 17
; do Si La Sol La Sol Mi La
.db 29, 15, 17, 19, 17, 19, 23, 17
; La do Si La Sol La Sol Mi
.db 17, 29, 15, 17, 19, 17, 19, 23
/* ; re re re fa re Si do mi
.db 25, 25, 25, 21, 25, 15, 29, 23
; do Sol Mi Sol Fa Re Do re
.db 29, 19, 23, 19, 21, 25, 29, 25
; re re re fa re Si do mi
.db 25, 25, 25, 21, 25, 15, 29, 23*/

2. Circuito implementado

EPN
INTEGRANTES: CASTELLANO Y VALENCIA

A
B
C
D

U1
37
36
35
34
33
32
31
30

Do Re Mi

Fa Sol La

19
20
21
22
23
24
25
26

Si

8
7

PA0/ADC0/PCINT0
PA1/ADC1/PCINT1
PA2/ADC2/PCINT2
PA3/ADC3/PCINT3
PA4/ADC4/PCINT4
PA5/ADC5/PCINT5
PA6/ADC6/PCINT6
PA7/ADC7/PCINT7
PC0/SCL/PCINT16
PC1/SDA/PCINT17
PC2/TCK/PCINT18
PC3/TMS/PCINT19
PC4/TDO/PCINT20
PC5/TDI/PCINT21
PC6/TOSC1/PCINT22
PC7/TOSC2/PCINT23
XTAL1
XTAL2
ATMEGA164P
CLOCK=8MHz

Cancion

Reloj

LS1
PB0/XCK0/T0/PCINT8
PB1/T1/CLKO/PCINT9
PB2/AIN0/INT2/PCINT10
PB3/AIN1/OC0A/PCINT11
PB4/SS/OC0B/PCINT12
PB5/MOSI/PCINT13
PB6/MISO/PCINT14
PB7/SCK/PCINT15
PD0/RXD0/PCINT24
PD1/TXD0/PCINT25
PD2/INT0/RXD1/PCINT26
PD3/INT1/TXD1/PCINT27
PD4/OC1B/XCK1/PCINT28
PD5/OC1A/PCINT29
PD6/ICP/OC2B/PCINT30
PD7/OC2A/PCINT31
AREF
AVCC
RESET

40
41
42
43
44
1
2
3
9
10
11
12
13
14
15
16
29
27
4

C1
SPEAKER
4.7uF

Vous aimerez peut-être aussi