Facebook
From Mungo Terrapin, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 170
  1.  
  2. .include "m32def.inc"
  3.  
  4. .def line  = R16 ; glowny rejestr, reprezentujacy swiecace diody
  5.  
  6. .def temp1 = R17 ; dwa pomocnicze
  7.  
  8. .def temp2 = R18 ; rejestry
  9.  
  10. .cseg
  11.  
  12. ; WYJSCIOWY PORT C
  13.  
  14.     ldi temp1, 0xff ; ustawiamy port c
  15.  
  16.     out DDRC, temp1 ; na wyjscie
  17.  
  18. ; WEJSCIOWY PORT B 7
  19.  
  20.     cbi DDRB, 7      ; ustawia port B7 na wejscie
  21.  
  22.     sbi PORTB, 7     ; podciaganie rezystoru do VCC
  23.  
  24. ; USTAWIENIE WSKAZNIKU STOSU NA KONIEC PAMIECI RAM
  25.  
  26.     ldi temp1, low(RAMEND)
  27.  
  28.     out SPL, temp1
  29.  
  30.     ldi temp2, high(RAMEND)
  31.  
  32.     out SPH, temp2
  33.  
  34.     ldi line, 1 ; stan poczatkowy glownego rejestru
  35.  
  36. main:
  37.  
  38.     ;sbis PINB, 7    ; jezeli przycisk A jest wlaczany,
  39.  
  40.     call miganie    ; to wywoluje sie procedura, ktora "porusza" diode
  41.  
  42.  
  43.  
  44.     rjmp main
  45.  
  46.  
  47. ; PROCEDURA, KTORA "PORUSZA" DIODE
  48.  
  49. miganie:
  50.  
  51.  lsl line      
  52.  
  53.     cpi line, 0         ; jezeli rejestr jest rowny 0,
  54.  
  55.     brne m              ;  to ustaw stan
  56.  
  57.     ldi line, 1         ;  poczatkowy linii (00000001)
  58.  
  59.     m:
  60.  
  61.  
  62.  
  63.  mov temp1, line
  64.  
  65.  ori line, 1
  66.  
  67.  neg line
  68.  
  69.  out PORTC, line  ; zapisanie do portu C wartosc linii
  70.  
  71.  neg line
  72.  
  73.  mov line, temp1
  74.  
  75.     call wait  ; zatrzymywanie
  76.  
  77.     ret
  78.  
  79. ; PROCEDURA ZATRZYMYWANIA ZBUDOWANA Z DWOCH CYKLI
  80.  
  81. wait:
  82.  
  83.     push temp1          ; zachowanie wartosci rejestru temp1
  84.  
  85.     push temp2          ; zachowanie wartosci rejestru temp2
  86.  
  87.     ldi temp1, 0xff
  88.  
  89.     _for1:
  90.  
  91.         ldi temp2, 0xff
  92.  
  93.         _for2:
  94.  
  95.             dec temp2
  96.  
  97.             brne _for2
  98.  
  99.         dec temp1
  100.  
  101.         brne _for1
  102.  
  103.     pop temp2            ; przywracanie wartosci rejestru temp2
  104.  
  105.     pop temp1            ; przywracanie wartosci rejestru temp1
  106.  
  107.     ret
  108.  
  109.  
  110.