zoukankan      html  css  js  c++  java
  • 单片机中断函数的编写

    interrupt m修饰符

    C51中断函数必须通过该修饰符进行修饰。在C51程序设计中,当函数定义时用了interrupt m修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。

    在该修饰符中,m的取值为0~31,对应的中断情况如下:

    0——外部中断0

    1——定时/计数器T0

    2——外部中断1

    3——定时/计数器T1

    4——串行口中断

    5——定时/计数器T2

    其它值预留。

    C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。

    【例】编写一个用于统计外中断0的中断次数的中断服务程序

     

    1 int  x=0;
    2 void  int0()  interrupt 0  using 1
    3 {
    4   x++;
    5 }

     

    using n修饰符

    修饰符using n用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。该修饰符可以省略,省略后系统自动选择

    中断函数注意如下:

    (1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。

    (2)中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果,建议在定义中断函数时将其定义为void类型,以明确说明没有返回值。

  • 相关阅读:
    Python3学习之路~0 目录
    HIVE简单操作
    HIVE的安装
    mysql在linux上的安装
    BZOJ 1085(IDA*)
    Codeforces 916E(思维+dfs序+线段树+LCA)
    Codeforces 396C (DFS序+线段树)
    Codeforces 609E (Kruskal求最小生成树+树上倍增求LCA)
    Codeforces 191C (LCA+树上差分算法)
    POJ 1905 题解(二分+几何)
  • 原文地址:https://www.cnblogs.com/Camilo/p/3468981.html
Copyright © 2011-2022 走看看