スキップしてメイン コンテンツに移動

IRQ 外部割込みサンプル : RX63N


#include "iodefine.h"
#include "global.h"
#include "vect.h"
extern MAIN_STATE main_state;
extern MODE_STATE mode_state;
extern unsigned char volume;
void initIRQ(void);
void initIRQ(void){
 int i;
 ICU.IER[8].BYTE = 0x00;

 //デジタルフィルタ 許可ビット
 ICU.IRQFLTE0.BYTE = 0x00;
 ICU.IRQFLTC0.WORD = 0xFFFF;//64clockに1回
 //デジタルフィルタ 許可ビット IRQ0-7
 ICU.IRQFLTE0.BYTE = 0xFF;

 PORTD.PDR.BYTE = 0;
 PORTD.PMR.BYTE = 0x00;//ポートモードレジスタ(0:汎用入出力ポート, 1:周辺機能)

 //マルチファンクションピンコントローラ
 MPC.PWPR.BYTE &= ~0x80;//PFSプロテクト解除
 MPC.PWPR.BYTE |= 0x40;

 MPC.PD0PFS.BYTE = 0x40;
 MPC.PD1PFS.BYTE = 0x40;
 MPC.PD2PFS.BYTE = 0x40;
 MPC.PD3PFS.BYTE = 0x40;
 MPC.PD4PFS.BYTE = 0x40;
 MPC.PD5PFS.BYTE = 0x40;
 MPC.PD6PFS.BYTE = 0x40;
 MPC.PD7PFS.BYTE = 0x40;

 MPC.PWPR.BYTE &= ~0x40;
 MPC.PWPR.BYTE |= 0x80;//PFSプロテクト設定

 ICU.IRQCR[0].BIT.IRQMD = 1;
 ICU.IRQCR[1].BIT.IRQMD = 1;
 ICU.IRQCR[2].BIT.IRQMD = 1;
 ICU.IRQCR[3].BIT.IRQMD = 1;
 ICU.IRQCR[4].BIT.IRQMD = 3;
 ICU.IRQCR[5].BIT.IRQMD = 3;
 ICU.IRQCR[6].BIT.IRQMD = 3;
 ICU.IRQCR[7].BIT.IRQMD = 3;

 for(i=64; i<72; i++){
  ICU.IPR[i].BYTE = 11;
  ICU.IR[i].BYTE = 0x00;
 }

 ICU.IER[8].BYTE = 0xFF;
}
// ICU IRQ0
void Excep_ICU_IRQ0(void){

}
// ICU IRQ1
void Excep_ICU_IRQ1(void){

}
// ICU IRQ2
void Excep_ICU_IRQ2(void){

}
// ICU IRQ3
void Excep_ICU_IRQ3(void){

}
// ICU IRQ4(Yellow Button)
void Excep_ICU_IRQ4(void){
 volume =  ((PORTD.PIDR.BYTE & 0xF0) >> 4);
}
// ICU IRQ5(Green Button)
void Excep_ICU_IRQ5(void){
 volume =  ((PORTD.PIDR.BYTE & 0xF0) >> 4);
}
// ICU IRQ6(Orange Button)
void Excep_ICU_IRQ6(void){
 volume =  ((PORTD.PIDR.BYTE & 0xF0) >> 4);
}
// ICU IRQ7(Red Button)
void Excep_ICU_IRQ7(void){
 volume =  ((PORTD.PIDR.BYTE & 0xF0) >> 4);
}

コメント