Escolar Documentos
Profissional Documentos
Cultura Documentos
Jorge E. Correa
C. Circuitos Simulados
LS1
SOUNDER
R2(2)
1k
R2
Q1
2N3904
R1
100
C8
1uF
C9
1uF
40
41
42
43
44
10
11
12
13
14
15
16
29
27
PD1/TXD0/PCINT25
PD0/RXD0/PCINT24
PB7/SCK/PCINT15
PB6/MISO/PCINT14
PB5/MOSI/PCINT13
PB4/SS/OC0B/PCINT12
PB3/AIN1/OC0A/PCINT11
PB2/AIN0/INT2/PCINT10
PB1/T1/CLKO/PCINT9
PB0/XCK0/T0/PCINT8
PC4/TDO/PCINT20
PC3/TMS/PCINT19
PC2/TCK/PCINT18
PC1/SDA/PCINT17
PC0/SCL/PCINT16
PA7/ADC7/PCINT7
PA6/ADC6/PCINT6
PA5/ADC5/PCINT5
PA4/ADC4/PCINT4
PA3/ADC3/PCINT3
PA2/ADC2/PCINT2
PA1/ADC1/PCINT1
PA0/ADC0/PCINT0
U2
PD2/INT0/RXD1/PCINT26
PC5/TDI/PCINT21
PD3/INT1/TXD1/PCINT27
PC6/TOSC1/PCINT22
PD4/OC1B/XCK1/PCINT28
PD5/OC1A/PCINT29
PD6/ICP/OC2B/PCINT30
XTAL1
PC7/TOSC2/PCINT23
XTAL2
PD7/OC2A/PCINT31
AREF
AVCC
RESET
ATMEGA164P
37
36
35
34
33
32
31
30
19
20
21
22
23
24
25
26
R8
330
R9
330
R10
D8
330
LED-BLUE
R7
D7
330
LED-BLUE
R6
D6
330
D5
R5
D4
330
D3
R4
D2
330
D1
R3
LED-BLUE
LED-BLUELED-BLUELED-BLUE
LED-BLUE
LED-BLUE
330
III. FUNCIONAMIENTO
La casa tiene un funcionamiento sencillo, pues la nia no tendr
ningn inconveniente en manejarlo ni jugar con la misma,
debido a que tiene un panel con interruptores y pulsadores los
mismos que le permite controlar la casa, siendo este sencillo de
comprender.
La casa necesita de un cargador para energizar el circuito, el
mismo que ayudara a encender los 6 focos, uno para cada
cuarto, que estn controlados por interruptores y se pueden
encender o apagar en cualquier instante, con ayuda de los
pulsadores, sonar la cancin.
IV. CONCLUSIONES
[1]
ANEXO 1
.include "m164pdef.inc"
.def aux=r16
//.def aux1=r17
.def aux2=r18
.def nota=r19
.def tempo=r17
.cseg
.org 0x00
rjmp inicio
inicio:
ser aux
out ddrc,aux
out ddrd,aux
clr aux
out ddrb,aux
out ddra,aux
com aux
out portb,aux
out porta,aux
ldi aux, mcucrsolo
andi aux,0b11101111
out mcucr, aux
ldi r21,High(Ramend)
out SPH,r21
ldi r21,low(Ramend)
out SPL,r21
ldi aux,0b00110011
sts TCCR1A,aux
ldi aux,0b00011100
sts TCCR1B,aux
ldi aux,0
sts OCR1AL,aux
ldi aux,20
sts OCR1BL,aux
ldi aux,0
sts OCR1AL,aux
main:
sbis PINB,0
rjmp re
sbis PINB,1
rjmp cancion
clr
clr
clr
clr
clr
clr
r20
r21
r22
r23
r24
r25
clr r26
clr r27
continuar:
sbic PINA,0
ldi r20,0b00000001
sbic PINA,1
ldi r21,0b00000010
sbic PINA,2
ldi r22,0b00000100
sbic PINA,3
ldi r23,0b00001000
sbic PINA,4
ldi r24,0b00010000
sbic PINA,5
ldi r25,0b00100000
sbic PINA,6
ldi r26,0b01000000
sbic PINA,7
ldi r27,0b10000000
rjmp mostrar
//*********************
mostrar:
clr tempo
add tempo,r20
add tempo,r21
add tempo,r22
add tempo,r23
add tempo,r24
add tempo,r25
add tempo,r26
add tempo,r27
OUT PortC,tempo
rjmp inicio
do:
ldi aux,118
sts OCR1AL,aux
rjmp main
re:
ldi aux,105
sts OCR1AL,aux
rjmp main
mi:
ldi aux,93
sts OCR1AL,aux
rjmp main
fa:
ldi aux,88
sts OCR1AL,aux
rjmp main
sol:
ldi aux,78
sts OCR1AL,aux
rjmp main
la:
ldi aux,70
sts OCR1AL,aux
rjmp main
si:
ldi aux,62
sts OCR1AL,aux
rjmp main
cancion:
ldi r22,2
lazo1:
// Suena tres veces do
ldi aux,118
sts OCR1AL,aux
call retardo1
ldi aux,0
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
//Suena una sola ves FA
ldi aux,88
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
//Suena una sola ves LA
ldi aux,70
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo
dec r22
brne lazo1
//Suena una sola ves FA
ldi aux,88
sts OCR1AL,aux
call retardo1
ldi aux,0
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
//Suena dos veces MI
ldi aux,93
sts OCR1AL,aux
call retardo1
ldi aux,0
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
// Suena dos veces RE
ldi aux,105
sts OCR1AL,aux
call retardo1
ldi aux,0
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
//Suena una sola ves DO
ldi aux,118
sts OCR1AL,aux
call retardo1
ldi aux,0
out DDRD,aux
call retardo2
lazo2:
// Suena tres veces DO
ldi aux,118
sts OCR1AL,aux
call retardo1
ldi aux,0
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
//Suena una sola ves MI
ldi aux,93
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
//Suena una sola ves SOL
ldi aux,78
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
ret
brne lazo2
ldi aux,111
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
ldi aux,99
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
ldi aux,88
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
rjmp main
retardo:
WGLOOP0:
WGLOOP1:
WGLOOP2:
ldi
ldi
ldi
dec
brne
dec
brne
dec
brne
R17, $38
R18, $BC
R19, $C4
R19
WGLOOP2
R18
WGLOOP1
R17
WGLOOP0
ldi aux,111
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
ldi aux,66
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
ldi aux,70
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
ldi aux,78
sts OCR1AL,aux
out DDRD,aux
call retardo2
ldi aux,255
out DDRD,aux
call retardo1
ldi aux,0
ret
retardo3:
ldi
R17, $60
WGLOOP03:
WGLOOP13:
WGLOOP23:
;***********************************************
******************
Programa reloj
.include"m164pdef.inc"
.def
.def
.def
.def
.def
.def
.def
.def
.def
.def
tempo=r16
aux1=r17
hord=r18 ; Asignacion horas
horu=r19 ;
mind=r20 ; Asigancion minutos
minu=r21 ;
segu=r22 ; Asignacion segundos
segd=r23 ;
aux2=r24
led=r25
; inicio de codigo
; inicializacion stak pointer
; Limpieza de registro(cero logico)
out ddrb,tempo
; Definicion y asignacion del
puerto b para entrada o salida
out ddrd,tempo
; Definicion y asignacion del
puerto b para entrada o salida
ser tempo
; Colocamos en 1 para definir
como salida un puerto
out portb,tempo ; Envio de datos de salida al
puerto b
out portd,tempo ; Envio de datos de salida al
puerto d
out ddra,tempo
; Envio de datos de salida al
puerto a
out ddrc,tempo
; Envio de datos de salida al
puerto c
dec R17
brne WGLOOP03
nop
; =============================
ret
out sph,tempo ; Cargo en el stack pointer
ldi tempo,low(RAMEND);
out spl,tempo ;
// Cero en todos los registros
clr led
clr horu
clr hord
clr minu
clr mind
clr segu
clr segd
ldi xl,low(BCD) ;Apuntamiento de memoria a BCD
ldi xh,high(BCD)
st x+,minu ; Por medio de un puntero guardo los
registros en la memoria
st x+,mind
st x+,horu
st x+,hord
HORA:
call bcda7seg
;Rutina de transformacion
retardo:
ldi tempo,1
;Cargar con un 1 al registro
delay_1:
;retardo
ldi aux1,1 ; ;Cargando con valor de 35
delay_2:
;retardo2
ldi aux2,1 ; ;Cargando con valor de 9
delay_3:
;retardo 3
call barrido
nop ;
dec aux2
brne delay_3
a retardo
;llamado a barrido
;empiezo a decrementar valores
;salto en caso de que llegue a 0
nop
in tempo,MCUCR
; Control general de registro,
habilitacion en 1 para las resistencias Pull-up
andi tempo,0b11101111 ; Division de puertos
segun lo indicado
out MCUCR,tempo ; De vuelta al control general
de registro
ldi tempo,high(RAMEND); Ultima localizacion de
la SRAM
dec aux1
;decremento
brne delay_2
;salto en caso de
cumplimiento de condicion
nop
dec tempo
;decremento de registro
brne delay_1
;salta en caso de que este
llegue a cero
;
inc segu
; Incremento registro comparado a
los segundos
display:
ldi xl,low(BCD)
ldi xh,high(BCD)
st x+,minu
st x+,mind
st x+,horu
st x,hord
rjmp HORA
;
//subrtutina para pasar de BCD a los siete
segementos necesarios
bcda7seg:
ldi xl,low(BCD)
ldi xh,high(BCD)
ldi yl,low(DIG)
ldi yh,high(DIG)
ldi tempo,4
;
//cargar datos generados desde la tabla
traer:
ldi zl,low(Tabla<<1)
ldi zh,high(Tabla<<1)
ld aux1,x+ ;
add zl,aux1 ;
clr aux1
adc zh,aux1
lpm aux1,z
st y+,aux1
dec tempo
brne traer
ret ;
barrido:
push tempo ; Guardar valores en la STACK
push aux1 ;Guardar valores en la STACK
push aux2 ;Guardar valores en la STACK
in tempo,sreg ;
push tempo
;Guardar el valor de registro en
la STACK
ldi tempo,4
;cargar con valor 4
ldi aux1,0b11111110
ldi yl,low(DIG) ;valores cargados por medio de
punteros
ldi yh,high(DIG)
//procediimiento de barrido
barrido_1:
ldi aux2,0b11111111
out porta,aux2
ld aux2,y+
sbrc led,0 ; Utilizacion para verificar estado
binario de la alarma
ori aux2,0b10000000
out portc,aux2 ;Puertos C como salidas
out porta,aux1 ;Puerto A como salidas
call retardo_1
sec
; Seteo de Carry
rol aux1 ; Desplazo hacia la izqueirda
dec tempo ;decrementa el registro
brne barrido_1 ;salto si llega a cero
ldi aux2,0b11111111
out porta,aux2
pop tempo ; Sacar valores de la STACK
out sreg,tempo
pop aux2 ;Sacar valores de la STACK
pop aux1
pop tempo
ret
//retardo de encendido
retardo_1:
ldi aux2,0xff
;para el lazo
ret1:
dec aux2
brne ret1
ret
// valores para display en catodo comun.
Tabla:
.db 0b00111111,0b00000110
.db 0b01011011,0b01001111
.db 0b01100110,0b01101101
.db 0b01111101,0b00000111
.db 0b01111111,0b01101111
.db 0b01110111,0b01111100
.db 0b00111001,0b01011110
.db 0b01111001,0b01110001