$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 (P18_MCWS08.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: Fuer Simulator ;Serielle Schnittstelle 9600 bit / s ;Ueber Bitratengenerator intern ; ;Betaetigung Taster 2: ASCII-Zeichen fortlaufend erhoeht ;Betaetigung Taster 3: ASCII-Zeichen fortlaufend erniedrigt ; ;Bemerkung: Es werden ca. 800 Byte pro Sekunde gesendet ; Alle 250µs * 5 = 1250 µs = 800Hz ; ;Erstellt am: Donnerstag, 9. Januar 2009 12:00:20 ;Programmiert: Juergen Walter ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Geaendert am: ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ ORG 0BH ;Timer 0 Interrupt Vektor INT_TIMER0: call ISR_T0 reti ;------------------------------------------------------------------------ ;Initialisierungsteil für Timer 0 ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: mov IEN0,#10000010B ;Interrupt Freigabe EAL, T0 mov TMOD,#00000010B ;Auto-Reload mov TH0,#6 ;4 kHz = 250 µs *5 setb TR0 ;Start des Timers mov R2,#5 ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ SCHLEIFE: jmp SCHLEIFE ISR_T0: djnz R2,KEINE_TASTE mov R2,#5 ;Wieder neu beginnen jnb P1.3,A_HOEHER ;Akku + 1 jnb P1.2,A_TIEFER ;Akku - 1 jmp KEINE_TASTE A_HOEHER: inc A ;Erhoehen um 1 mov SBUF,A ;High-Byte zurueckschreiben jmp KEINE_TASTE A_TIEFER: dec A ; Erniedrigen um 1 mov SBUF,A KEINE_TASTE: ret end