$nomod51 ;der Modus fuer 8051 wird abgeschaltet $debug $nolist ;es wird kein Listing fuer reg535 erstellt $include(reg535.pdf) ;die 80535-spezifischen Daten $list ;es wird ein Listing erstellt $ title (BLIN_INT.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ; ;Programm: Beispiel fuer Blinkprogramm ; ;Betaetigung Taster 1: Licht einschalten ;Betaetigung Taster 2: Licht ausschalten ;Betaetigung Taster 3: Licht blinkt ;Programmiert: J. Walter 11.12.93 ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 Zaehlvariable n*65,536mys ; ;Kommentar: ;Aenderungen: Anpassung auf KEIL ;Datum:3.1.2004 ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ V_BLINK EQU 10 ; Blinkfrequenz 10 Dezimal CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ org 0Bh ;Sprungmarke zur ISR fuer Timer0 TIME_INT0: ;ISR fuer Timer0 (Adresse 0Bh) call TIMER_0 ;Aufruf: UP Schleife reti ;------------------------------------------------------------------------ ;Initialisierungsteil für On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: setb P3.2 ;Lampe ausschalten mov R2,#V_BLINK ;R2 Ist Zaehlvariable mov IEN0,#10010010b ;Generelle Interrupt Freigabe,Freigabe Timer0 Interrupt mov TMOD,#00000001b ;Modus1: 16 Bit Zaehler/Zeitgeber ;Timer0 vorerst noch ausschalten ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: jnb P1.1,LAMPE_AN jnb P1.2,LAMPE_AUS jnb P1.3,LAMPE_BLINKT ajmp ABFRAGE LAMPE_AN: clr TR0 ;Timer0 ausschalten clr P3.2 ;Licht einschalten ajmp ABFRAGE ;Springe zur Adresse ABFRAGE LAMPE_AUS: clr TR0 ;Timer0 ausschalten setb P3.2 ;Licht ausschalten ajmp ABFRAGE ;Springe zur Adresse ABFRAGE LAMPE_BLINKT: mov TL0,#0h ;LOW-Byte Zaehlregister von Timer0 auf 0h setzen mov TH0,#0h ;HIGH-Byte Zaehlregister von Timer0 auf 0h setzen setb TR0 ;Timer0 aktivieren, TR0 wird bei Sprung auf die ;ISR (Adresse 0Bh) von der Hardware wieder zurueck- ;gesetzt ajmp ABFRAGE TIMER_0: djnz R2,SPRUNG ;Sprung falls R2 noch nicht 0 cpl P3.2 ;komplementiere P3.2 mov R2,#V_BLINK ;Register 2 erhaelt wieder den Wert V_BLINK SPRUNG: ret end