Você está na página 1de 10

Matriz led de munecos

.include"m164pdef.inc"
.def tempo=r19
.def a=r17
.def b=r18
.def as=r16
ser tempo
out ddra,tempo
out ddrc,tempo
;;activo STACK
ldi tempo,high(ramend) ;ACTIVANDO EL STACK
out sph,tempo
ldi tempo,low(ramend)
out spl,tempo
barrido:
ldi tempo,0b11111110
out portA,tempo
ldi tempo,0b00100100
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11111101
out portA,tempo
ldi tempo,0b00010100
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11111011
out portA,tempo
ldi tempo,0b00001000
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11110111
out portA,tempo
ldi tempo,0b00111100
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11101111
out portA,tempo
ldi tempo,0b00001010
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11011111
out portA,tempo
ldi tempo,0b00011100
out portC,tempo
ser tempo
call retardo
out porta,tempo

ldi tempo,0b10111111
out portA,tempo
ldi tempo,0b00011100
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b01111111
out portA,tempo
ldi tempo,0b00011100
out portC,tempo
ser tempo
call retardo
out porta,tempo
call retardote
barrido2:
ldi tempo,0b11111110
out portA,tempo
ldi tempo,0b01001000
out portC,tempo
ser tempo
call retardo
out porta,tempo
;;;
ldi tempo,0b11111101
out portA,tempo
ldi tempo,0b00101000
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11111011
out portA,tempo
ldi tempo,0b00001000
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11110111
out portA,tempo
ldi tempo,0b00111100
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11101111
out portA,tempo
ldi tempo,0b00001010
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b11011111
out portA,tempo
ldi tempo,0b00011100
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b10111111
out portA,tempo
ldi tempo,0b00011100
out portC,tempo
ser tempo
call retardo
out porta,tempo
ldi tempo,0b01111111
out portA,tempo
ldi tempo,0b00011100
out portC,tempo
ser tempo
call retardo
out porta,tempo
;;
call retardote
rjmp barrido
retardo:
push r16
ldi r16,255
retardo_1:
nop
dec r16
brne retardo_1
pop r16
ret
retardote:
Lazo0: ldi r16,10;(44)
Lazo1: ldi r17,20 ;(212)
Lazo2: ldi r18,133 ;(133)
retardo1:
dec r18
brne retardo1
dec r17
brne lazo2
dec r16
brne lazo1
ret
hola
.include "m164pdef.inc"
.def tempo=r16
.def conta=r17
.cseg
ldi tempo,low(ramend)
out spl,tempo
ldi tempo,high(ramend)
out sph,tempo
ldi tempo,0b11111111
out ddra,tempo
out ddrd,tempo
luis:
ldi tempo,0b01101101
out porta,tempo
ldi tempo,0b11111110
out portd,tempo
call retardo
ldi tempo,0b11111111
out portd,tempo
ldi tempo,0b00000110
out porta,tempo
ldi tempo,0b11111101
out portd,tempo
call retardo
ldi tempo,0b11111111
out portd,tempo
ldi tempo,0b00111110
out porta,tempo
ldi tempo,0b11111011
out portd,tempo
call retardo
ldi tempo,0b11111111
out portd,tempo
ldi tempo,0b00111000
out porta,tempo
ldi tempo,0b11110111
out portd,tempo
call retardo
ldi tempo,0b11111111
out portd,tempo
rjmp luis
retardo:
push r16
ldi r16,255
retardo_1:
dec r16
brne retardo_1
pop r16
ret
Clasificadora_de_huevos.asm
.DEF TEMPO=R16
.DEF PEQUENOS=R17
.DEF MEDIANOS=R18
.DEF GRANDES=R19
.DEF CUBETA1=R20
.DEF CUBETA2=R21
.DEF CUBETA3=R22
.DSEG
PEQUENOS1: .BYTE 1
PEQUENOS2: .BYTE 1
MEDIANOS1: .BYTE 1
MEDIANOS2: .BYTE 1
GRANDES1: .BYTE 1
GRANDES2: .BYTE 1
.CSEG
.ORG 0X00
RJMP INICIO
.ORG 0X02
RJMP HUEVOS_PEQUENOS
.ORG 0X04
RJMP HUEVOS_MEDIANOS
.ORG 0X06
RJMP HUEVOS_GRANDES
INICIO:
LDI TEMPO,0B11111111
OUT DDRA,TEMPO
OUT DDRC,TEMPO
OUT PORTB,TEMPO
OUT PORTD,TEMPO
LDI TEMPO,0B00000000
OUT DDRB,TEMPO
OUT DDRD,TEMPO
IN TEMPO,MCUCR
ANDI TEMPO, 0B1110111
OUT MCUCR,TEMPO
LDI TEMPO,HIGH(RAMEND)
OUT SPH,TEMPO
LDI TEMPO,LOW(RAMEND)
OUT SPL,TEMPO
LDI TEMPO,0B00101010
STS EICRA,TEMPO
LDI TEMPO,0B00000111
OUT EIMSK,TEMPO
OUT EIFR,TEMPO
SEI
LAZO:
OUT PORTA,R24
OUT PORTC,R26
RJMP LAZO
HUEVOS_PEQUENOS:
PUSH R16
IN R16,SREG
PUSH R16
INC PEQUENOS
CPI PEQUENOS,12
BREQ CUBETA_PEQUENOS
POP R16
OUT SREG,R16
POP R16
RETI
CUBETA_PEQUENOS:
CLR PEQUENOS
ADIW R25:R24,1
STS PEQUENOS1,R24
STS PEQUENOS2,R25
POP R16
OUT SREG,R16
POP R16
RETI
HUEVOS_MEDIANOS:
PUSH R16
IN R16,SREG
PUSH R16
INC MEDIANOS
CPI MEDIANOS,12
BREQ CUBETA_MEDIANOS
POP R16
OUT SREG,R16
POP R16
RETI
CUBETA_MEDIANOS:
CLR MEDIANOS
ADIW R27:R26,1
STS MEDIANOS1,R26
STS MEDIANOS2,R27
POP R16
OUT SREG,R16
POP R16
RETI
HUEVOS_GRANDES:
PUSH R16
IN R16,SREG
PUSH R16
INC GRANDES
CPI GRANDES,12
BREQ CUBETA_GRANDES
POP R16
OUT SREG,R16
POP R16
RETI
CUBETA_GRANDES:
CLR GRANDES
ADIW R29:R28,1
STS GRANDES1,R28
STS GRANDES2,R29
POP R16
OUT SREG,R16
POP R16
RETI

*
* Sensores_Impresora.asm
.DEF TEMPO=R16
.DEF ANTE=R17
.DEF CONT=R18
.DEF AUX=R19
.ORG 0X0
RJMP INICIO
.ORG 0XC
RJMP SENSORES
INICIO:
LDI TEMPO,0B00000000
OUT DDRB,TEMPO
OUT DDRC,TEMPO
OUT DDRD,TEMPO
LDI TEMPO,0B00000011
OUT DDRA,TEMPO
LDI TEMPO,0B11111111
OUT PORTB,TEMPO
OUT PORTD,TEMPO
LDI TEMPO,HIGH(RAMEND)
OUT SPH,TEMPO
LDI TEMPO,LOW(RAMEND)
OUT SPL,TEMPO
LDI TEMPO,0B00000100
STS PCICR,TEMPO
LDI TEMPO,0B00001111
STS PCMSK2,TEMPO
IN ANTE,PINC
SEI
LAZO:
OUT PORTA,AUX
RJMP LAZO
SENSORES:
PUSH R16
IN R16,SREG
PUSH R16
IN ANTE,PINC
CPI ANTE,0B00000001
BREQ VERIFICAR1
CPI ANTE,0B00000011
BREQ VERIFICAR2
CPI ANTE,0B00000111
BREQ VERIFICAR3
CPI ANTE,0B00001110
BREQ VERIFICAR4
CPI ANTE,0B00001100
BREQ VERIFICAR5
CPI ANTE,0B00001000
BREQ VERIFICAR6
CPI ANTE,0B00000000
BREQ VERIFICAR7
RJMP ERROR
VERIFICAR1:
INC CONT
CPI CONT,1
BRNE ERROR
BREQ CORRECTO
VERIFICAR2:
INC CONT
CPI CONT,2
BRNE ERROR
BREQ CORRECTO
VERIFICAR3:
INC CONT
CPI CONT,3
BRNE ERROR
BREQ CORRECTO
VERIFICAR4:
INC CONT
CPI CONT,4
BRNE ERROR
BREQ CORRECTO
VERIFICAR5:
INC CONT
CPI CONT,5
BRNE ERROR
BREQ CORRECTO
VERIFICAR6:
INC CONT
CPI CONT,6
BRNE ERROR
BREQ CORRECTO
VERIFICAR7:
INC CONT
CPI CONT,7
BRNE ERROR
BREQ CORRECTO1
CORRECTO:
LDI AUX,0B00000010
RJMP RETORNO
ERROR:
LDI TEMPO,0B00000000
STS PCMSK2,TEMPO
LDI AUX,0B00000001
RJMP RETORNO
CORRECTO1:
CLR CONT
LDI AUX,0B00000010
RJMP RETORNO
RETORNO:
POP R16
OUT SREG,R16
POP R16
RETI
;cajas
.include "m164pdef.inc"
.def tempo=r16
.def conta=r17
.def conta2=r18
.org 0x0
rjmp inicio
.org 0x1a
rjmp incrementar1
.org 0x20
rjmp incrementar2
inicio:
ldi tempo,0b00000000
out ddrb,tempo
ser tempo
out ddra,tempo
ldi tempo,low(ramend)
out spl,tempo
ldi tempo,high(ramend)
out sph,tempo
ldi tempo,9
out ocr0a,tempo
ldi tempo,0b00000010
out tccr0a,tempo
ldi tempo,0b00000111
out tccr0b,tempo
clr tempo
out tcnt0,tempo
ldi tempo,0b00000010
sts timsk0,tempo
ldi tempo,low(19)
sts ocr1al,tempo
ldi tempo,high(19)
sts ocr1ah,tempo
ldi tempo,0b00000000
sts tccr1a,tempo
ldi tempo,0b00001111
sts tccr1b,tempo
clr tempo
sts tcnt1h,tempo
sts tcnt1l,tempo
ldi tempo,0b00000010
sts timsk1,tempo
sei
clr conta
clr conta2
lazo:
out porta,conta
rjmp lazo
incrementar1:
push r16
in r16,sreg
push r16
inc conta
pop r16
out sreg,r16
pop r16
reti
incrementar2:
push r16
in r16,sreg
push r16
inc conta
pop r16
out sreg,r16
pop r16
reti
metodo dos
.include "m164pdef.inc"
.def tempo=r16
.def col=r17
.def fila=r18
.def tecla=r19
ldi tempo,0b01111111
out ddrb,tempo
out ddrc,tempo
out ddrd,tempo
leer_columnas:
ldi col,0
ldi tempo,0b00001111
out ddra,tempo
ldi tempo,0b11110000
out porta,tempo
sbis pina,4
ldi col,1
sbis pina,5
ldi col,2
sbis pina,6
ldi col,3
sbis pina,7
ldi col,4
andi col,0b11111111
breq leer_columnas
leer_filas:
ldi tempo,0b11110000
out ddra,tempo
ldi tempo,0b00001111
out porta,tempo
sbis pina,0
ldi fila,1
sbis pina,1
ldi fila,2
sbis pina,2
ldi fila,3
sbis pina,3
ldi fila,4
mostrar_en_display:
out portc,fila
out portd,col
mov tecla,col
add tecla,fila
mostrar_en_displays1:
ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
add zl,tecla
clr tecla
adc zh,tecla
lpm tempo,z
out portb,tempo
rjmp leer_columnas
tabla:
.db 0b00000111,0b01111111
.db 0b01101111,0b01010010
.db 0b01100110,0b01101101
.db 0b01111101,0b01110110
.db 0b00000110,0b01011001
.db 0b01001111,0b01000000
.db 0b01100110,0b01101101
.db 0b01111101,0b00000000
.db 0b00000000,0b00000000

Você também pode gostar