历史上的今天
返回首页

历史上的今天

今天是:2025年02月24日(星期一)

正在发生

2020年02月24日 | PIC C语言编程_PICC中断函数的实现

2020-02-24 来源:eefocus

PICC可以实现C语言的中断服务程序。中断服务程序有一个特殊的定义方法:


voidinterruptISR(void);


其中的函数名“ISR”可以改成任意合法的字母或数字组合,但其入口参数和返回参数类型必须是“void”型,亦即没有入口参数和返回参数,且中间必须有一个关键词“interrupt”。


中断函数可以被放置在原程序的任意位置。因为已有关键词“interrupt”声明,PICC在最后进行代码连接时会自动将其定位到0x0004中断入口处,实现中断服务响应。编译器也会实现中断函数的返回指令“retfie”。一个简单的中断服务示范函数如下:


voidinterruptISR(void)//中断服务程序


{


if(T0IE&&T0IF) //判TMR0中断


{


T0IF=0; //清除TMR0中断标志


//在此加入TMR0中断服务


}


if(TMR1IE&&TMR1IF)//判TMR1中断


{


TMR1IF0; //清除TMR1中断标志


//在此加入TMR1中断服务


}


}


//中断结束并返回


PICC会自动加入代码实现中断现场的保护,并在中断结束时自动恢复现场,所以编程员无需象编写汇编程序那样加入中断现场保护和恢复的额外指令语句。但如果在中断服务程序中需要修改某些全局变量时,是否需要保护这些变量的初值将由编程员自己决定和实施。


用C语言编写中断服务程序必须遵循高效的原则:


1. 代码尽量简短,中断服务强调的是一个“快”字。


2. 避免在中断内使用函数调用。


虽然PICC允许在中断里调用其它函数,但为了解决递归调用的问题,此函数必须为中断服务独家专用。既如此,不妨把原本要写在其它函数内的代码直接写在中断服务程序中。


3. 避免在中断内进行数学运算。


数学运算将很有可能用到库函数和许多中间变量,就算不出现递归调用的问题,光在中断入口和出口处为了保护和恢复这些中间临时变量就需要大量的开销,严重影响中断服务的效率。


中档系列PIC单片机的中断入口只有一个,因此整个程序中只能有一个中断服务函数。

推荐阅读

史海拾趣

Chino-Excel公司的发展小趣事

Chino-Excel公司深知人才是企业发展的核心竞争力。因此,公司注重人才培养和团队建设,为员工提供广阔的成长空间和良好的职业发展平台。公司建立了完善的人才培养和激励机制,吸引和留住了一批批优秀的技术人才和管理人才。这些人才为公司的发展注入了源源不断的动力,推动了公司的持续创新和进步。

这些故事虽然是虚构的,但它们反映了电子行业中许多公司可能经历的一些共同挑战和机遇。这些故事强调了技术创新、全球化战略、品牌建设、环保理念以及人才培养在电子行业公司发展中的重要性。请注意,这些故事仅为示例,并不代表任何实际公司的具体情况。

Advanced Thermal Products Inc公司的发展小趣事

Advanced Thermal Products Inc公司成立于XXXX年,由一群热衷于热管理技术的工程师创立。在初创期,ATP公司便以独特的技术视角,专注于研发高效、创新的热管理产品。他们针对当时电子设备散热效果不佳的痛点,成功开发出了一款新型的热管理解决方案,为公司在行业内树立了良好的口碑。

Cobham Semiconductor Solutions公司的发展小趣事

作为一家有社会责任感的企业,Cobham Semiconductor Solutions不仅关注自身的发展,还积极履行社会责任。公司积极参与公益事业,为社区提供支持和帮助。同时,公司还注重环保和可持续发展,采取多项措施降低生产过程中的能耗和排放。这种积极履行社会责任的态度,使得Cobham在社会各界赢得了广泛赞誉。

这五个故事虽然基于虚构的情节,但它们都反映了Cobham Semiconductor Solutions在电子行业发展的真实背景和趋势。这些故事展示了公司在技术创新、市场扩张、品质管理、人才战略和社会责任等方面的努力和成就。希望这些故事能够为您提供一个关于Cobham Semiconductor Solutions发展起来的有趣而全面的视角。

AZM [Arizona Microtek, Inc]公司的发展小趣事

随着市场规模的扩大,AZM公司面临着供应链管理和成本控制的挑战。为了确保产品质量和交货期的稳定性,公司加强了与供应商的合作与沟通,建立了严格的供应商评价体系。同时,公司还通过优化生产流程、提高生产效率、降低原材料消耗等方式,有效控制了成本,提升了盈利能力。

DACHANG公司的发展小趣事

随着公司实力的不断增强,DACHANG公司开始积极拓展国际市场。公司参加了多个国际电子展览会,与国际同行进行了广泛的交流与合作。同时,DACHANG公司还积极寻求与国际知名企业的合作机会,不断提升自己在全球电子产业链中的地位和影响力。

承兴(CX)公司的发展小趣事

经过多年的努力和发展,承兴公司已经成为一家具有全球影响力的电子企业。除了在中国市场保持领先地位外,承兴还积极拓展海外市场,并在美国、新加坡等地设立了分公司和研发中心。通过与全球合作伙伴的紧密合作和资源共享,承兴不断提升其全球竞争力,并努力实现国际化的发展目标。

请注意,由于承兴(CX)公司的具体发展历程和细节可能因时间和市场变化而有所不同,以上故事仅为虚构示例,旨在展示承兴公司在电子行业中的发展脉络和关键事件。

问答坊 | AI 解惑

让我们一起DIY个 FPGA开发板, 报名喽~~~

DIY FPGA开发板活动开幕词 同仁诸君:         当今电子工业发展之迅猛,DSP、FPGA、CPLD之迅速崛起与普及业内对于各种芯片的评估开发板的需求日益增多。市售各种开发板产品、功能、品牌之繁杂,价格之天文、质 ...…

查看全部问答>

wince5.0使用DnsQuery_W()实现gethostbyname时系统不支持

在wince5.0使用DnsQuery_W()实现gethostbyname时,返回值总是120(系统不支持的函数), 头文件、lib文件正确包含调用,不知道为什么系统不支持呢? 代码调用如下:         PDNS_RECORD pDNS_RECORD ;     &n ...…

查看全部问答>

如何计算程序占用的ROM和RAM空间大小?

一直对怎么去计算程序占用的ROM和RAM空间大小不解,而且做项目的时候一般需要估算一下程序可能需要占用空间大小才好选取用多大ROM和RAM空间的MCU来做,举个简单的程序吧:程序功能实现LED闪烁: #include #include #define uint unsigned int ...…

查看全部问答>

WINCE5.0下的IE为何无法浏览WAP网站?

WINCE自带的IE浏览器其他网站都可以浏览,就是不能浏览WAP网站,请问各位DX这是什么原因?应该如何解决?…

查看全部问答>

请问MC2410开发板的PS2接口能不能使用鼠标的?

我问的是鼠标,不是键盘。 不知其实现原理是什么呢?是否2410、核心版或开发板上集成有控制器呢? 谢谢!!~ …

查看全部问答>

中 美 爱 梯.NET培训基地学员被邀请为微软MSDN特约讲师

热烈祝贺中 美 爱 梯.NET培训基地学员被邀请为微软MSDN特约讲师 学员简介:穆**于2006年4月参加中 美 爱 梯.NET培训,由中 美 爱 梯推荐至中讯汉扬任.NET软件工程师,后参加以及等系统开发,担任数据库信息提取以及中间层代码的编写工作,从事过多 ...…

查看全部问答>

关于GPIOPadConfigSet()函数

关于GPIOPadConfigSet()函数,小弟想请教推挽、开漏、弱上拉、弱下拉分别在什么时候使用。…

查看全部问答>

白光 LED 电源设计技术

德州仪器  便携式电源系统工程师Oliver Nachbaur与您分享白光 LED 电源设计技术,传授一个新的电源设计解决方案,一起来学学吧。 摘要 随着彩色显示屏在便携市场(如手机、PDA 以及超小型 PC)中的广泛采用,对于一个单色 LCD 照明而 ...…

查看全部问答>

视频处理领域,将是FPGA的天下?

    几年以前,视频监控应用的通道数不多,对图像质量和实时性等也要求不高,很少有人用FPGA;但是,随着监控由标清转向高清,从单通道转到八通道,从非实时转到对实时的要求,外加人脸识别和运动估计等分析功能,DSP表现得越来越吃 ...…

查看全部问答>