历史上的今天
今天是:2025年08月11日(星期一)
2021年08月11日 | MC9S12G128 外部中断
2021-08-11 来源:eefocus
/*****************************************************************
** 程序名:MC9S12G128 按键检测(中断方式)
** 参 数:无
** 功 能:当按下按键后LED关闭0.1秒
** 注 意:LED位于G128 PD0口,按键位于G128 PP0口
** 作 者:赵露露
** 版 本:v1.0
** 时 间:2012.5.7
******************************************************************/
#include #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 


史海拾趣
|
Microsoft (R) Windows Debugger Version 6.11.0001.404 X86 Copyright (c) Microsoft Corporation. All rights reserved. Opened \\\\.\\pipe\\com_1 Waiting to reconnect... Connected to Windows XP 2600 x86 compatible target at (Wed ...… 查看全部问答> |
|
我用c#在2440上面编写应用程序,开发速度快~ 但是c#怎么碰到底层硬件,怎样直接控制2440的GPIO, evc当中有个内存映射的东西,但是在c#下面怎么搞?? 网上查了下,c#的都是LED的那个,但问题是 GPIO的话是不是得先要写个GPIO驱动的DLL,然后再去createfi ...… 查看全部问答> |
|
设备名称:离心机 使用单片机控制板通过485控制变频器(RTU 9600) 现在遇到一个问题,马达的外壳与地线连接时通信容易中断,而且温控传感器信号受干扰。(变频器与离心机分别用过两个插头供电) 现在特郁闷,这东东有时正常工作,有时不行,有时半 ...… 查看全部问答> |
|
AD603的接法是按其厂家资料上的其中一种接法接的,就是5脚和7脚之间接一个2.15K 的电阻,使得其增益范围为0~40dB,在测试AD603放大倍数的时候发现其并不是按40Vg+20(dB){Vg为1脚和2脚之间的电压差,在-500mV~500mV之间是线性变化的,也就是按那个 ...… 查看全部问答> |
|
1. food.position.x=(4*(TL0%4)-1);这个表达式在TL0%4为0的情况下会使得food.position.x=-1,表达成十六进制会得到0xff(这里的food.position.x是 int型)。 而我的程序段里有这么两句“P2 = table[food.position.x]; ...… 查看全部问答> |
|
replyreload += \',\' + 1332474;发一个5W的LED驱动电源原理图供大家欣赏,讨论Timson,如果您要查看本帖隐藏内容请回复 [ 本帖最后由 qwqwqw2088 于 2012-7-3 16:54 编辑 ]… 查看全部问答> |




