割り込みで点滅させるプログラム。
これまたポート2に信号を出力させる。LEDをポート2に配線しよう。
void main(void)
{
CINIT;
SYSTEM.SCKCR.BIT.ICK=0; /*コアクロック96MHz*/
SYSTEM.SCKCR.BIT.PCK=1; /*周辺機器クロック PCLK=48MHz*/
PORT2.DDR.BYTE=0xff; /* PORT2の全端子を出力に設定 */
PORT2.DR.BYTE=0x00; /* PORT2のon/offを一応クリア */
/*CMT コンペアマッチタイマ*/
SYSTEM.MSTPCRA.BIT.MSTPA15=0; /* モジュールストップ解除CMT0,CMT1 */
/*クロック選択 0:PCLK/8 1:PCLK/32 2:PCLK/128 3:PCLK/512*/
CMT1.CMCR.BIT.CKS=3; /* 48MHz/512=93.75KHz 1周期=10.67μsec */
CMT1.CMCOR=46875; /*周期設定 46875x10.67=0.5sec */
CMT1.CMCNT=0; /*カウンタリセット*/
IEN(CMT1,CMI1)=1; /*割り込み要求許可*/
IPR(CMT1,CMI1)=1; /*割り込み優先レベル*/
CMT1.CMCR.BIT.CMIE=1; /*割り込み許可*/
CMT.CMSTR0.BIT.STR1=1; /*割り込み開始*/
while(1);
}69行目~
// CMT0 CMI1
void Excep_CMT0_CMI1(void)~
{
PORT2.DR.BYTE=~PORT2.DR.BYTE; /* ポートから読んできて反転してポートに戻す */
} }