描述

中断用于执行优先级更高的任务

中断顾名思义是“中途打断”的意思。举一个简单的例子:您正在和部门的同事在开会,突然老板进来找你,你就得暂停会议,离开会议室,跟老板谈完重要的事情,再重新回来会议室继续会议。单片机的中断就是类似的一个过程,发生中断时,就会打断正在执行的主程序,先处理完中断任务,返回主程序继续运行,当然在执行中断函数之前,单片机需要把关键的数据保存下来,中断函数执行完成后才可以正确的恢复主函数运行。

单片机的主程序是怎么运行的?

其实单片机的主程序其实是一个主函数,我们一般命名为Main,主函数会从上住下运行的,执行到最后又返回上面继续运行。我们用C语言编写Main主函数时,会用到while(1)让主程序不断的循环。

由此可见,主程序里的各种功能是按着顺序来执行的,谁也不能插队。那怎么样来实现中途打断插队呢?这就需要用到中断了。

单片机的中断程序是怎么执行的?

单片机有着各种和样的中断功能,比如定时器中断、外部中断、串口中断等等。比如我们要实时检测一个按键的按下事件,如果在主程序中进行扫描,就会有一定的延时,需要等主程序运行到按键扫描的程序时才可以检测到按键的状态。

中断是单片机一个重要的功能,单片机会给所有中断功能分配一个中断向量(有些中断功能会共用一个中断向量)。当开启了相应的中断功能并且发生中断时,就会自动跳转到对应的中断向量运行。在中断向量处,我们就可以调用我们编写好的中断函数,处理相关的事件就可以了。如果开启了中断嵌套,在中断函数执行过程发生优先级更高的中断,还可以暂停正在运行的中断函数,去执行更高级别的中断程序。

中断函数为什么不在主函数中运行?

主函数是一个函数,中断函数也是一个函数,它们是独立的函数,所以是分开的。上面已经说得很清楚了,中断是打断正在运行的函数去执行优先级更高的函数,所以中断就是打断主函数去执行更高优先级别的中断函数的一个过程。

在发生中断时,单片机会自动跳转到对应的中断向量,在中断向量处,我们需要调用中断函数来处理中断事件,如果中断事件的处理程序放在主函数中,那么这些处理中断事件的程序就不是一个独立的函数了,就没法调用了。

打开APP精彩内容

点击阅读全文

单片机c语言中主程序怎么写,单片机的主程序和中断程序是怎么样运行的相关推荐

  1. 单片机C语言中的位运算符,单片机c语言教程第八课 运算符和表达式(位运算符)...

    学过汇编的朋友都知道汇编对位的处理能力是很强的,但是单片机C语言也能对运算对象进行按位操作,从而使单片机C语言也能具有一定的对硬件直接进行操作的能力.位运算符的作用是按位对变量进行运算,但是并不改变参 ...

  2. 单片机c语言中的循环语句,单片机c语言教程:C51循环语句

    循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 1000 次空语句 才能达到延时的目的( ...

  3. STC单片机C语言中的数据类型,stc单片机c语言程序设计 第9章 stc单片机c语言数据类型.pdf...

    STC单片 机C语言变量和数据类型 主讲:何宾 Email :hebin@mail.buct.edu.cn 2016.03 C语言中的常量和变量 对于基本数据类型,按其值是否可变又分为常量和变量两种. ...

  4. 单片机c语言左移的作用,[转载]单片机c语言中的左移右移

    单片机c语言中的左移右移 左移 变量1 << 变量2 将变量1的二进制位值向左移动由变量2所指定的位数. 例如: a = 0x8f; // 10001111 a << 2; / ...

  5. 单片机C语言数据存储原理,学习单片机C语言,必知的数据存储与程序编写知识!...

    一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...

  6. c语言中的自己写的.h文件如何调用注意事项

    c语言中的自己写的.h文件如何调用注意事项 需要建立一个项目project,并把相关的.h .c .cpp文件建在这个项目下面. 需要注意引用时不同,例如 #include<stdio.h> ...

  7. 关于linuxC语言中创建进程,利用execlp函数执行.c程序问题

    关于linuxC语言中创建进程,利用execlp函数执行.c程序问题 对于一个小白来说,这个系统调用真的太难了,完全摸不着头脑啊,一搜execlp函数,全是执行的命令,什么传参硬是没懂. 不过说到底, ...

  8. 实现一个输入程序,接收从 键盘读入的字符串。当字符串中所含字符个数少于程序设定的上限时,输出这个字符串;否则抛出MyStringException1异常,在异常处理中要求重新输入新的字符串或者中断程序

    实现一个输入程序,接收从 键盘读入的字符串.当字符串中所含字符个数少于程序设定的上限时,输出这个字符串:否则抛出MyStringException1异常,在异常处理中要求重新输入新的字符串或者中断程序 ...

  9. 单片机C语言数据存储原理,介绍单片机中C语言的数据存储与程序编写

    一.五大内存分区: 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区 ...

  10. 单片机c语言中延时函数的作用,单片机中C语言延时函数

    单片机C语言延时程序计算2009-11-02 22:15单片机C语言延时程序用C语言写出来程序非常的简练,它是一种模块化的语言,一种比汇编更高级的语言,但是就是这样一种语言也还是有它不足之处:它的延时 ...

最新文章

  1. python代码画简单图-Python figure参数及subplot子图绘制代码
  2. C语言函数指针 和 OC-Block
  3. van 自定义组件_vant 自定义 van-dropdown-item的用法
  4. 软件工程实践2017第二次作业
  5. WKWebView进度及title
  6. 【机器视觉】Qt联合Halcon编程之显示多图片
  7. NOIP练习赛题目5
  8. Mac安装brew及报错处理办法
  9. GCD应用及其他方法
  10. python import os.path_Python常用模块os.path——文件及路径操作
  11. ManicTime 十分有意思的个人时间分析与跟踪工具,把您丢失的时间找回来吧!
  12. DataFrame和RDD互操作的两种方式:
  13. VC++调试错误的解决方案
  14. MATLAB 拟合曲线
  15. Spring Cloud Zuul过滤器详解
  16. 软考网络工程师好考吗?怎么备考?
  17. 安卓图片三级缓存策略与实现
  18. Python实战:利用Uplift模型识别营销敏感用户提升转化率(一)
  19. MATLAB 2018b 新建GUI
  20. 【论文阅读】Interpolation Consistency Training for Semi-Supervised Learning

热门文章

  1. excel表格快捷键
  2. 三维重建| iPad Pro2020 专业3D扫描应用程序 3D Scanner App(App Store可免费下载)
  3. 10大主流性能测试工具,总有一款适合你
  4. PTCMS可听书可下载的小说站源码+带采集和教程
  5. python删除数据集中的空值_关于在python中如何使用pandas库读取excel表格后 删除含有空值的列...
  6. 新创建了用户没有计算机图标,w10我的电脑图标没了怎么办
  7. chrome 恐龙 html源码,Chrome 恐龙快跑
  8. 人民日报申论范文:题目考“时间”你怎么写
  9. auto_ptr http://www.cnblogs.com/jtf-china/archive/2011/06/09/2076792.html
  10. python 相关系数矩阵_用numpy计算Pearson相关系数