;****************************************************************
;*								*
;*	File-Name = MCUMD_3.SRC					*
;*	Programm fuer 3.PIC --universell--			*
;*	Spezial f�r H. Nerlich########################		*
;*                                				*		
;*    	- Nautic-Paneel-Decoder 				*
;*	Futaba							*
;*	-----  F 14, 15, 16, 18,  ---------			*
;*	Graupner / JR Modul 4108				*
;*    	12.03.95			  			*
;*    	12.03.95 Update						*
;*	17.03.95 Fertiggestellt					*
;*	01.10.95 Datenuebertragung geaendert (Slow)		*
;*	23.05.96 Rundumlicht on / Off per Include		*
;*	23.05.96 Servo_Art per Include				*
;*								*
;*    	f�r PIC 16C56, slave	  				*
;*								*
;*	Decodiert Multinaut 					*
;****************************************************************
;
;	Assemblieren mit PASM File_NAME
;
; Device data
		device PIC16C56,xt_osc,wdt_on,protect_on
		ID 	0003h
; 	ID:	First two Digits	No. of Typ	
;	01 = Futaba FM 	02 = Graupner JR 4108
;	03 = Robbe FMSS	04 = MPX Europa-MC
;	ID:	last two Digits		No. of IC
;	01:	Master 	02: 1.Slave  03: 2.Slave  04: 3.Slave
;
; Variables and equates
;
; 1 = Input on Direktion
; 0 = Output on Direktion
;
Direction_a     =       00000000b
direction_b     =       00000001b
Dummy		=	0
;
Ser_In		= rb.0	;Serieller Dateneingang
T12		= rb.4	;Pin 10, St7
T13		= rb.5	;Pin 12, St7
T14		= rb.6	;Pin 14, St7
T15		= rb.7	;Pin 16, St7
T16		= rb.3	;Pin 15, St7
T17		= rb.2	;Pin 13, St7
T18		= ra.3	;Pin 11, St7
T19		= rb.1	;Pin  9, St7
;
Rund1_O		= T17
Rund2_O		= T14
Rund3_O		= T16
Rund4_O		= T15
Zus1_O		= T19
Zus2_O		= T12
Zus3_O		= T18
Zus4_O		= T13
Zus5_O		= T14	;ST 7 Pin 14
Zus6_O		= T15	;ST 7 Pin 16
Zus7_O		= T16	;ST 7 Pin 15
Zus8_O		= T17	;ST 7 Pin 13
;
		org    	008h	;Start Variable
Buffer_M1	ds 1
Buffer_M2	ds 1
Buffer_S1	ds 1
Buffer_S2	ds 1
BUffer_S3	ds 1
Buffer_S4	ds 1
Buffer_FLR	ds 1
Buffer_Check 	ds 1
;
Multinaut1	ds 1		;1.Bytes f�r die �bertragung
Multinaut2	ds 1		;2.von PIC 1 Master
Servo1_I	ds 1		;3.
Servo2_I	ds 1		;4.
Servo3_I	ds 1
Servo4_I	ds 1
Multinaut3 	= Servo3_I
Multinaut4	= Servo4_I
FLR		ds 1		;5.
;
Temp		ds 1
R_Temp		= Temp
Count		ds 1
R_Dealy1	= Count
Temp1		= Count
R_Timer		ds 1
W_Count		ds 1
S1_Count	ds 1
S2_Count 	ds 1
S3_Count	ds 1
Count1		ds 1
;
Bremslicht	= FLR.0		;Aus PIC1 Master
Rueckfahr	= FLR.1		;Aus PIC1 Master
Bli_Links	= FLR.2		;Aus PIC1 Master
Bli_Rechts	= FLR.3		;Aus PIC1 Master
Bli_Clock	= FLR.7
; AD/Rundum	= FLR.4 - FLR.6	;3 Bit
;
IL_MIN		= 03Dh
R_Dealy		= 1
;
		include 'Labels.INC'
;
		reset	Start
		org     0       	;Start Objekt-File
     
Start		jmp	Start_1		;Zur Initia�isierung
;-----------------------------------------------;
; Power-up entry - init ports
;-----------------------------------------------;
Start_1		mov	Count1,#Multinaut1	;Z�hler
CL_Loop		mov	fsr,Count1	;nach File-Select
		clr	Indirect	;l�schen
		inc	Count1		;-1
		cjb	Count1,#Count1,Cl_Loop  ;alles ?
		mov    	!ra,#direction_a
		mov     !rb,#direction_b
		clr     rb
		clr	ra
		setb	Ser_In		;erf. f. High Impedanz
		mov	S1_Count,#IL_Mitte
		mov	S2_Count,#IL_Mitte
		mov	S2_Count,#IL_Mitte
		clr	R_Timer
		jmp	Start10
;-----------------------------------------------;
; Warten auf Datentelegramm		  	;
;-----------------------------------------------;
Start10		clr	WDT
Input		mov	Count1,#Buffer_M1 	;6 Byte empfangen
		mov	Option,#3
		clr	rtcc
:Loop		jb	Ser_In,Input		;Pause abwarten
		clr	wdt	
		cjb	rtcc,#080h,:Loop 	;mind. ca. 1 mSec
;Startbit abwarten
;
IN_0 		mov	FSR,Count1		;1, 2
		mov	Count,#8		;8 Bit 3,4
IN_SB		clr	wdt			; 5
		jnb	Ser_In,IN_SB		;Startbit ? 6, 7
IN_CB		jb	Ser_In,IN_CB		;Startbit ende 8, 9
;
		mov	w_Count,#60
w_Loop0		djnz	w_Count,w_Loop0
;
Data		rl	Temp
		jnb	Ser_In,Data_Low
		setb	Temp.0
		mov	W_Count,#40
w_loop1		djnz	W_Count,w_loop1
		jmp	Data_End
Data_Low	clrb	Temp.0
		mov	W_Count,#41
w_Loop2		djnz	W_Count,w_loop2
Data_End	djnz	Count,Data
		mov	Indirect,Temp	;Speichern
		inc	Count1
		cjbe	Count1,#Buffer_Check,IN_0
;-----------------------------------------------;
; Checksumme errechnen und vergleichen		;
;-----------------------------------------------;
		clr	Temp			;vorbereiten
		mov	Count,#Buffer_M1	;Checksumme, addition
Intcheck_1	mov	FSR,Count		;Adresse f. Indirekt
		add	Temp,Indirect		;errechnen ohne
		inc	Count			;�bertrag
		cjbe	Count,#Buffer_FLR,Intcheck_1 	;alle Bytes ?
		cjne	Buffer_Check,Temp,In_End	;Stimmts ?, nein, nochmal
;Daten aktuell �bernehmen
		mov	Multinaut1,Buffer_M1
		mov	Multinaut2,Buffer_M2
		mov	Servo1_I,Buffer_S1
		mov	Servo2_I,Buffer_S2
		mov	Servo3_I,Buffer_S3
		mov	Servo4_I,Buffer_S4
		mov	FLR,Buffer_FLR
In_End		mov	Buffer_M1,#010h		; ****************
In_End1		djnz	Buffer_M1,In_End1
;---------------------------------------;
; Servo-Ausgaben			;
;---------------------------------------;
Servo1		clr	WDT
		mov	Temp1,#P3_Servo_Art1
		cje	Temp1,#Dummy,Servo1_End
;*
		mov	Option,#2		;Timer f�r offset
		mov	rtcc,#0ffh-IL_Offset	;vorbereiten
		setb	P3_Servo_Kanal1		;Servo Impuls setzen
;*
:Loop		cjb	rtcc,#0feh,:Loop	;Offset abwarten
;*
		cjb	Temp1,#5,Servo1_Prop	;Proportional ?
;*
		cje	Temp1,#5,Servo1_LR	;Links-Rechts
		cje	Temp1,#6,Servo1_LRV	;Links-Rechts verz�gert
		cje	Temp1,#7,Servo1_LMR	;Links-Mitte-Rechts
		cje	Temp1,#8,Servo1_POSLR	;Positionieren Li.-Re.
;*
Servo1_LR	jb	P3_Servo1_Lang,Servo1_LR_Kurz
		mov	RTCC,#0ffh-IL_Lang
		jmp	Servo1_Prop2			;bei RTCC ueberlauf
Servo1_LR_Kurz	mov	RTCC,#0ffh-IL_Kurz
		jmp	Servo1_Prop2
;*
Servo1_LMR	jb	P3_Servo1_Kurz,Servo1_LMR_Kurz
		jb	P3_Servo1_Lang,Servo1_LMR_Lang
		mov	RTCC,#0ffh-IL_Mitte
		jmp	Servo1_Prop2			
Servo1_LMR_Kurz	mov	RTCC,#0ffh-IL_Kurz
		jmp	Servo1_Prop2
Servo1_LMR_Lang	mov	RTCC,#0ffh-IL_Lang
		jmp	Servo1_Prop2
;* -----------------------------
;* Verz�gert Links-Rechts 
;* -----------------------------
Servo1_LRV		jb	P3_Servo1_Lang,Servo1_LRV_Kurz
;
Servo1_LRV_Lang		cjb	S1_Count,#IL_Lang,Servo1_LRV_Lang1
			mov	S1_Count,#IL_Lang
			clrb	Zus1_O
			jmp	Servo1_LRV_End
Servo1_LRV_Lang1	inc	S1_Count		;um 1 erhoehen
			setb	Zus1_O
			jmp	Servo1_LRV_End
;
Servo1_LRV_Kurz		cja	S1_Count,#IL_Kurz,Servo1_LRV_Kurz1
			mov	S1_Count,#IL_Kurz
			clrb	Zus1_O
			jmp	Servo1_LRV_End
Servo1_LRV_Kurz1	dec	S1_Count
			setb	Zus1_O
			nop
;
Servo1_LRV_END 		mov	Temp,#0ffh
			sub	Temp,S1_Count
			mov	rtcc,Temp	
			jmp	Servo1_Prop2
;* -----------------------------
;* Kontinuirliches positionieren
;* -----------------------------
Servo1_POSLR		jb	P3_Servo1_Lang,Servo1_POSLR_Kurz
			jb	P3_Servo1_Kurz,Servo1_POSLR_Lang
			jmp	Servo1_POSLR_End		;raus
;
Servo1_POSLR_Lang	inc	S1_Count		;um 1 erhoehen
			cjbe	S1_Count,#IL_Lang,Servo1_POSLR_Lang1
			mov	S1_Count,#IL_Lang
Servo1_POSLR_Lang1	jmp	Servo1_POSLR_End
;
Servo1_POSLR_Kurz	dec	S1_Count
			cjae	S1_Count,#IL_Kurz,Servo1_POSLR_Kurz1
			mov	S1_Count,#IL_Kurz
Servo1_POSLR_Kurz1	nop
;
Servo1_POSLR_END 	mov	Temp,#0ffh
			sub	Temp,S1_Count
			mov	rtcc,Temp	
			jmp	Servo1_Prop2
;*
;* Servo Proportional Ausgabe Kanal 1
;*
Servo1_Prop	mov	Temp,#0ffh
		cje	Temp1,#1,Servo1_1	;Prop von Servo_S1
		cje	Temp1,#2,Servo1_2	;Prop von Servo_S2
		cje	Temp1,#3,Servo1_3	;Prop von Servo_S3
;*
Servo1_1	sub	Temp,Servo1_I
		jmp	Servo1_Prop0
;*
Servo1_2	sub	Temp,Servo2_I
		jmp	Servo1_Prop0
;*
Servo1_3	sub	Temp,Servo3_I
;*
Servo1_Prop0	cja	Temp,#0E0h,Servo1_Prop1	;�berlauf ?
		mov	rtcc,Temp		;Nein
		jmp	Servo1_Prop2		;raus
Servo1_Prop1	mov	rtcc,#001h		;sonst maximale Impulsl�nge
Servo1_Prop2	cjbe	rtcc,#0feh,Servo1_Prop2	;Warte
		clrb	P3_Servo_Kanal1		;Clear Servo-Bit
Servo1_End	nop	;Ret
;---------------------------------------;
; Servo-Ausgaben			;
;---------------------------------------;
Servo2		clr	WDT
		mov	Temp1,#P3_Servo_Art2
		cje	Temp1,#Dummy,Servo2_End
;*
		mov	Option,#2		;Timer f�r offset
		mov	rtcc,#0ffh-IL_Offset	;vorbereiten
		setb	P3_Servo_Kanal2		;Servo Impuls setzen
;*
:Loop		cjb	rtcc,#0feh,:Loop	;Offset abwarten
;*
		cjb	Temp1,#5,Servo2_Prop	;Proportional ?
;*
		cje	Temp1,#5,Servo2_LR	;Links-Rechts
		cje	Temp1,#6,Servo2_LRV	;Links-Rechts verz�gert
		cje	Temp1,#7,Servo2_LMR	;Links-Mitte-Rechts
		cje	Temp1,#8,Servo2_POSLR	;Positionieren Li.-Re.
;*
Servo2_LR	jb	P3_Servo2_Lang,Servo2_LR_Kurz
	
		mov	RTCC,#0ffh-IL_Lang
		jmp	Servo2_Prop2			;bei RTCC ueberlauf
Servo2_LR_Kurz	mov	RTCC,#0ffh-IL_Kurz
		jmp	Servo2_Prop2
;*
Servo2_LMR	jb	P3_Servo2_Kurz,Servo2_LMR_Kurz
		jb	P3_Servo2_Lang,Servo2_LMR_Lang
		mov	RTCC,#0ffh-IL_Mitte
		jmp	Servo2_Prop2			
Servo2_LMR_Kurz	mov	RTCC,#0ffh-IL_Kurz
		jmp	Servo2_Prop2
Servo2_LMR_Lang	mov	RTCC,#0ffh-IL_Lang
		jmp	Servo2_Prop2
;* -----------------------------
;* Verz�gert Links-Rechts 
;* -----------------------------
Servo2_LRV		jb	P3_Servo2_Lang,Servo2_LRV_Kurz
;
Servo2_LRV_Lang		cjb	S2_Count,#IL_Lang,Servo2_LRV_Lang1
			mov	S2_Count,#IL_Lang
			clrb	Zus2_O
			jmp	Servo2_LRV_End
Servo2_LRV_Lang1	inc	S2_Count		;um 1 erhoehen
			setb	Zus2_O
			jmp	Servo2_LRV_End
;
Servo2_LRV_Kurz		cja	S2_Count,#IL_Kurz,Servo2_LRV_Kurz1
			mov	S2_Count,#IL_Kurz
			clrb	Zus2_O
			jmp	Servo2_LRV_End
Servo2_LRV_Kurz1	dec	S2_Count
			setb	Zus2_O
			nop
;
Servo2_LRV_END 		mov	Temp,#0ffh
			sub	Temp,S2_Count
			mov	rtcc,Temp	
			jmp	Servo2_Prop2
;* -----------------------------
;* Kontinuirliches positionieren
;* -----------------------------
Servo2_POSLR		jb	P3_Servo2_Lang,Servo2_POSLR_Kurz
			jb	P3_Servo2_Kurz,Servo2_POSLR_Lang
			jmp	Servo2_POSLR_End		;raus
;
Servo2_POSLR_Lang	inc	S2_Count		;um 1 erhoehen
			cjbe	S2_Count,#IL_Lang,Servo2_POSLR_Lang1
			mov	S2_Count,#IL_Lang
Servo2_POSLR_Lang1	jmp	Servo2_POSLR_End
;
Servo2_POSLR_Kurz	dec	S2_Count
			cjae	S2_Count,#IL_Kurz,Servo2_POSLR_Kurz1
			mov	S2_Count,#IL_Kurz
Servo2_POSLR_Kurz1	nop
;
Servo2_POSLR_END 	mov	Temp,#0ffh
			sub	Temp,S2_Count
			mov	rtcc,Temp	
			jmp	Servo2_Prop2
;*
;* Servo Proportional Ausgabe Kanal 1
;*
Servo2_Prop	mov	Temp,#0ffh
		cje	Temp1,#1,Servo2_1	;Prop von Servo_S1
		cje	Temp1,#2,Servo2_2	;Prop von Servo_S2
		cje	Temp1,#3,Servo2_3	;Prop von Servo_S3
;*
Servo2_1	sub	Temp,Servo1_I
		jmp	Servo2_Prop0
;*
Servo2_2	sub	Temp,Servo2_I
		jmp	Servo2_Prop0
;*
Servo2_3	sub	Temp,Servo3_I
;*
Servo2_Prop0	cja	Temp,#0E0h,Servo2_Prop1	;�berlauf ?
		mov	rtcc,Temp		;Nein
		jmp	Servo2_Prop2		;raus
Servo2_Prop1	mov	rtcc,#001h		;sonst maximale Impulsl�nge
Servo2_Prop2	cjbe	rtcc,#0feh,Servo2_Prop2	;Warte
		clrb	P3_Servo_Kanal2		;Clear Servo-Bit
Servo2_End	ljmp	Servo3
;---------------------------------------;
; Servo-Ausgaben			;
;---------------------------------------;
Space		ds 	0200h-Space	;f�r �bergang auf Page 1
;*
Servo3		clr	WDT
		mov	Temp1,#P3_Servo_Art3
		cje	Temp1,#Dummy,Servo3_End
;*
		mov	Option,#2		;Timer f�r offset
		mov	rtcc,#0ffh-IL_Offset	;vorbereiten
		setb	P3_Servo_Kanal3		;Servo Impuls setzen
;*
:Loop		cjb	rtcc,#0feh,:Loop	;Offset abwarten
;*
		cjb	Temp1,#5,Servo3_Prop	;Proportional ?
;*
		cje	Temp1,#5,Servo3_LR	;Links-Rechts
		cje	Temp1,#6,Servo3_LRV	;Links-Rechts verz�gert
		cje	Temp1,#7,Servo3_LMR	;Links-Mitte-Rechts
		cje	Temp1,#8,Servo3_POSLR	;Positionieren Li.-Re.
;*
Servo3_LR	jb	P3_Servo3_Lang,Servo3_LR_Kurz
	
		mov	RTCC,#0ffh-IL_Lang
		jmp	Servo3_Prop2			;bei RTCC ueberlauf
Servo3_LR_Kurz	mov	RTCC,#0ffh-IL_Kurz
		jmp	Servo3_Prop2
;*
Servo3_LMR	jb	P3_Servo3_Kurz,Servo3_LMR_Kurz
		jb	P3_Servo3_Lang,Servo3_LMR_Lang
		mov	RTCC,#0ffh-IL_Mitte
		jmp	Servo3_Prop2			
Servo3_LMR_Kurz	mov	RTCC,#0ffh-IL_Kurz
		jmp	Servo3_Prop2
Servo3_LMR_Lang	mov	RTCC,#0ffh-IL_Lang
		jmp	Servo3_Prop2
;* -----------------------------
;* Verz�gert Links-Rechts 
;* -----------------------------
Servo3_LRV		jb	P3_Servo3_Lang,Servo3_LRV_Kurz
;
Servo3_LRV_Lang		inc	S3_Count		;um 1 erhoehen
			cjbe	S3_Count,#IL_Lang,Servo3_LRV_Lang1
			mov	S3_Count,#IL_Lang
Servo3_LRV_Lang1	jmp	Servo3_LRV_End
;
Servo3_LRV_Kurz		dec	S3_Count
			cjae	S3_Count,#IL_Kurz,Servo3_LRV_Kurz1
			mov	S3_Count,#IL_Kurz
Servo3_LRV_Kurz1	nop
;
Servo3_LRV_END 		mov	Temp,#0ffh
			sub	Temp,S3_Count
			mov	rtcc,Temp	
			jmp	Servo3_Prop2
;* -----------------------------
;* Kontinuirliches positionieren
;* -----------------------------
Servo3_POSLR		jb	P3_Servo3_Lang,Servo3_POSLR_Kurz
			jb	P3_Servo3_Kurz,Servo3_POSLR_Lang
			jmp	Servo3_POSLR_End		;raus
;
Servo3_POSLR_Lang	inc	S3_Count		;um 1 erhoehen
			cjbe	S3_Count,#IL_Lang,Servo3_POSLR_Lang1
			mov	S3_Count,#IL_Lang
Servo3_POSLR_Lang1	jmp	Servo3_POSLR_End
;
Servo3_POSLR_Kurz	dec	S3_Count
			cjae	S3_Count,#IL_Kurz,Servo3_POSLR_Kurz1
			mov	S3_Count,#IL_Kurz
Servo3_POSLR_Kurz1	nop
;
Servo3_POSLR_END 	mov	Temp,#0ffh
			sub	Temp,S3_Count
			mov	rtcc,Temp	
			jmp	Servo3_Prop2
;*
;* Servo Proportional Ausgabe Kanal 1
;*
Servo3_Prop	mov	Temp,#0ffh
		cje	Temp1,#1,Servo3_1	;Prop von Servo_S1
		cje	Temp1,#2,Servo3_2	;Prop von Servo_S2
		cje	Temp1,#3,Servo3_3	;Prop von Servo_S3
;*
Servo3_1	sub	Temp,Servo1_I
		jmp	Servo3_Prop0
;*
Servo3_2	sub	Temp,Servo2_I
		jmp	Servo3_Prop0
;*
Servo3_3	sub	Temp,Servo3_I
;*
Servo3_Prop0	cja	Temp,#0E0h,Servo3_Prop1	;�berlauf ?
		mov	rtcc,Temp		;Nein
		jmp	Servo3_Prop2		;raus
Servo3_Prop1	mov	rtcc,#001h		;sonst maximale Impulsl�nge
Servo3_Prop2	cjbe	rtcc,#0feh,Servo3_Prop2	;Warte
		clrb	P3_Servo_Kanal3		;Clear Servo-Bit
Servo3_End	nop	
;-----------------------------------------------:
; Multinaut Bits 
;-----------------------------------------------:
Multi1		
;		jnb	Zus1_I,Multi2
;		setb	Zus1_O
;		jmp	Multi3
;Multi2		clrb	Zus1_O
;Multi3		jnb	Zus2_I,Multi4
;		setb	Zus2_O
;		jmp	Multi5
;Multi4		clrb	Zus2_O
Multi5		jnb	Zus3_I,Multi6
		setb	Zus3_O
		jmp	Multi7
Multi6		clrb	Zus3_O
Multi7		jnb	Zus4_I,Multi8
		setb	Zus4_O
		jmp	Multi9
Multi8		clrb	Zus4_O
Multi9		mov	Temp,#Rundum_On		;Test ob Rundumlicht
		cje	Temp,#1,Rundum1		;ja
;*
		jnb	Zus5_I,Multi10
		setb	Zus5_O
		jmp	Multi11
Multi10		clrb	Zus5_O
Multi11		jnb	Zus6_I,Multi12
		setb	Zus6_O
		jmp	Multi13
Multi12		clrb	Zus6_O
Multi13		jnb	Zus7_I,Multi14
		setb	Zus7_O
		jmp	Multi15
Multi14		clrb	Zus7_O
Multi15		jnb	Zus8_I,Multi16
		setb	Zus8_O
		jmp	Multi17
Multi16		clrb	Zus8_O
Multi17		jmp	Rund_End
;-----------------------------------------------:
; Rundumlicht					;
;-----------------------------------------------;
Rundum1		mov	Temp,#Rundum_On		;Rundum_Flag
		cje	Temp,#001h,Rundum2	;ein ?
		jmp	Rund_End		;sonst nicht
;*
Rundum2		jb	Rundum_I,Rundum3	;Rundum an ?
		clrb	Rund1_O			;sonst Clear
		clrb	Rund2_O
		clrb	Rund3_O
		clrb	Rund4_O
		clr	R_Timer
		jmp	Rund_End
;
Rundum3		mov	R_Dealy1,FLR		;Bit 4-6 AD-Rundum von PIC 1
		swap	R_Dealy1		;nach Bit 0 - 3
		and	R_Dealy1,#007h		;Maskiere Bit 0 - 3
		clc	
		add	R_Dealy1,#R_Dealy	;add Offset
		inc	R_Timer			;f�r Rundumicht
		mov	R_Temp,R_Dealy1
;
		cje	R_Temp,R_Timer,Set_R1D	;Lampe �berlappen
		add	R_Temp,R_Dealy1
		cje	R_Temp,R_Timer,Set_R1	;Lampe richtig
		add	R_Temp,R_Dealy1
;
		cje	R_Temp,R_Timer,Set_R2D	;Lampe2 �berlappen
		add	R_Temp,R_Dealy1
		cje	R_Temp,R_Timer,Set_R2	;Lampe 2 richtig
		add	R_Temp,R_Dealy1
;
		cje	R_Temp,R_Timer,Set_R3D
		add	R_Temp,R_Dealy1
		cje	R_Temp,R_Timer,Set_R3
		add	R_Temp,R_Dealy1
;
		cje	R_Temp,R_Timer,Set_R4D
		add	R_Temp,R_Dealy1
		cje	R_Temp,R_Timer,Set_R4
		add	R_Temp,R_Dealy1
		jmp	Rund_End
;
Set_R1D		setb	Rund1_O
		jmp	Rund_End
Set_R1		clrb	Rund4_O
		jmp	Rund_End

Set_R2D		setb	Rund2_O
		jmp	Rund_End
Set_R2		clrb	Rund1_O
		jmp	Rund_End

Set_R3D		setb	Rund3_O
		jmp	Rund_End
Set_R3		clrb	Rund2_O
		jmp	Rund_End

Set_R4D		setb	Rund4_O
		jmp	Rund_End
Set_R4		clrb	Rund3_O
		clr	R_Timer
;---------------------------------------;
Rund_End	Ljmp	Start10		;
		end
