/*

RTCPER.C:

This program demonstrates how to set up the RTC to generate
periodic interrupts. Compile the program and run with F9.
Then add the watch expression "count" to the watch list.
Type control-U repeatedly to see the value change. The
variable count should be incremented 256 times in a second.

*/

#use eziolp31.lib

unsigned count;

#JUMP_VEC RST38_VEC int0ISR

interrupt reti void int0ISR() {
	auto int flags;
	flags = rtcRdRegC();					//	reading register C clears the periodic
												//	interrupt flag (to release IRQ)
	if (flags & 0x40) {
		++count;								//	to indicate we've been here...
	}
}

main() {
	rtcInit();

	//	clear all interrupt enable
	rtcSwAIE(0);
	rtcSwKSE(0);
	rtcSwPIE(0);
	rtcSwUIE(0);
	rtcSwRIE(0);
	rtcSwWIE(0);

	//	clear all interrupt status flags
	rtcClrIRQ();

	rtcSetPIRate(0x01);			//	set up for 256Hz

	rtcIRQ(1);						//	enable INT0 to receive RTC IRQ

	rtcSwPIE(1);					//	now enable interrupt

	while (1) {
		runwatch();					//	update the "count" watch expression
		hitwd();
	}
}