タイマ割り込みを2つ宣言したプログラムの例

おそらく、割り込みにとして動作させたい関数を”#pragma interrupt(関数名)”で宣言してあげれば動作してくれるらしい。ちなみに、下のプログラミングだと、2つのタイマ割り込みを使用している。多分これで動くはず。”ITU1.GRA = 0x4E20”などの値を変えてやれば足し算されるスピードも変化するはず。

#include <3048f.h>
#include <myfunc.h>
#pragma interrupt(intimia1)	  /* ITU1の割り込み関数宣言 */
#pragma interrupt(intimia2)	  /* ITU2の割り込み関数宣言 */

extern int test_val01;
extern int test_val02;




void main(void)
{
	ITU1.TCR.BYTE = 0x23;	/* GRAコンペアマッチ clock 1/8 */
	ITU1.GRA = 0x4E20;		/* GRA4E20に設定 約10ms*/
	ITU1.TIER.BYTE = 0xF9;  /* ITU1GRAによるコンペアマッチ割込みを許可*/
	ITU.TSTR.BIT.STR1 = 0;  /* カウント停止状態 */

	ITU2.TCR.BYTE = 0x23;	/* GRAコンペアマッチ clock 1/8 */
	ITU2.GRA = 0x2710;		/* GRA2710に設定 約5ms*/
	ITU2.TIER.BYTE = 0xF9;  /* ITU2GRAによるコンペアマッチ割込みを許可*/
	ITU.TSTR.BIT.STR2 = 0;  /* カウント停止状態 */

	test_val01 = 0x0000;
	test_val02 = 0x0000;


	while(1);
}


void intimia1(void)
{
	test_val01++;
}


void intimia2(void)
{
	test_val02++;
}