51的中断程序用C怎么写

发布者:快乐时刻最新更新时间:2018-12-19 来源: eefocus关键字:中断程序 手机看文章 扫描二维码
随时随地手机看文章

用c语言的话中断程序是单独写在中断服务函数中的,51单片机的中断服务函数的定义:

void functionname(void) interrupt num  //functionname是自己定义的函数名字,num对应实际的中断向量号

 

进入中断要执行中断子程序,不同的中断源要进入不同的中断子程序。对于51的C编程,可以用中断标号,如‘interrupt 0 ’来使中断进入不同的中断。


中断标号与它们的中断优先级一致,即


外部中断0 interrupt 0


定时器中断0 interrupt 1


外部中断1 interrupt 2


定时器中断1 interrupt 3


串行中断 interrupt 4


 

//----------------------------------------------------------------------------- // Interrupt Priorities //-----------------------------------------------------------------------------


#define INTERRUPT_INT0             0   // External Interrupt 0 #define INTERRUPT_TIMER0           1   // Timer0 Overflow #define INTERRUPT_INT1             2   // External Interrupt 1 #define INTERRUPT_TIMER1           3   // Timer1 Overflow #define INTERRUPT_UART0            4   // Serial Port 0 #define INTERRUPT_TIMER2           5   // Timer2 Overflow #define INTERRUPT_SPI0             6   // Serial Peripheral Interface 0 #define INTERRUPT_SMBUS0           7   // SMBus0 Interface #define INTERRUPT_USB0             8   // USB Interface #define INTERRUPT_ADC0_WINDOW      9   // ADC0 Window Comparison #define INTERRUPT_ADC0_EOC         10  // ADC0 End Of Conversion #define INTERRUPT_PCA0             11  // PCA0 Peripheral #define INTERRUPT_COMPARATOR0      12  // Comparator0 #define INTERRUPT_COMPARATOR1      13  // Comparator1 #define INTERRUPT_TIMER3           14  // Timer3 Overflow #define INTERRUPT_VBUS_LEVEL       15  // VBUS level-triggered interrupt #define INTERRUPT_UART1            16  // Serial Port 1


 

实例:

问题:

外部中断0 外部中断1对应的是一个中断程序吗?

如果是对应一个中断程序,那2个外部中断 能对应2种动作吗?(正用中断做了电子表按键选择,按键加是用的查询法,想把这个键也用中断 跳变触发。)

如果不是,请举一下例子好吗,只说一下中断程序的程序名也好。

 

回答:

void in0 (void) interrupt 0

{

...

}

 

void in1 (void) interrupt 2

{

...

}

 


关键字:中断程序 引用地址:51的中断程序用C怎么写

上一篇:【单片机笔记】51内核的中断及中断向量
下一篇:如何利用keil C实现单片机中断功能

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

ARM裸机程序研究 - S3C2440时钟初始化
2440内部的时钟主要有3个, FCLK, HCLK, PCLK。 FCLK 提供给ARM920T内核使用, HCLK主要提供给高速外设使用,如显示接口,内存控制器, PCLK提供给低速外设使用,如串口,SPI, GPIO 等。另外还有一个UCLK, 只提供给USB Host 和USB Device使用。 2440的时钟来源有两种,外部时钟和通过外接晶振提供时钟。时钟源的选择通过引脚OM2和OM3来决定。因此,在芯片上电的时刻,就已经确定了时钟源。典型的时钟源配置是外界一个12M的无源晶振。 时钟源确定后,下面就是进一步确定各个时钟得频率。2440内部有一个PLL来合成频率,该PLL称为MPLL。它利用前面选择的时钟源,合
[单片机]
2021年一季度 realme增长最快销售额涨451%
根据 Counterpoint Research 的数据,2021 年第一季度,中国智能手机市场增长了 5%。 值得一提的是,出货只排在第 7 位的 realme 是 2021 年第一季度增长最快的品牌。该公司的销售额同比增长了 451%,季度增长了 82%。 Counterpoint 的高级分析师 Yang Wang 表示,realme 的成功在于其有效的营销战略。该品牌的产品面向对预算敏感的 Z 世代客户,他们更喜欢社交媒体、摄影和游戏的高级功能。对客户的更好理解帮助 realme 成为去年出货量达到 5000 万台的最快品牌。 根据 Counterpoint 的数据,realme 在过去 12 个月在中国市场最畅
[手机便携]
51单片机蜂鸣器演奏《我和我的祖国》
由于同学的需要,于是用51单片机的蜂鸣器功能谱了一首《我和我的祖国》,下面是全部的代码: #include reg52.h sbit beep = P1^5; unsigned char timer0H, timer0L, time; //单片机晶振采用11.0592MHz // 频率-半周期数据表 高八位 本软件共保存了四个八度的28个频率数据 code unsigned char FREQH = { 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//
[单片机]
<font color='red'>51</font>单片机蜂鸣器演奏《我和我的祖国》
基于AT89C51的数据采集系统设计新方法
0 引言 近年来,随着制造技术的发展,单片机的价格越来越低,性能却不断提升,因而其应用范围也越来越广。然而在开发基于单片机的应用系统时,传统方法一般都需要大量的硬件设备,这些设备极易损坏而且携带不方便。为此,本文基于AT89C51数据采集系统详细说明了如何利用Pro-teus和两款串口仿真软件来进行单片机程序及外围电路的仿真设计。采用该方法可以大大简化硬件电路测试和系统调试过程,对单片机系统开发具有指导意义。本文介绍的基于AT89C5l单片机的数据采集系统能实现16路信号输入,每一路都是0~10 mV的信号,每秒钟采集一遍,从而将数据传给上位PC计算机。 1 硬件设计 1.1 主控芯片 AT89C51是一种带有4 KB闪烁
[单片机]
单片机 C 语言模块化编程
  好的开始是成功的一半   通过上一章的学习,我想你已经掌握了如何在程序中释放CPU了。希望能够继续坚持下去。一个良好的开始是成功的一半。我们今天所做的一切都是为了在单片机编程上做的更好。 在谈论今天的主题之前,先说下我以前的一些经历。在刚开始接触到C语言程序的时候,由于学习内容所限,写的程序都不是很大,一般也就几百行而矣。所以所有的程序都完成在一个源文件里面。记得那时候大一参加学校里的一个电子设计大赛,调试了一个多星期,所有程序加起来大概将近1000行,长长的一个文件,从上浏览下来都要好半天。出了错误简单的语法错误还好定位,其它一些错误,往往找半天才找的到。那个时候开始知道了模块化编程这个东西,也尝试着开始把程序分模块编写。最
[单片机]
单片机 <font color='red'>C</font> 语言模块化编程
C程序访问ARM汇编程序中的函数
C程序调用ARM汇编子程序,要做的主要工作有两个:一是在C程序中用关键字EXTERN声明ARM汇编子程序的函数原型(C程序是函数结构的程序设计风格),声明该函数的实现代码在其他文件中;二是在ARM汇编子程序中用伪指令EXPORT导出子程序名,并且用该子程序名最为ARM汇编代码段的标识,最后用 MOV PC,LR 指令返回。这样,在C程序中就可以像调用C函数一样调用该ARM汇编子程序了。 无论是C语言中的函数名还是ARM汇编语言中的标号,其作用一样,都只是起到表明该函数名或标号存储单元起始地址的作用。 具体操作步骤如下: (1)ARM汇编程序中,用该子程序名作为ARM汇编代码段的标识,定义程序代码,最后用
[单片机]
<font color='red'>C</font><font color='red'>程序</font>访问ARM汇编<font color='red'>程序</font>中的函数
51单片机控制LED显示汉字
用51单片机控制led显示汉字,电路中行方向由p0口和p2口完成扫描,由于p0口没有上拉电阻,因此接一个4.7k*8的排阻上拉。 如没有排阻,也可用8个普通的4.7k 1/8w电阻。为提供负载能力,接16个2n5551的NPN三极管驱动。 列方向则由4—16译码器74LS154完成扫描,它由89C51的P1.0---P1.3控制。同样,驱动部分则是16个2N5401的三极管完成的。 电路的供电为一片LM7805三端稳压器,耗电电流为100ma左右。 采用一块12*20cm的万能电路板,应当选用质量好些的发光管,(否则有坏点现象, 更换起来较麻烦)首先将256个发光管插入电路板,注意插入方向,同时使高度一致
[单片机]
<font color='red'>51</font>单片机控制LED显示汉字
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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