写单片机程 序,中断是免不了的。我比较喜欢用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应该出来的比 较早,所以才会采用这种方式。
关键字:单片机 中断函数
引用地址:
几种单片机的中断函数写法
推荐阅读最新更新时间:2024-03-16 15:07
嵌入式TCP/IP协议单片机技术在网络通信中的应用
在因特网上,TCP/IP协议每时每刻保证了数据的准确传输。在数据采集领域,如何利用TCP/IP协议在网络中进行数据传输成为一个炙手可热的话题。在本系统中,笔者利用TCP/IP协议中的UDP(用户数据报协议)、IP(网络报文协议)、ARP(地址解析协议)及简单的应用层协议成功地实现了单片机的网络互连,既提高了数据传输的速度,又保证了数据传输的正确性,同时也扩展了数据传输的有效半径。
1 TCP/IP协议简介 TCP/IP协议是一套把因特网上的各种系统互连起来的协议组,保证因特网上数据的准确快速传输。参考开放系统互连(OSI)模型,TCP/IP通常采用一种简化的四层模型,分别为:应用层、传输层、网络层、链路层。 (1)应用
[单片机]
8位、32位MCU整体研发成本比较
前言:在多数的微控器(MCU)应用中「成本」向来被视为第一设计要则,因此许多工程师倾向(或被要求)使用初阶MCU来精省成本,然这仅是精省了量产时的硬件料件成本,若从整体成本的角度来审视,结果往往会适得其反。 过去,微控器(MCU)的应用设计相当讲究硬件料件成本的精省,如果能在一个产品上多省个0.1美元,则产品的量产数愈多,则成本精省效应就愈高,所以过往都偏好使用简易、低廉的MCU,能用4位MCU完成设计就用4位MCU,能用8位MCU完成设计就用8位MCU,很少在意后续硬件设计上的后续发展、扩充弹性。 不过,硬件料件精省法只适合于过去的「少样、多量、少变」生产,然今日市场已是「多样、少量、快变」的走向,如此若再坚持「以料件精省
[单片机]
单片机学习之十六:定时器应用3(模式3)
一、实验现象: 在P0.0和p0.1分别输出一个周期是200us和400us的方波信号。 二、实验目的 掌握内部定时/计数器作定时功能(模式3)的应用 三、实验任务分析: 在这个试验里面,要同时产生两个方波信号。我们可以采用和上面一个试验类似的方法,让T0、T1都工作于模式2,分别产生两个方波信号,但是这样要同时占用两个定时器的资源,比较浪费。 由于T0还有一种工作方式,就是可以分为两个8位的计数器tl0和th0,所以我们就采用这个模式3来产生两个方波信号。(注:这种工作模式只适用于T0,如果把定时器T1定义为模式3的时候,T1是停止计数的。) T0工作于模式3的逻辑图如下图所示: 从图上我们可以看到,
[单片机]
基于51单片机的人体红外模块的自动门设计
摘 要 本系统以单片机AT89C51为核心,使用人体红外线传感器作为感应器,检测到人体辐射的红外线能量变化,将其转化为电信号,触发单片机中断。再由单片机通过ULN2003驱动步进电机动作,电机的正反转分别表示自动门的开启和闭合,通过15个LED灯的逐次亮灭来模拟开关门状态。 一. 方案的选择与论证 根据设计要求目的,本系统可以划分为若干个基本模块。为了搭建性能稳定的外部电路及实现较高的性价比,使自动门达到真正的智能控制,针对各个模块的功能要求,分别有以下一些不同的设计方案: 1.驱动电机 方案A:选择步进电机作为自动门的引擎。步进电机最大的优点就是在距离上能够得到较精确控制,在没有行程开关作为电机停止的信号时,步进电机是最有选择
[单片机]
单片机在电机转速测量仪应用
单片机是整个测量系统的主要部分,担负对前端脉冲信号的处理、计算、以及信号的同步,计时等任务,其次,将测量的数据经计算后,将得到的转速值传送到显示接口中,用数码管显示数值。在本系统中考虑到计数的范围、使用的定时,计数器的个数及I/O口线。 电机转速测量需要经过的4个基本步骤:1是控制方式;2是确定计数方式;3是信号输入方式;4是计数值的读取;单片机完成对电机转速脉冲计数的控制,读取寄存器完成转速频率的确定。 其测量过程是测量转速的霍尔传感器和电机机轴同轴连接,机轴每转一周,产生一定量的脉冲个数,由霍尔器件电路输出。成为转数计数器的计数脉冲。同时霍尔传感器电路输出幅度为12V的脉冲经光电耦合后降为5V,保持同单片机AT89C51逻
[单片机]
Microchip推全新PIC18F单片机系列 融合多种纳瓦技术
适用于低成本、低功耗及高性能运行 全球领先的单片机和模拟半导体供应商——Microchip Technology Inc.(美国微芯科技公司)宣布推出其PIC18F高性能8位单片机系列中首批充分利用Microchip最新工艺技术的8款器件。这一新系列单片机确立了低功耗、低成本及高性能运行的新基准。 新系列单片机备有28、40和44引脚封装,融合多种先进的纳瓦技术特性,包括电源管理模式、1.8V至3.6V工作电压范围及高效的片上外设,可实现极佳的功耗控制性能。此外,它们可通过内置振荡器在3V的工作电压下实现16 MIPS(64 MHz)的速度,既可体现高性能又能保持低功耗。上述特点使PIC18F4XK20/2XK20系列成为通用
[新品]
单片机读写U盘、cf卡开发心得
刚做完一个项目,要求将人体心电信号采集下来,存储到海量存储设备中,可以用U盘也可以用CF卡。这个项目的难点不在采集,只要做好信号放大、滤波防干扰,就可以保证信号采集的正确性。而难点在于数据的存储,要求患者将24小时甚至更长时间的所有心电信号都存储下来,按照10ms采集一次数据那么一个小时就要400K,一天的数据存储量需要9.6M。因此一般的静态E2满足不了使用的要求,有些情况下,设备要求能够连续使用一个礼拜,而数据不能丢失,因此必须选用一个大存储量器件。我们在这个项目中选择的是U盘,当然我的一个师弟采用的CF卡也完成了数据的存储。所谓U盘就是一个带有USB接口的硬盘,如果去掉USB接口芯片,U盘内部和CF卡和普通的PC硬盘结构一样。
[单片机]
“2009瑞萨超级MCU模型车大赛”在京举行
由株式会社瑞萨科技(以下简称瑞萨)冠名赞助的“2009瑞萨超级MCU模型车大赛”将于11月22日在北京举行。此项赛事是教育部旨在培养IT技术人才而举办的“全国大学生ITAT大赛”的其中一项重要赛事,已成功举办两届。本届大赛共有包括上海交大、西安交大、北师大、电子科大等在内的49所高校组成的90支队伍,参赛队将参加两个项目的角逐。各参赛队使用自行设计制作搭载有瑞萨芯片的模型车,车辆须在规定赛道上前行,按照进行所用时间长短决定名次。成绩优秀者将获得教育部颁发的IT技能证书。 根据“2009瑞萨超级MCU模型车大赛”规则,参赛队需以瑞萨MCU为核心进行电路和软件设计,以及整合零部件进行赛车的结构设计,设计出的赛车,可以在白
[单片机]