Advertisement
m_mattia

M242_Lauflicht_Code

Jun 5th, 2021 (edited)
1,787
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.                                                                                                ;********************************************************************************
  2. ; P R O G R A M M    Vorlage
  3. ;********************************************************************************
  4. ; Source-File:          Lauflicht.a51
  5. ; Autor:                Kay Wild, Christophe Damas, Mattia Müggler
  6. ; Datum:                05.06.2021
  7. ; Version:              1.0
  8. ; Beschreibung:         Lauflicht
  9. ; Eingaben:             8 Schalter S0 bis S7
  10. ; Ausgaben:             8 LEDs PA0 bis PA7
  11. ;********************************************************************************
  12.      
  13. $TITLE (Lauflicht)
  14. $NOLIST
  15. $NOMOD51
  16. $INCLUDE (C8051F020.h)                      ;hier werden alle Bezeichnungen definiert
  17. $LIST
  18.  
  19. NAME Lauflicht
  20.  
  21. ;----- Deklarationen
  22. input    equ        P2                      ;P3 8 Eingänge
  23. output   equ        P3                      ;P2 8 Ausgänge
  24.  
  25. ;----- Intitialisierung
  26.         ORG        0000h                    ;Startadresse
  27.         jmp        init
  28.  
  29.         ORG         0100h                   ;Programmanfang
  30. init:   mov         WDTCN,#0DEh
  31.         mov         WDTCN,#0ADh             ;disable Watchdog
  32.         mov         P2MDOUT,#0FFh           ;P2 8 Ausgänge push/pull
  33.         mov         P3MDOUT,#000h           ;P3 8 Eingänge
  34.         mov         XBR2,#040h              ;enable crossbar (Koppelfeld)
  35.         mov         bp, 43690
  36.         mov         si, 43690
  37.  
  38. ;------ Hauptprogramm
  39. main:   mov        output,#00h              ;LEDs dunkel schalten
  40.  
  41. loop:   mov        A,input                  ;Schalter einlesen
  42.        
  43.         CJNE        A, #00000001b, loop
  44.         jmp         lights                ;Endlosschleife
  45. lights: mov         output,#00000001b
  46.         CALL    CMPR
  47.         CALL    delay1
  48.         mov        output,#00000011b
  49.         CALL    CMPR
  50.         CALL    delay1
  51.         mov        output,#00000111b
  52.         CALL    CMPR
  53.         CALL    delay1
  54.         mov        output,#00001111b
  55.         CALL    CMPR
  56.         CALL    delay1
  57.         mov        output,#00011111b
  58.         CALL    CMPR
  59.         CALL    delay1
  60.         mov        output,#00111111b
  61.         CALL    CMPR
  62.         CALL    delay1
  63.         mov        output,#01111111b
  64.         CALL    CMPR
  65.         CALL    delay1
  66.         mov        output,#11111111b
  67.         CALL    CMPR
  68.         CALL    delay1
  69.         mov        output,#11111110b
  70.         CALL    CMPR
  71.         CALL    delay1
  72.         mov        output,#11111100b
  73.         CALL    CMPR
  74.         CALL    delay1
  75.         mov        output,#11111000b
  76.         CALL    CMPR
  77.         CALL    delay1
  78.         mov        output,#11110000b
  79.         CALL    CMPR
  80.         CALL    delay1
  81.         mov        output,#11100000b
  82.         CALL    CMPR
  83.         CALL    delay1
  84.         mov        output,#11000000b
  85.         CALL    CMPR
  86.         CALL    delay1
  87.         mov        output,#10000000b
  88.         CALL    CMPR
  89.         CALL    delay1
  90.         mov        output,#00000000b
  91.         CALL    CMPR
  92.         CALL    delay1
  93.         jmp        lights
  94.  
  95. ; überprüft ob stop oder pasue gedrückt wurde
  96. CMPR:    
  97.         mov         R1, input        
  98.         JB          input.0, pause
  99.         JB          input.1, stop
  100.         RET
  101.        
  102. pause:  JB          input.0, CMPR
  103.         JMP         pause                
  104.  
  105. stop:   JMP         main
  106.         END
  107.  
  108. ; start delay
  109.  
  110. delay1: MOV R5,#521D
  111. label: ACALL delay
  112.        ACALL delay
  113.        ACALL delay
  114.        ACALL delay
  115.        DJNZ R5,label
  116.        RET
  117. delay: MOV R6,#250D
  118.        MOV R7,#250D
  119. loop1: DJNZ R6,loop1
  120. loop2: DJNZ R7,loop1
  121.        RET
  122.            
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement