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
新手上路,如有错误,欢迎指正。
- MC9S12G128 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 外部中断
- 中断一、外部中断
- 外部中断0和外部中断1
- 对比S3C6410外部中断STM32外部中断
- 外部中断与内部中断
- 外部中断,共享中断向量
- OpenCms JSP标签详解——cms:property标签
- ruby gem 本地安装方法以及在windows下添加mysql.gem
- 2010.10.02_33vc_Armadillo3.78带Key双进程手动脱壳
- Android Receiver代码注册
- [转]OpenCms JSP标签详解——cms:user标签
- MC9S12G128 外部中断
- 对 OpenCms 的 <cms:user> 标签的使用补充
- Android 代码注册Receiver 学习
- 自动机 Keywords Search 2222
- 使用Jobs之创建jobs
- OpenCms的<cms:info>标签
- 使用rails高效开发之快速创建控制器 视图 模型和数据库文件
- OpenCms JSP标签详解——cms:link标签
- 模拟退火算法