$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 (AUFUNDAB)
;------------------------------------------------------------------------
;Programmbeschreibung
;------------------------------------------------------------------------
;Programm: Auf- und abwärtszählen des Akkus mit einer Frequenz von ca. 7,2 Hz
;und senden des Wertes an die serielle Schnittstelle!
; 
;
;Grundlegende Funktion:
;* T2 AB
;* T3 AUF
;
;Datum:6.1.2001         
;Programmiert: J. Walter
;
;Verwendete Einspruenge: keine 
;
;Verwendete Unterprogramme: keine       
;
;
;Verwendete Register und Variable:
;Registerbank(0)        
;            
;
;Kommentar: 
;
;Aenderungen:
;Datum:
;
;
;------------------------------------------------------------------------
;Initialisierungsteil für allgemeine Konstanten
;------------------------------------------------------------------------

CSEG AT 0H              	;Legt absolute Codesegmentadresse auf 0h
jmp INIT

;------------------------------------------------------------------------
;Initialisierungsteil für Interrupt-Vektor
;------------------------------------------------------------------------
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,#10010010B		;Interrupt Freigabe
mov TMOD,#00000001B		;16-Bit Timer
setb TR0			;Start des Timers
        


;------------------------------------------------------------------------
;Programmschleife
;------------------------------------------------------------------------

SCHLEIFE:     
jmp SCHLEIFE			


ISR_T0:
cpl F0				;Frequenz wird halbiert
jnb F0,KEINE_TASTE
jnb P1.3,A_HOEHER               ;Spanung erhoehen
jnb P1.2,A_TIEFER		;Spannung erniedrigen
jmp KEINE_TASTE

A_HOEHER:
inc A				;Erniedrigen um 1
mov SBUF,A			;High-Byte zurückschreiben
jmp KEINE_TASTE

A_TIEFER:
dec A				;Erhoehen um 1
mov SBUF,A


KEINE_TASTE:
ret

end