历史上的今天
返回首页

历史上的今天

今天是: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             /* 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

推荐阅读

史海拾趣

骅讯(Cmedia)公司的发展小趣事

近年来,随着科技的不断进步和市场的不断变化,骅讯公司也积极寻求创新转型和拓展市场。在保持其在音频芯片设计领域领先地位的同时,骅讯还积极开发新的业务领域,如软件研发、数字内容供应等。这些创新举措不仅为骅讯带来了新的增长点,也为其在电子行业中保持领先地位提供了有力支持。

以上是关于骅讯(Cmedia)公司在电子行业中发展起来的相关故事简要概述。这些故事展示了骅讯如何凭借其技术实力和市场洞察力在竞争激烈的电子行业中不断发展壮大。

远阳(FLYOUNG)公司的发展小趣事

国光新业深知技术创新是企业发展的核心动力。截至目前,公司已拥有授权专利78项,其中发明专利30项,实用新型专利48项,还有数十项专利正在实质审查中。这些专利的积累,不仅彰显了公司在电容器领域的深厚技术底蕴,更为公司产品的持续升级与市场竞争力的提升提供了有力保障。公司还主导起草了两项该类高分子电容器国家标准,进一步巩固了其在行业内的领先地位。

BRIGHT公司的发展小趣事

BRIGHT公司的历史可以追溯到1985年,由一群热爱音乐的年轻人和电子工程师共同创立。在1987年,他们成功推出了全球第一支无线耳机,这一创新产品迅速在市场上获得了巨大的成功。这一成就的背后,是创始人在一次偶然中被家里的电线绊倒后产生的灵感。他意识到,将有线耳机转变为无线耳机将带来巨大的便利和舒适体验。这一创新不仅改变了耳机行业的格局,也为BRIGHT公司奠定了坚实的基础。

HANBIT Electronics公司的发展小趣事

BRIGHT公司的历史可以追溯到1985年,由一群热爱音乐的年轻人和电子工程师共同创立。在1987年,他们成功推出了全球第一支无线耳机,这一创新产品迅速在市场上获得了巨大的成功。这一成就的背后,是创始人在一次偶然中被家里的电线绊倒后产生的灵感。他意识到,将有线耳机转变为无线耳机将带来巨大的便利和舒适体验。这一创新不仅改变了耳机行业的格局,也为BRIGHT公司奠定了坚实的基础。

聚洵(Gainsil)公司的发展小趣事

BRIGHT公司不仅在电子产品领域取得了成功,还积极拓展酒店业务。他们成立了伯瑞特酒店集团,并在全国范围内开设了多家酒店。这些酒店以高品质的服务和独特的文化特色赢得了广大消费者的喜爱。其中,宁波伯瑞特酒店荣获了全国钻级酒店评定中的五钻酒家称号,千岛湖伯瑞特度假酒店也获得了金鼎特色文化主题饭店的荣誉。这些荣誉的获得不仅彰显了BRIGHT公司在酒店业务方面的实力,也为其未来的发展奠定了坚实的基础。

Fastron公司的发展小趣事

在电感器领域取得成功后,Fastron并没有止步不前。相反,公司积极拓展业务领域,实现了多元化发展。除了电感器业务外,Fastron还成功运营了大型钣金生产业务,专门生产精密金属外壳和机电组件。此外,Fastron集团还拥有位于德国的Rapid Biomedical公司,为MRI扫描仪定制MR线圈,进一步拓宽了公司的业务范围。

问答坊 | AI 解惑

楼宇对讲没对讲

最近毕业设计快答辩了,设计个楼宇对讲系统到现在还没有弄出实物来,在语音对讲这块停住了,有推荐使用飞利浦的TEA1062这个芯片来实现通话的功能,可是小弟不懂鸟语看不懂说明书。想来这里请教各位高手,能不能介绍个芯片,外加个接89c51的硬件的电 ...…

查看全部问答>

对飞思卡尔感兴的朋友进来坐坐

我正在学习MX51 ,现在网上这方面资料太少了,希望各位大虾多多指点,一起交流。 我的QQ:732393618…

查看全部问答>

单机,调试内核时,无法进入调试状态,怎么回事?

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# wince 控制GPIO?

我用c#在2440上面编写应用程序,开发速度快~ 但是c#怎么碰到底层硬件,怎样直接控制2440的GPIO, evc当中有个内存映射的东西,但是在c#下面怎么搞?? 网上查了下,c#的都是LED的那个,但问题是 GPIO的话是不是得先要写个GPIO驱动的DLL,然后再去createfi ...…

查看全部问答>

485通信抗干扰的问题。

设备名称:离心机 使用单片机控制板通过485控制变频器(RTU 9600) 现在遇到一个问题,马达的外壳与地线连接时通信容易中断,而且温控传感器信号受干扰。(变频器与离心机分别用过两个插头供电) 现在特郁闷,这东东有时正常工作,有时不行,有时半 ...…

查看全部问答>

求助有关AD603的问题

AD603的接法是按其厂家资料上的其中一种接法接的,就是5脚和7脚之间接一个2.15K 的电阻,使得其增益范围为0~40dB,在测试AD603放大倍数的时候发现其并不是按40Vg+20(dB){Vg为1脚和2脚之间的电压差,在-500mV~500mV之间是线性变化的,也就是按那个 ...…

查看全部问答>

MSP430FR5739做温度测量最多能做到什么精度

MSP430FR5739通过定时器,比较器测量温度能做到1/100度的精度吗,另外这个片子卖多少钱…

查看全部问答>

这些天kei调试的一些小收获

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]; ...…

查看全部问答>

发一个5W的LED驱动电源原理图供大家欣赏

replyreload += \',\' + 1332474;发一个5W的LED驱动电源原理图供大家欣赏,讨论Timson,如果您要查看本帖隐藏内容请回复 [ 本帖最后由 qwqwqw2088 于 2012-7-3 16:54 编辑 ]…

查看全部问答>