////simulace impulsu z Atmegy5 k casomire pro laserovy terc  - Atmega 7////

.include "m8def.inc"

////////////////////////////////////////////////////////////
//hlavni program
//////////////////////////////////////

zac:  	ldi R16, HIGH(RAMEND) // inicializace STACK POINTERu
		out SPH, R16
		ldi R16, LOW(RAMEND)
		out SPL, R16

		ldi R16, 0xFF	//B vystupni - jednotlivé segmenty displejů B0 - B6, B7 adresuje diody
		out DDRB, R16
		ldi R16, 0x1F	//C0-C4 vystupni - jednotlivé displeje C0 - C3 (C0 je 1. displej)  C4 adresuje diody      
		out DDRC, R16		// C5 vstupni komunikace s atmegou5
		ldi R16, 0xFF	//D0-D7 výstupni
		out DDRD, R16
		ldi R16, 0xFF
		ldi R17, 0
		out PORTB, R17


program:	rcall cekej1
		
		out PORTB, R16
		rcall cekej400		//4 impulsy 400us program
		out PORTB, R17
		rcall cekej400
		out PORTB, R16
		rcall cekej400
		out PORTB, R17
		rcall cekej400
			out PORTB, R16
		rcall cekej400
		out PORTB, R17
		rcall cekej400
			out PORTB, R16
		rcall cekej400
		out PORTB, R17
		rcall cekej400
			out PORTB, R16
		rcall cekej400
		out PORTB, R17
		rcall cekej400
	
	
		
		
		
		
		
				//počká 3 sekundy
		rcall cekej1
		rcall cekej1
		rcall cekej1

start:	out PORTB, R16		//impuls start (2ms)
		rcall cekej2ms
		out PORTB, R17
		

		rcall cekej1		//počká 3 sekundy
		rcall cekej1
		rcall cekej1
	
	
		
	

		out PORTB, R16
		rcall cekej400		//3 impulsy 400us strela
		out PORTB, R17
		rcall cekej1		//sekunda navíc
		out PORTB, R16
		rcall cekej400
		out PORTB, R17
		rcall cekej1		//sekunda navíc
		out PORTB, R16
		rcall cekej400
		out PORTB, R17
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1
		rcall cekej1		//13 sekund navíc

		out PORTB, R16		//stop impuls
		rcall cekej2ms
		out PORTB, R17

		rcall cekej1  	// počka a za sekundu resetuje atmegu7 do načtení programu 
						//už neposílám znovu signál Program ale rovnou start
		out PORTB, R16		//RESTART impuls
		rcall cekej2ms
		out PORTB, R17
	

smycka:		
		
			rcall cekej1
			rcall cekej1

			rjmp program		//počká a skočí na start





	























cekej1:
			ldi R20, 5			//cca 1s (R17 5)
	d1:		ldi R18, 0
	d2:		ldi R19, 0
	d3:		dec R19
		
			brne d3
			dec R18
			brne d2
			dec R20
			brne d1
	
				ret

cekej200:	
			
			ldi R18, 0
	b1:		ldi R19, 0
	b2:		dec R19
		
			brne b2
			dec R18
			brne b1
			cli
				ret

cekej2ms:
			 						//cca 24mss (R17 neni)
			ldi R18, 3
	c1:		ldi R19, 220
	c2:		dec R19
		
			brne c2
			dec R18
			brne c1
			
		
	
				ret

cekej400:
			 						//cca 216us (R19 = 72)
			ldi R19, 130
	w1:		dec R19
			brne w1
			ret







