如下所示将PORTH_4设置为中断触发:<br /><br />void PortH_Init(void)<br />{ <br /> PPSH |= (1 << 4); //设置为上升沿中断,视需求再修改<br /> PERH |= (1 << 4); //使能上拉/下拉电阻,视需求再修改<br /> DDRH &= ~(1 << 4); //置为输入状态<br /> PIFH = (1 << 4); //清除之前可能产生的中断标志,<br /> PIEH_PIEH4 = 1; //使能PORTH_4中断<br />}<br /><br />以下下中断服务程序:<br />#pragma CODE_SEG __NEAR_SEG NON_BANKED<br />interrupt void _PORTH_Interrupt(void)<br />{ <br /> if(PIFH & (1 << 4)) <br /> { <br /> PIFH = (1 << 4); // 清除中断标志,这是必需的,<br /> /* 这里加入中断服务程序 */<br /> }<br />}<br />#pragma CODE_SEG DEFAULT<br /><br />PRM文件中的中断向量声明:<br /><br />VECTOR ADDRESS 0xFFCC _PORTH_Interrupt<br /><br />如果使用PE产生的中断向量表,则将 _PORTH_Interrupt加入向量表格相应位置,不需要在PRM文件中声明<br /><br />最后:PORTH中的各个中断没有优先级,但你可以将HPRIO设置为0xcc将PORTH中断提升到IRQ中的最高级别.<br /><br />
|