C51中断函数的写法

发布时间:2024-08-19  

一、中断允许控制

        CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

                       

  • § EX0(IE.0),外部中断0允许位;

  • § ET0(IE.1),定时/计数器T0中断允许位;

  • § EX1(IE.2),外部中断1允许位;

  • § ET1(IE.3),定时/计数器T1中断允许位;

  • § ES(IE.4),串行口中断允许位;

  • § EA (IE.7), CPU中断允许(总允许)位。

 

80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。

一、工作方式寄存器TMOD

       工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:

 

GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了INT0/1引脚为高电平这一条件。:定时/计数模式选择位。C/T =0为定时模式;C/T=1为计数模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。


TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:

 

  • TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。

  • TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。

  • TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。

  • TR0(TCON.4):T0运行控制位,其功能与TR1类同。

 

3.3.5  定时/计数器应用举例 

初始化程序应完成如下工作:

  • 对TMOD赋值,以确定T0和T1的工作方式。

  • 计算初值,并将其写入TH0、TL0或TH1、TL1。

  • 中断方式时,则对IE赋值,开放中断。

  • 使TR0或TR1置位,启动定时/计数器定时或计数。

 

定时器T0中断的初始化

 

TMOD=0x01;            设定工作方式为16位定时器

  TH0=(65536-50000)/256;   赋定时器T0高四的值为50MS(对256求模)

  TL0=(65536-50000)%256;  赋定时器T0低四的值为50MS(对256求余)

  EA=1;                   开总中断

  ET0=1;                   开定时器T0中断

  TR0=1;                   启动定时器T0


当定时器时间到产生中断就自动跳到以下中断函数,中断函数不需要做任何声明;

 

void timer0( ) interrupt 1      5个中断源的排序:0代表外部中断0中断 ,1代表定时器/计数器0中断 ,2代表外部中断1中断, 3代表定时器/计数器1, 4代表串行中断的中断

 

{

    TH0=(65536-50000)/256;   重装初值

    TL0=(65536-50000)%256;   重装初值

    往下写CPU要处理的事情就OK了

 

}


中断响应条件

  •  中断源有中断请求;

  •  此中断源的中断允许位为1;

  •  CPU开中断(即EA=1)。

以上三条同时满足时,CPU才有可能响应中断。

 

 

P3.2口的外部中断

EA=1;                 //开总中断

    EX0=1;                 //开外部中断0

//IT0=1;                //当IT=0时为电平的外部中断触发方式,

当IT=1时位跳变沿外部中断触发方式

TCON=0x01;               (这是对寄存器将IT置1,和IT0=1的效果是一样的)因为TCON的地址是  可以被8整除,所以可以对其进行位操作。


当符合外部中断的条件时执行下面的中断函数

 

void exter0() interrupt0      5个中断源的排序:0代表外部中断0中断 ,1代表定时器/计数器0中断 ,2代表外部中断1中断, 3代表定时器/计数器1, 4代表串行中断的中断


{

这里下写CPU要处理的事情就OK了

 

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    作用就是实现用一个简单易读的字符串来代替 另一个字符串。增加程序的可读性,和维护性。 宏定义分为不带参数的宏定义,和带参数的宏定义。 不带参的宏定义: 一般格式:#define 标识符 常量表达式 例如......
    80C51MX构架支持新的工作在通用指针上的CPU指令。通用指针等同于Cx51的通用指针 一般指针的格式与far针的格式相同。因此,任何其他类型的存储器类型值都可以用作寻址far存储器空间 以下是一般指针的存储格式......
    为程序人口,程序体中包含若干语句还可以包含若干函数。 C-51函数的一般格式: 类型 函数名(参数表) {   数据说明部分   语句执行部分 } ㈢ C-51的数据类型 基本数据类型: 类型......
    认为最简单而有效的方法是用“ _at_ ”关键字来对指定变量存储器空间绝对地址来指定。一般格式如下: [存储器类型] 数据类型 标识符 _at_ 地址常数 其中: (1).存储器类型: idata、data、xdata等C51能够......
    认为最简单而有效的方法是用“ _at_ ”关键字来对指定变量存储器空间绝对地址来指定。一般格式如下: [存储器类型] 数据类型 标识符 _at_ 地址常数 其中: (1).存储器类型: idata、data、xdata等......
    KEIL CX51 ANSI C编译器(8051编译器)介绍;         KEIL CX51 ANSI C编译器支持所有经典和扩展8051器件型号。编译器扩展提供全面访问所有的CPU资源,并支......
    ,数据结构和宏的集合。外设库的精髓在于初始化结构体和初始化函数的配合使用,把外设的各类工作参数赋予初始化结构体,然后调用初始化函数将这些参数写入外设寄存器,完成外设的初始化。 外设......
    要设置环境变量(Environment Settings): If you run the Cx51 Compiler within µVision IDE, you do not need any......
    ;STRUCT *p3; // STRUCT为我们定义的结构体 但是好像我们一般很少使用函数指针,我们一般使用函数都是直接使用函数调用。 下面我们来了解一下函数指针的概念和使用方法。 1. 概念 函数指针是指向函数的......
    参数和局部变量。可重入函数的返回地址仍然保存在硬件堆栈中。Cx51编译手册不推荐使用模拟堆栈,原因是受8051寻址方式的限制,模拟堆栈访问的效率很低。但是这是在Keil C51中实现可重入函数的......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>