* демонстрация input-capture
	ORG	$1000
PORTA	FCB	0
	
	ORG	$1010
TIC1	FDB	0
TIC2	FDB	0
TIC3	FDB	0

	ORG	$1021
* Флаги, управляющие input capture:
* IC1 будет срабатывать по фронту импульса (EDG1B:EDG1A=01)
* IC2 - по срезу импульса (EDG2B:EDG2A=10)
* IC3 - как по фронту, так и по срезу импульса (EDG3B:EDG3A=11)
TCTL2	FCB	%00011011

* Разрешим обработку прерываний для всех трёх IC:
TMSK1	FCB	%00000111
TFLG1	FCB	0


**********************************************************
*            Начало основной программы                   *
**********************************************************
	
	ORG	0
* Переменные для сохранения результата - защёлкнутого в TICx значения
TIC_1	FDB	0	* значение, защёлкнутое в TIC1
TIC_2	FDB	0	* значение, защёлкнутое в TIC2
TIC_3	FDB	0	* значение, защёлкнутое в TIC3

	
	ORG	$f00	
Init:	CLI			* разрешаем маскируемые прерывания
	LDS	#$40
 	LDY	#PORTA
	
* бесконечный цикл
Loop:

* генерация прерывания IC1
 	BSR	Wait
	BSET	0,Y #%00000100  * переход на iIC1

* генерация прерывания IC2
	BSR	Wait
	BSET	0,Y #%00000010
	BCLR	0,Y #%00000010  * переход на iIC2

* генерация прерывания IC3
	BSR	Wait
	BSET	0,Y 1  * переход на iIC3
	BCLR	0,Y 1  * переход на iIC3

	BRA	Loop

* пустой цикл для изменения TCNT
Wait:	LDX	#$10
L:	DEX
	BNE	L
	RTS	

	
**********************************************************
*            Обработчики прерываний ICx                  *
**********************************************************


* обработка прерывания IC1
iIC1:	LDAA	TFLG1 		* сбрасываем флаг прерывания IC1
	ANDA	#%11111011
	STAA	TFLG1
	LDD	TIC1
	STD	TIC_1		* сохраняем TIC1 в своей переменной
	RTI

* обработка прерывания IC2
iIC2:	LDAA	TFLG1 		* сбрасываем флаг прерывания IC2
	ANDA	#%11111101
	STAA	TFLG1
	LDD	TIC2
	STD	TIC_2		* сохраняем TIC2 в своей переменной
	RTI

* обработка прерывания IC3
iIC3:	LDAA	TFLG1 		* сбрасываем флаг прерывания IC3
	ANDA	#%11111110
	STAA	TFLG1
	LDD	TIC3
	STD	TIC_3		* сохраняем TIC3 в своей переменной
	RTI

	
* векторы прерываний IC3..1
	ORG	$ffea
	FDB	iIC3
	FDB	iIC2
	FDB	iIC1
	ORG	$fffe
	FDB	Init
	