C51的中断函数的格式

发布者:EnchantedBreeze最新更新时间:2016-11-14 来源: eefocus关键字:C51  中断函数  格式 手机看文章 扫描二维码
随时随地手机看文章
C51的中断函数的格式为:void FuncIr(void) interrupt x [using y]

 void 函数名(void) interrupt  n  using  m   
  {    
  函数体语句       
  }       
  interrupt  using  是C51中断服务程序引入关键字只能用于C51中断服务程序逻辑

定义中断函数时,using是一个选项,可以省略不用。如果不用则由编译器选择一个寄存器组作为绝对寄存器组。
             
  n是中断号           
  0       是外部中断0   
  1       是定时中断T0   
  2       是外部中断1   
  3       是定时中断T1   
  4       是串行中断   
  5       是定时器T2   
    m是寄存器组       
  0——3     4组   
  不使用编译器将当前工作寄存器都入堆栈    
  注意#include     文件
使用中断函数时要注意的问题:
1.    在设计中断时,要注意的是哪些功能应该放在中断程序中,哪些功能应该放在主程序中。一般来说中断服务程序应该做最少量的工作,这样做有很多好处。首先系统对中断的反应面更宽了,有些系统如果丢失中断或对中断反应太慢将产生十分严重的后果,这时有充足的时间等待中断是十分重要的。其次它可使中断服务程序的结构简单,不容易出错。
中断程序中放入的东西越多,他们之间越容易起冲突。简化中断服务程序意味着软件中将有更多的代码段,但可把这些都放入主程序中。中断服务程序的设计对系统的成败有至关重要的作用,要仔细考虑各中断之间的关系和每个中断执行的时间,特别要注意那些对同一个数据进行操作的ISR.
2.    中断函数不能传递参数。
3.    中断函数没有返回值。
4.    中断函数调用其他函数,则要保证使用相同的寄存器组,否则出错。
5.    中断函数使用浮点运算要保存浮点寄存器的状态。

关键字:C51  中断函数  格式 引用地址:C51的中断函数的格式

上一篇:串联锂离子电池组监测系统的设计
下一篇:C51编译器-高级编程技巧(6)-绝对存储器访问

推荐阅读最新更新时间:2024-03-16 15:20

lcd液晶12232F的串口C51程序(ST7920)
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教! /******************************************************/ /* */ /* 12232F串口驱动程序C51,11.0592M晶振 */ /*使用这款LCD应该要注意的问题: */ /*一定要在VO与VDD及VSS这三个脚间接一个20K的电位器, */ /*电位器的中间脚接VO,其它二脚接VDD和VSS。 */ /*然后调节电位器的大小,直到有显示为止。若是不接的话,
[单片机]
单片机双机通信c51程序
工程名称:双机通信 说明:此程序可以实现两个 单片机 之间的相互通信;串口采用方式1 工作,10位异步接受和发送,波特率可变,由定时器1控制;且含有校验 程序说明:SCON:串口通信控制寄存器 SBUF:串行口的收发缓冲寄存器 PCON:电源管理寄存器。当SMOD=1时串行口的波特率加倍。 IE:中断允许寄存器。ES=1表示允许串行口中断 TI:发送中断标志位,TI由硬件置位,置位表示一帧信息发送结束,TI在发送数据前必须由软件清0 RI:接收中断标志位,RI由硬件置位,置位表示一帧信息接收结束,RI在接收数据前必须由软件清0 *********************************************
[单片机]
TLC2543驱动程序(c51)
/************************************** TLC2543驱动程序 *************************************/ #include reg51.h #include intrins.h /************************************** 2543控制引脚宏定义 *************************************/ #define CLOCK p17 /*2543时钟*/ #define D_IN p16 /*2543输入*/ #define D_OUT p14 /*2543输出*/ #def
[单片机]
C51的指令与时序的一点总结
我们知道C51的指令存储在ROM中,它需要从ROM中取出指令才能知道该干什么事。一条指令,首先应该告诉计算机要做什么性质的操作,是加减,还是跳转判断等;其次,还需要给出拿去运算的数据,可以是直接的数据(就是立即能用的数,立即数),也可以是数据存放的地址。那么如何告诉计算机我这个操作码后面跟的是立即数还是地址呢?简单,做个记号,用#来表示立即数,没记号的都是地址。取出指令时,要放在指令寄存器IR里,送到指令译码器ID里进行译码,随后生成相应的控制命令C,这一点是自然而然的,因为计算机本身是要通过硬件执行的,一个指令代码要译码过后才能被解读。不然直接给CPU一个10001000它根本不知道该干什么,通过译码,可能也是生成一些10001
[单片机]
AT24C01-AT24C256通用源程序(C51
据说是AT24C01-AT24C256通用源程序,但按照我的经验,这个源程序仅适合AT24C04-AT24C256。 /*Sample: /*main(){ ... /* ReadMem(l,x,y); /*读。l为本次访问的器件号,在宏定义时分配不同芯片的不同 器件号, x为本次欲读出的字节数;y为本次读数的起始地址*/ /* ... /* WriteMem(l,x,y); /*写。l为本次访问的器件号,在宏定义时分配不同芯片不同 的器件号, x为本次欲写入的字节数;y为本次写数的起始地址, 注:当心页写入的地址规律,即页地址在同一页内滚动;否则会出现页
[单片机]
c51写的测转速源程序
以前写的c51单片机测转速源程序,比较久了,当时电路板有数码显示,代码不是最优化的,不过朋友可以看看其中的测速代码,当时费了点心思写的,24c02的读写代码,贴出来给朋友看看,写的很差劲,高手就不要见笑了。 #include reg51.h #include intrins.h #include math.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit key0=P3^0;//按键0 sbit key1=P3^1;//按键1 sbit key2=P3^3;//按键2 sbit key3=P3^4;
[单片机]
采用C51与插拔式FLASH闪存设计无纸记录仪
ATMEL公司推出的带有看门狗功能的单片机AT89C55WD带有20K的程序存储器,是8051系列中一款较为先进的产品,其看门狗功能可以大大提高产品的稳定性,大容量的内部程序存储器可以容纳功能丰富的软件。   以往的许多无纸记录仪均采用3.5英寸软盘作为数据存贮介质,但软盘存贮的可靠性差、存储容量有限、成本较高等诸多缺点实在难以克服。   作为一种高科技的非易失性存储设备,FLASH闪存首先在数码相机、PDA、移动电话等数字产品当中得到了应用,随着工艺的进步和价格的下降,逐步向其他应用领域扩展,其容量大、功耗低、速度快、不易受损等优点正受到人们越来越多的青睐,而且最大的好处是,随着技术水平的进步,FLASH闪存的容量也在不断
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved