Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- ; AssemblerApplication3.asm
- ;
- ; Created: 14/10/2018 00:47:37
- ; Author : Asus
- ;
- ; Replace with your application code
- inic:
- ldi r16, 0x10
- out sph, r16
- ldi r16, 0xff
- out spl, r16
- main:
- ldi r16, 0b00000000 ;PORTA ENTRADA (SW)
- out DDRA, r16
- ldi r17, 0b11111111 ;PORTC SAIDA LED
- out DDRC, r17
- out PORTC,r17 ;os led's estao todos apagados no inicio
- menu:
- sbis PINA,0
- jmp cicloSW1
- sbis PINA,1
- jmp cicloSW2
- jmp menu
- cicloSW1:
- ldi r17, 0b11111111 ;inicialmente os LED's estarão todos apagados
- out PORTC, r17 ; mostrar os leds todos apagados
- call delay ; chama a "função" DELAY (intervalo de tempo entre ligar um LED do outro)
- sbis PINA,5 ;caso ative o sw6 (PAUSA)
- call menu ; será chamada a "função" pausa
- lsl r17 ;faz com que os bits no r17 se desloquem 1 bit para a esquerda
- out PORTC, r17 ; LIGA D1
- call delay
- sbis PINA,5 ;caso ative o sw6 (PAUSA)
- call menu ; será chamada a "função" pausa
- ;neste caso a sequência para logo no primeiro led
- lsl r17
- out PORTC, r17 ;ligda D2
- call delay
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D3
- call delay
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D4
- call delay
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D5
- call delay
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D6
- call delay
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D7
- call delay
- sbis PINA,5
- call menu
- jmp cicloSW1 ; VOLTA A REPETIR O CICLO
- cicloSW2:
- ldi r17, 0b11111111 ;inicialmente os LED's estarão todos apagados
- out PORTC, r17 ; mostrar os leds todos apagados
- call delaysw2 ; chama a "função" DELAYsw2 (intervalo de tempo entre ligar um LED do outro)
- sbis PINA,5 ;caso ative o sw6 (PAUSA)
- call menu ; será chamada a "função" pausa
- lsl r17 ;faz com que os bits no r17 se desloquem 1 bit para a esquerda
- out PORTC, r17 ; LIGA D1
- call delaysw2
- sbis PINA,5 ;caso ative o sw6 (PAUSA)
- call menu ; será chamada a "função" pausa
- ;neste caso a sequência para logo no primeiro led
- lsl r17
- out PORTC, r17 ;ligda D2
- call delaysw2
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D3
- call delaysw2
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D4
- call delaysw2
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D5
- call delaysw2
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D6
- call delaysw2
- sbis PINA,5
- call menu
- lsl r17
- out PORTC, r17 ;ligda D7
- call delaysw2
- sbis PINA,5
- call menu
- jmp ciclosw2 ; VOLTA A REPETIR O CICLOSSW2
- delay:
- push r18
- push r19
- push r20
- ldi r20,41
- ciclo0: ldi r19,255
- ciclo1: ldi r18, 255
- ciclo2: dec r18
- brne ciclo2
- dec r19
- brne ciclo1
- dec r20
- brne ciclo0
- pop r20
- pop r19
- pop r18
- ret
- delaysw2:
- push r21
- push r22
- push r23
- ldi r23,82
- ciclo3: ldi r19,255
- ciclo4: ldi r21, 255
- ciclo5: dec r21
- brne ciclo5
- dec r22
- brne ciclo4
- dec r23
- brne ciclo3
- pop r23
- pop r22
- pop r21
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement