Advertisement
Guest User

Vitor

a guest
Oct 17th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;
  2. ; AssemblerApplication3.asm
  3. ;
  4. ; Created: 14/10/2018 00:47:37
  5. ; Author : Asus
  6. ;
  7.  
  8.  
  9. ; Replace with your application code
  10. inic:
  11.         ldi r16, 0x10
  12.         out sph, r16
  13.         ldi r16, 0xff
  14.         out spl, r16
  15. main:
  16.         ldi r16, 0b00000000     ;PORTA ENTRADA (SW)
  17.         out DDRA, r16
  18.         ldi r17, 0b11111111     ;PORTC SAIDA LED
  19.         out DDRC, r17
  20.         out PORTC,r17           ;os led's estao todos apagados no inicio
  21. menu:
  22.         sbis PINA,0
  23.         jmp cicloSW1
  24.        
  25.         sbis PINA,1
  26.         jmp cicloSW2
  27.  
  28.         jmp menu
  29.  
  30.  
  31. cicloSW1:                  
  32.         ldi r17, 0b11111111         ;inicialmente os LED's estarão todos apagados
  33.         out PORTC, r17              ; mostrar os leds todos apagados
  34.         call delay                  ; chama a "função" DELAY (intervalo de tempo entre ligar um LED do outro)
  35.        
  36.         sbis PINA,5                 ;caso ative o sw6 (PAUSA)
  37.         call menu               ; será chamada a "função" pausa
  38.  
  39.         lsl r17                     ;faz com que os bits no r17 se desloquem 1 bit para a esquerda
  40.         out PORTC, r17              ; LIGA D1
  41.         call delay
  42.  
  43.         sbis PINA,5                 ;caso ative o sw6 (PAUSA)
  44.         call menu                   ; será chamada a "função" pausa
  45.         ;neste caso a sequência para logo no primeiro led
  46.        
  47.         lsl r17
  48.         out PORTC, r17              ;ligda D2
  49.         call delay
  50.  
  51.         sbis PINA,5
  52.         call menu
  53.  
  54.         lsl r17
  55.         out PORTC, r17              ;ligda D3
  56.         call delay
  57.  
  58.         sbis PINA,5
  59.         call menu
  60.  
  61.         lsl r17
  62.         out PORTC, r17              ;ligda D4
  63.         call delay
  64.  
  65.         sbis PINA,5
  66.         call menu
  67.  
  68.         lsl r17
  69.         out PORTC, r17              ;ligda D5
  70.         call delay
  71.  
  72.         sbis PINA,5
  73.         call menu
  74.  
  75.         lsl r17
  76.         out PORTC, r17              ;ligda D6
  77.         call delay
  78.  
  79.         sbis PINA,5
  80.         call menu
  81.  
  82.         lsl r17
  83.         out PORTC, r17              ;ligda D7
  84.         call delay
  85.  
  86.         sbis PINA,5
  87.         call menu
  88.  
  89.         jmp cicloSW1                    ; VOLTA A REPETIR O CICLO
  90.  
  91. cicloSW2:                  
  92.         ldi r17, 0b11111111         ;inicialmente os LED's estarão todos apagados
  93.         out PORTC, r17              ; mostrar os leds todos apagados
  94.         call delaysw2                   ; chama a "função" DELAYsw2 (intervalo de tempo entre ligar um LED do outro)
  95.        
  96.         sbis PINA,5                 ;caso ative o sw6 (PAUSA)
  97.         call menu               ; será chamada a "função" pausa
  98.  
  99.         lsl r17                     ;faz com que os bits no r17 se desloquem 1 bit para a esquerda
  100.         out PORTC, r17              ; LIGA D1
  101.         call delaysw2
  102.  
  103.         sbis PINA,5                 ;caso ative o sw6 (PAUSA)
  104.         call menu                   ; será chamada a "função" pausa
  105.         ;neste caso a sequência para logo no primeiro led
  106.        
  107.         lsl r17
  108.         out PORTC, r17              ;ligda D2
  109.         call delaysw2
  110.  
  111.         sbis PINA,5
  112.         call menu
  113.  
  114.         lsl r17
  115.         out PORTC, r17              ;ligda D3
  116.         call delaysw2
  117.  
  118.         sbis PINA,5
  119.         call menu
  120.  
  121.         lsl r17
  122.         out PORTC, r17              ;ligda D4
  123.         call delaysw2
  124.  
  125.         sbis PINA,5
  126.         call menu
  127.  
  128.         lsl r17
  129.         out PORTC, r17              ;ligda D5
  130.         call delaysw2
  131.  
  132.         sbis PINA,5
  133.         call menu
  134.  
  135.         lsl r17
  136.         out PORTC, r17              ;ligda D6
  137.         call delaysw2
  138.  
  139.         sbis PINA,5
  140.         call menu
  141.  
  142.         lsl r17
  143.         out PORTC, r17              ;ligda D7
  144.         call delaysw2
  145.  
  146.         sbis PINA,5
  147.         call menu
  148.  
  149.         jmp ciclosw2                    ; VOLTA A REPETIR O CICLOSSW2
  150.  
  151. delay:
  152.        push r18
  153.        push r19
  154.        push r20
  155.        ldi  r20,41
  156. ciclo0:       ldi  r19,255
  157. ciclo1:       ldi  r18, 255
  158. ciclo2:    dec r18
  159.            brne ciclo2
  160.  
  161.            dec r19
  162.            brne ciclo1
  163.  
  164.            dec r20
  165.            brne ciclo0
  166.  
  167.            pop r20
  168.            pop r19
  169.            pop r18
  170.            ret
  171.  
  172. delaysw2:
  173.        push r21
  174.        push r22
  175.        push r23
  176.        ldi  r23,82
  177.  
  178. ciclo3:       ldi  r19,255
  179. ciclo4:       ldi  r21, 255
  180. ciclo5:    dec r21
  181.            brne ciclo5
  182.  
  183.            dec r22
  184.            brne ciclo4
  185.  
  186.            dec r23
  187.            brne ciclo3
  188.  
  189.            pop r23
  190.            pop r22
  191.            pop r21
  192.            ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement