$debug			;Der Debugmodus wird ermöglicht
$nomod51		;Der 8051 Registersatz wird durch 535 ersetzbar
$include(REG515.h)	;Der Registersatz des 80535-Controllers
$ title (Prellz02)	;Titel des Programms

;------------------------------------------------------------------------
;Programmbeschreibung
;------------------------------------------------------------------------
;Programm: 
;
;Misst die Impulse an P1.1 (VG - C13)
;Interrupt an P1.0 (VG - A13) löst Interrupt 3 aus
	
;Programmiert:  J. Walter 30. Juli 2000
;
;Verwendete Einspruenge: keine 
;
;Verwendete Unterprogramme: keine       
;
;
;Verwendete Register und Variable:
;Registerbank(0)        
;R2                     Zaehlvariable für Anzahl der Kontakte           
;
;Kommentar: 
;
;Aenderungen:
;
;
;------------------------------------------------------------------------
;Initialisierungsteil für allgemeine Konstanten
;------------------------------------------------------------------------
;
CSEG AT 0H              ;Legt absolute Codesegmentadresse auf 0h
jmp ABFRAGE             ;zur Abfrage springen
;
;------------------------------------------------------------------------
;Interrupt-Vektoren
;------------------------------------------------------------------------
Org 53H                 ;Timer 2 Externer Interrupt 3
INT_EX3:
call ISR_EX3
clr TF2
nop		
reti            

Org 5BH                 ;Timer 2 Externer Interrupt 4
INT_EX4:
call ISR_EX4
clr TF2
nop	        ;
reti
;------------------------------------------------------------------------
;Initialisierungsteil für On-Chip Peripherie
;------------------------------------------------------------------------
ORG 100H                ;Programmstart bei 100H
INIT:                   ;Initialisierung für Abtastung
setb P3.3               ;Messung läuft
clr P3.2                ;L1 an

mov CRCH,#0h          	;Timer 2 Hohes Byte laden 
mov CRCL,#0h           	;Timer 2 Niederes Byte laden
setb T2R1               ;Timer 2 Wiederladen bei Überlauf

clr T2CM		;Compare Mode ausgeschaltet
clr I3FR		;Fallende Flanke an P1.0 löst Interrupt EX3 aus
mov CCEN,#00000101B	;Capture von CC1 ermöglichen
mov DPTR,#2000H		;Datenpointer mit 2000 laden
setb ES			;Freigabe Serieller Interrupt
setb EX3                ;Freigabe Timer 2 Interrupt extern P1.0
setb EX4                ;Timer 2 Interrupt extern P1.1
setb T2I0               ;Timer 2 Start mit Zeitgeberbetriebclr TF2			;Timer 2 Interrupt Flag zurücksetzen
setb EAL                ;Allgemeine Interruptfreigabe

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

ABFRAGE:

jnb P1.2,INIT           ;Start der Messung
jnb P1.3,DEBUG          ;Ende des Programms
jmp ABFRAGE
;------------------------------------------------------------------------
;EX 3 Interrupt Service Routine
;------------------------------------------------------------------------
ISR_EX3:
mov A,CCL1
movx @DPTR,A            ;Wert in externen Speicher
inc DPTR                ;Adresse um eins erhoehen
mov A,CCH1
movx @DPTR,A            ;Wert in externen Speicher
inc DPTR                ;Adresse um eins erhoehen
ret

ISR_EX4:
mov A,CCL1
movx @DPTR,A            ;Wert in externen Speicher
inc DPTR                ;Adresse um eins erhoehen
mov A,CCH1
movx @DPTR,A            ;Wert in externen Speicher
inc DPTR                ;Adresse um eins erhoehen
ret

DEBUG:
setb P3.2		;Messung jetzt über Taster T2 neu starten
ljmp ABFRAGE
end