Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .nolist
  2. .include "m16def.inc"
  3. .list
  4.  
  5. .def mp = r16
  6. .def mb = r22
  7. .def stackend = r17
  8. .equ looptimer = 65000
  9.  
  10. // Interupt Sprungpunkte
  11. .org 0x000
  12.     rjmp init
  13. .org 0x002
  14.     rjmp led_an
  15. .org 0x004
  16.     rjmp led_aus
  17.  
  18.  
  19. // ---------- Initialisierung ---------------------------------------------------------------------------
  20. init:
  21.     // DDRB --> Output
  22.     ldi mp, 0xff
  23.     out DDRB, mp
  24.  
  25.     // DDRD --> Input
  26.     ldi mp, 0x00
  27.     out DDRD, mp
  28.  
  29.     // Alle Lichter aus
  30.     ldi mp, 0xFF
  31.     out PORTB, mp
  32.  
  33.     // Schleifen timer
  34.     ldi r24, low(looptimer)
  35.     ldi r25, high(looptimer)
  36.  
  37.     //stapel einrichten
  38.     ldi stackend, low(RAMEND)
  39.     out SPL, stackend
  40.     ldi stackend, high(RAMEND)
  41.     out SPH, stackend
  42.  
  43.     // Interrupt steuerung
  44.     ldi mp, 1 << ISC10 | 1 << ISC11
  45.     out MCUCR, mp
  46.     ldi mp, 1 << INT0 | 1 << INT1
  47.     out GICR, mp
  48.     sei
  49.  
  50.  
  51. // ---------- Hauptprogramm ----------------------------------------------------------------------
  52. main:
  53.     ldi r21, 255
  54.     loop1:
  55.         rcall lange_schleife
  56.         rcall raufzaehlen
  57.         dec r21
  58.         brne loop1
  59.  
  60.     ldi r21, 255
  61.     loop2:
  62.         rcall lange_schleife
  63.         rcall runterzaehlen
  64.         dec r21
  65.         brne loop2
  66.  
  67.     rjmp main
  68.  
  69.  
  70. // ---------- Unterprogramme --------------------------------------------------------------------
  71. lange_schleife:
  72.     in mp, SREG
  73.     push mp
  74.  
  75.     rcall schleife
  76.     rcall schleife
  77.     rcall schleife
  78.     rcall schleife
  79.     rcall schleife
  80.     rcall schleife
  81.     rcall schleife
  82.  
  83.     pop mp
  84.     out SREG, mp
  85.     ret
  86.  
  87. schleife:
  88.     in mp, SREG
  89.     push mp
  90.  
  91.     loop:
  92.         sbiw r24, 1
  93.         brne loop
  94.  
  95.     pop mp
  96.     out SREG, mp
  97.     ret
  98.  
  99. raufzaehlen:
  100.     in mp, SREG
  101.     push mp
  102.  
  103.     dec mb
  104.     out PORTB, mb
  105.  
  106.     pop mp
  107.     out SREG, mp
  108.     ret
  109.  
  110. runterzaehlen:
  111.     in mp, SREG
  112.     push mp
  113.  
  114.     inc mb
  115.     out PORTB, mb
  116.  
  117.     pop mp
  118.     out SREG, mp
  119.     ret
  120.  
  121.  
  122. // ---------- Interrupt Service Routinen ------------------------------------------------------------
  123. led_an:
  124.     in mp, SREG
  125.     push mp
  126.  
  127.     ldi mp, 0b01010101
  128.     out PORTB, mp
  129.  
  130.     rcall lange_schleife
  131.     rcall lange_schleife
  132.     rcall lange_schleife
  133.     rcall lange_schleife
  134.  
  135.     pop mp
  136.     out SREG, mp
  137.     reti
  138.  
  139. led_aus:
  140.     in mp, SREG
  141.     push mp
  142.  
  143.     ldi mp, 0b10101010
  144.     out PORTB, mp
  145.  
  146.     rcall lange_schleife
  147.     rcall lange_schleife
  148.     rcall lange_schleife
  149.     rcall lange_schleife
  150.  
  151.     pop mp
  152.     out SREG, mp
  153.     reti
  154.  
  155. .exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement