您的位置 首页 解答

中止函数写法的比较

写单片机程序,中断是免不了的。我比较喜欢用C写单片机程序,简单而且可读性高,当然程序效率没有汇编的高。目前写过51单片机跟AVR单片机…

单片机程序,中止是免不了的。我比较喜爱用C写单片机程序,简略并且可读性高,当然程序功率没有汇编的高。现在写过51单片机跟AVR单片机的C程序,最近在看MSP430的书。用C写不同的单片机程序其实都是迥然不同,因而能对不熟悉的单片机也能很快上手写程序。不过中止函数写法,各个编译器往往都会有些不同。

最早写的C程序是51单片机的,用的编译器自然是大名鼎鼎的keil c了。Keil的功用仍是十分微弱的,不仅能编译,还有软件仿真调试与硬件调试的功用。因为条件粗陋,没用过什么仿真器,一向都是靠软件仿真调试程序的。Keil 中的中止函数一般格局如下:

void 函数名() interrupt n using n

{

…….

}

其间函数名能够恣意取,关键字interrupt用来指明这是一个中止服务函数,后边的n表明中止号,关键字using加后边的n表明运用哪一组寄存器。

后然接触到AVR的单片机,该单片机开发环境一般用ICC或者是GCC。因为ICC是商用软件,而GCC是免费的,因而我一般用GCC来写AVR的C程序。现在版别的GCC for AVR有了一些改善,关于中止函数支撑两种关键字ISR与SIGNAL,其格局如下:

ISR(vect)

{

………

}

SIGNAL(vect)

{

……..

}

其间的vect便是中止向量名,依据不同的类型的AVR单片机的不同的中止源都会有相对应的中止向量名,比方外部中止0关于ISR格局的中止向量名为INT0_vect,对SIGNAL则为SIG_INTERRUPT0。

最近在看TI的MSP430系列单片机的材料,看到该单片机选用C430写的中止服务函数有点像前两种的归纳,其格局如下:

interrupt [vect] void 函数名(void)

{

…….

}

其间vect也是中止向量名,函数名能够任取。

比较这几种中止函数写法,自己更倾向于AVR的GCC的写法。首要关于中止函数来说即不能有输入参数又没有返回值,没必要再给它加个“void 函数名(void)”的方法的函数。并且光看中止向量名一般都能知道是哪个中止源发生,再写个中止函数名作解说好像有点重复。关于keil c用中止向量号的方法来表明中止源,感觉有点费事,记住中止源的中止号比记中止向量要难多了。不过或许规范51的中止缘比较少,并且keil应该出来的比较早,所以才会选用这种方法。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/272642.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部