$NOMOD51 ;der Modus fuer 8051 wird abgeschaltet $debug $nolist ;es wird kein Listing fuer reg535 erstellt $include(REG51.inc) ;die 8051-spezifischen Daten $list ;es wird ein Listing erstellt $title (P17_MCWS08.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: Fuer Simulator ;Serielle Schnittstelle 1 MBit/s ;Mit Timer0 Mode 2 8 Bit-AutoReload Reload 6 --> 4 kHz ; ;Betaetigung Taster 2: ASCII-Zeichen fortlaufend erhoeht ;Betaetigung Taster 3: ASCII-Zeichen fortlaufend erniedrigt ; ;Bemerkung: Das Programm sendet alle 250µs ein Byte ; arbeitet die serielle Schnittstelle langsamer muessen die Zeiten angepasst werden. ; ;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 IE,#10000010B ;Interrupt Freigabe EAL, T0 mov TMOD,#00000010B ;Auto-Reload mov TH0,#6 ;4 kHz setb TR0 ;Start des Timers ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ SCHLEIFE: jmp SCHLEIFE ISR_T0: 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