; Beispiel-Programm / Ausgangsbasis für Aufgabe 1+2, Versuch 1, Versuchsreihe 1. ; Autor: Tobias Schubert, März 2003. ; ; Funktion: Mit Taste S5 und S6 werden zwei verschiedene Muster an den 8 LEDs ; an PORTB ausgegeben. Erweiterbar zu "Lauflicht". ; Gewünschten Prozessor definieren. LIST P=16F84 INCLUDE ; Reset-Vektor --> Programm-Start. ORG 0x00 reset GOTO Start ; Funktion "Taste S5 gedrückt" ab Speicheradresse 0x40. ORG 0x40 TasteS5 ; An PORTB das Muster 01010101 (enstpricht hexadezimal 0x55) anzeigen. ; Working Register mit 0x55 laden. MOVLW 0x55 ; Muster an PORTB ausgeben, d.h. PORTB = W. MOVWF PORTB ; Funktion beenden. RETURN ; Funktion "Taste S6 gedrückt" ab Speicheradresse 0x60. ORG 0x60 TasteS6 ; An PORTB das Muster 10101010 (enstpricht hexadezimal 0xAA) anzeigen. ; Working Register mit 0xAA laden. MOVLW 0xAA ; Muster an PORTB ausgeben, d.h. PORTB = W. MOVWF PORTB ; Funktion beenden. RETURN ; Hauptprogramm ab Adresse 0x80. ORG 0x80 Start ; Bank 1 selektieren. BSF STATUS, 5 ; Bit1 und Bit0 von PortA als Eingang (Tasten S5/S6). BSF TRISA, 0 BSF TRISA, 1 ; PortB als Ausgang. CLRF TRISB ; Bank 0 selektieren. BCF STATUS, 5 ; PORTB initialisieren. CLRF PORTB Tastenabfrage ; Taste S5 aktiv? BTFSC PORTA,0 CALL TasteS5 ; Taste S6 aktiv? BTFSC PORTA,1 CALL TasteS6 ; Neuer Schleifendurchlauf. GOTO Tastenabfrage END