MC9S12G128 外部中断

来源:互联网 发布:java for循环执行顺序 编辑:程序博客网 时间:2024/06/16 12:02
/*******************************************************************    程序名:MC9S12G128 按键检测(中断方式)**    参  数:无**    功  能:当按下按键后LED关闭0.1秒  **    注  意:LED位于G128 PD0口,按键位于G128 PP0口**    作  者:赵露露**    版  本:v1.0**    时  间:2012.5.7   ******************************************************************/#include <hidef.h>            /* common defines and macros */#include "derivative.h"       /* derivative-specific definitions *//*******************************************************************    函数名: delayms()**    参  数:xms**    功  能:在16MHz总线时钟下大约延时xms毫秒  **    注  意:    ******************************************************************/void delayms(uint xms){  uint z,j;for(z=xms;z>0;z--)    for(j=1600;j>0;j--);}//中断函数#pragma CODE_SEG __NEAR_SEG NON_BANKED//将中断函数置于非分页区内,地址空间超过了16位的寻址空间64K,但是它的中断向量地址只有16位,所以中断程序要执行,就得在它16位的寻址空间也即非分页区内,这就是为什么会将S12的中断函数置于非分页区的原因。interrupt 56 void IRQ_ISR(void)       //56为PP口中断向量号,它是由文件"mc9s12g128.h"中定义的宏,可在这个文件中搜索"VectorNumber"查找各个中断的中断向量号{   DisableInterrupts;                  //关闭中断                    PIFP_PIFP0 = 1;                     //清除PP0的中断标志位  PORTD_PD0 = 1;                      //关闭LED  delayms(100);                       //延时以至于可以观察到效果  EnableInterrupts;                   //打开中断}#pragma CODE_SEG DEFAULT              //将后续代码置于默认区域内void main(void) {    DDRD = 0xFF;                //设置PD(0-7)方向为输出  PORTD = 0xFF;               //设置PD(0-7)输出高电平    DDRP_DDRP0 = 0;             //设置PP0口方向为输入  PERP_PERP0 = 1;             //设置PP0口拉设备启用  PPSP_PPSP0 = 1;             //打开PP0口上拉  PIEP_PIEP0 = 1;             //设置PP0口中断使能                                EnableInterrupts;           //打开中断 while(1)  {    PORTD_PD0 = 0;            //打开LED  }            }

注:G128可作为中断口的有PP,PJ,AD,其使用方法与其类似,程序中使用的寄存器介绍如下:




附:G128中断向量号


#define VectorNumber_Vsi                 63U
#define VectorNumber_Vportad             62U
#define VectorNumber_Vatdcompare         61U
#define VectorNumber_VReserved60         60U
#define VectorNumber_Vapi               59U
#define VectorNumber_Vlvi               58U
#define VectorNumber_VReserved57         57U
#define VectorNumber_Vportp             56U
#define VectorNumber_VReserved55        55U
#define VectorNumber_VReserved54        54U
#define VectorNumber_VReserved53        53U
#define VectorNumber_VReserved52        52U
#define VectorNumber_VReserved51        51U
#define VectorNumber_VReserved50        50U
#define VectorNumber_VReserved49        49U
#define VectorNumber_VReserved48        48U
#define VectorNumber_VReserved47        47U
#define VectorNumber_VReserved46        46U
#define VectorNumber_VReserved45        45U
#define VectorNumber_VReserved44        44U
#define VectorNumber_VReserved43        43U
#define VectorNumber_VReserved42        42U
#define VectorNumber_VReserved41        41U
#define VectorNumber_VReserved40        40U
#define VectorNumber_Vcantx             39U
#define VectorNumber_Vcanrx             38U
#define VectorNumber_Vcanerr             37U
#define VectorNumber_Vcanwkup           36U
#define VectorNumber_Vflash             35U
#define VectorNumber_Vflashfd           34U
#define VectorNumber_Vspi2               33U
#define VectorNumber_Vspi1              32U
#define VectorNumber_VReserved31         31U
#define VectorNumber_Vsci2               30U
#define VectorNumber_VReserved29         29U
#define VectorNumber_Vcpmuplllck         28U
#define VectorNumber_Vcpmuocsns         27U
#define VectorNumber_VReserved26         26U
#define VectorNumber_VReserved25        25U
#define VectorNumber_Vportj             24U
#define VectorNumber_VReserved23         23U
#define VectorNumber_Vatd               22U
#define VectorNumber_Vsci1               21U
#define VectorNumber_Vsci0               20U
#define VectorNumber_Vspi0               19U
#define VectorNumber_Vtimpaie           18U
#define VectorNumber_Vtimpaaovf         17U
#define VectorNumber_Vtimovf             16U
#define VectorNumber_Vtimch7             15U
#define VectorNumber_Vtimch6             14U
#define VectorNumber_Vtimch5             13U
#define VectorNumber_Vtimch4             12U
#define VectorNumber_Vtimch3             11U
#define VectorNumber_Vtimch2             10U
#define VectorNumber_Vtimch1             9U
#define VectorNumber_Vtimch0             8U
#define VectorNumber_Vrti               7U
#define VectorNumber_Virq               6U
#define VectorNumber_Vxirq               5U
#define VectorNumber_Vswi               4U
#define VectorNumber_Vtrap               3U
#define VectorNumber_Vcop               2U
#define VectorNumber_Vclkmon             1U
#define VectorNumber_Vreset             0U


新手上路,如有错误,欢迎指正。

原创粉丝点击