当前位置: 首页 > news >正文

中学网上做试卷的网站云南省建设系统网站

中学网上做试卷的网站,云南省建设系统网站,平面设计公司名字大全,手机编程中断介绍 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的#xff0c;中断功能的存在#xff0c;很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一#xff0c;是我们学些单片机必须要掌握的。 为了更容易的理解中断概念中断功能的存在很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一是我们学些单片机必须要掌握的。 为了更容易的理解中断概念我们先来举一个生活中的例子你打开火烧上一壶水然后去洗衣服在洗衣服的过程中突然听到水壶发水开的报警声这时你停止洗衣服动作立即去关掉火然后将开水灌入暖水瓶中灌完开水后你又回去继续洗衣服。这个过程实际就发生了一次中断。如下图 对于单片机来讲中断是指 CPU 在处理某一事件A时发生了另一件事情B 请求CPU迅速去处理中断发生CPU暂时停止当前的工作中断响应转去处理事件B中断服务待CPU将事件B处理完毕后再回到原来事件 A 被中断的地方继续处理事件 A中断返回这一过程称为中断。 在来看生活事例与单片机中断结合分析主要任务事洗衣服水开报警这时一个中断请求这一时刻相当于断点处你响应中断去关火然后将开水灌入暖水瓶中这一行动实际上就是处理中断程序灌完开水后再回去继续洗衣服相当于处理完中断程序后再返回主程序继续执行主程序。这里需要注意的是水开是随时都有可能的但是无论什么时候开只要一开你将立即去处理它处理完后再回来继续接着洗衣服。单片机再执行程序时中断也是随时可能发生但无论何时发生只要一旦发生单片机将立即暂停当前程序赶去处理中断程序处理完中断程序后再返回刚才暂停处接着执行原来的程序。 单片机再执行程序时其程序流程图如下 引起 CPU 中断的根源称为中断源。中断源向 CPU 提出中断请求CPU 暂时 中断原来的事务 A转去处理事件 B对事件 B 处理完毕后再回到原来被中断 的地方(即断点)称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。 当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求要求 CPU 暂停当前的工作转而去处理这个紧急事件处理完以后再回到原来被中 断的地方继续原来的工作这样的过程称为中断。实现这种功能的部件称为中 断系统请示 CPU 中断的请求源称为中断源。微型机的中断系统一般允许多个 中断源当几个中断源同时向 CPU 请求中断要求为它服务的时候这就存在 CPU 优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队优先 处理最紧急事件的中断请求源即规定每一个中断源有一个优先级别。CPU 总是 先响应优先级别最高的中断请求。 当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序)发生 了另外一个优先级比它还高的中断源请求。如果 CPU 能够暂停对原来中断源的 服务程序转而去处理优先级更高的中断请求源处理完以后再回到原低级中 断服务程序这样的过程称为中断嵌套。这样的中断系统称为多级中断系统没 有中断嵌套功能的中断系统称为单级中断系统。 中断的开启与关闭、设置启用哪一个中断等都是由单片机内部的一些特殊功 能寄存器来决定的在前面章节的学习中我们仅对单片机 IO 口操作过实际上 操作 IO 口即操作 IO 口寄存器只不过编译器已经帮我们把 IO 口寄存器封装好 直接操作 IO 即可这些可在 51 单片机头文件内查看从本章开始就会介绍单片机内部更多的特殊功能寄存器以及如何配置它实现相应的功能。 随着计算机技术的应用人们发现中断技术不仅解决了快速主机与慢速 I/O 设备的数据传送问题而且还具有如下优点 ①分时操作。CPU 可以分时为多个 I/O 设备服务提高了计算机的利用率 ②实时响应。CPU 能够及时处理应用系统的随机事件系统的实时性大大增 强 ③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力从而使系统可靠性提高 中断结构 STC89C5X 系列单片机提供了 8 个中断请求源它们分别是外部中断 O(INTO)、外部中断 1(INT1)、外部中断 2(INT2)、外部中断 3(INT3)、定时器 0 中断、定时器 1 中断、定时器 2 中断、串口(UART)中断。注意51 系列单片 机一定有基本的 5 个中断但不全有 8 个中断需要查看芯片手册通常我 们使用的都是基本的 5 个中断INT0、INT1、定时器 0/1串口中断。所有的 中断都具有四个中断优先级基本型只有两个。用户可以用关总中断允许位 (EA/IE.7)或相应中断的允许位来屏蔽所有的中断请求也可以用打开相应的中 断允许位来使 CPU 响应相应的中断申请。其中有些中断源可以用软件独立地控 制为开中断或关中断状态。每一个中断的优先级别均可用软件设置。高优先级的 中断请求可以打断低优先级的中断反之低优先级的中断请求不可以打断高优 先级及同优先级的中断。当两个相同优先级的中断同时产生时将由查询次序来 决定系统先响应哪个中断。 STC89C5X 系列单片机的各个中断查询次序表如下图 所示 通过设置新增加的特殊功能寄存器 IPH 中的相应位可将中断优先级设为 四级如果只设置 IP 或 XICON那么中断优先级就只有两级与传统 8051 单 片机两级中断优先级完全兼容。上图中的中断查询次序即为中断号这个中断号 在编程时非常重要当中断来临时只有中断号正确才能进入中断。 下面我们以 51 单片机均有的 5 个中断来介绍其内部结构框图如下所示 ①INT0 对应的是 P3.2 口的附加功能可由 IT0(TCON.0)选择其为低电平有 效还是下降沿有效。当 CPU 检测到 P3.2 引脚上出现有效的中断信号时中断标 志 IE0(TCON.1)置 1向 CPU 申请中断。         ②INT1 对应的是 P3.3 口的附加功能可由 IT1(TCON.2)选择其为低电平有 效还是下降沿有效。当 CPU 检测到 P3.3 引脚上出现有效的中断信号时中断标 志 IE1(TCON.3)置 1,向 CPU 申请中断。         ③T0 对应的是 P3.4 口的附加功能TF0TCON.5,片内定时/计数器 T0 溢 出中断请求标志。当定时/计数器 T0 发生溢出时置位 TF0并向 CPU 申请中断。         ④T1 对应的是 P3.5 口的附加功能TF1TCON.7片内定时/计数器 T1 溢出中断请求标志。当定时/计数器 T1 发生溢出时置位 TF1并向 CPU 申请中 断。         ⑤RXD 和 TXD 对应的是 P3.0 和 P3.1 口的附加功能RISCON.0或 TSCON.1串行口中断请求标志。当串行口接收完一帧串行数据时置位 RI 或 当串行口发送完一帧串行数据时置位 TI向 CPU 申请中断。 中断相关寄存器 1中断允许控制 CPU 对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器 IE 控制的。 EX0(IE.0)外部中断 0 允许位 ET0(IE.1)定时/计数器 T0 中断允许位 EX1(IE.2)外部中断 0 允许位 ET1(IE.3)定时/计数器 T1 中断允许位 ESIE.4)串行口中断允许位 EA (IE.7) CPU 中断允许总允许位。 2中断请求标志 TCON IT0TCON.0外部中断 0 触发方式控制位。         当 IT00 时为电平触发方式。         当 IT01 时为边沿触发方式下降沿有效。 IE0TCON.1外部中断 0 中断请求标志位。 IT1TCON.2外部中断 1 触发方式控制位。 IE1TCON.3外部中断 1 中断请求标志位。 TF0TCON.5定时/计数器 T0 溢出中断请求标志位。 TF1TCON.7定时/计数器 T1 溢出中断请求标志位。 3中断优先级 同一优先级中的中断申请不止一个时则有中断优先权排队问题。同一优先 级的中断优先权排队由中断系统硬件确定的自然优先级形成其排列如所示 4中断号 外部中断配置  我们知道要让 51 单片机发生中断必须要满足以下 3 个条件这 3 个条件的 顺序可以任意①中断源有中断请求 ②此中断源的中断允许位为 1 ③CPU 开中断即 EA1。 以上三条同时满足时CPU 才有可能响应中断。在使用中断时我们需要做什么呢 ①你想使用的中断是哪个选择相应的中断号 ②你所希望的触发条件是什么 ③你希望在中断之后干什么 比如我们配置外部中断 0对应的配置程序如下 EA1//打开总中断开关 EX01//开外部中断 0 IT00/1//设置外部中断的触发方式 如果要配置的是外部中断 1只需将 EX0 改为 EX1IT0 改为 IT1。 因为独立按键一端是共地的当按下后对应单片机 IO 口被拉低而默认单 片机 IO 口是高电平这样就有一个下降沿过程所以通常使用外部中断都是配 置为下降沿触发即 IT01在编写程序时通常我们会将外部中断的配置放到一个自定义函数内便于管 理维护。如下所示void exti0_init(void) {         IT01;//跳变沿触发方式下降沿如果是0是低电平触发         EX01;//打开 INT0 的中断允许         EA1;//打开总中断 } 当触发中断后即会进入中断服务函数外部中断 0 中断服务函数如下void int0() interrupt 0 //外部中断 0 中断函数 { //编写用户所需的功能代码 } 在中断函数中 exti0 是函数名可自定义但必须符合 C 语言标识符定义规 则interrupt 是一个关键字表示 51 单片机中断。后面的“0”是中断号外 部中断 0 中断号为 0如果是外部中断 1则中断号为 2这个可参考中断章节 的内容。编写所需的代码不能太长越短越好硬件设计本实验使用到硬件资源如下 1独立按键模块K3 2LED 模块D1         LED 模块和独立按键模块电路在前面章节已介绍过这里就不多说。原理图 中 K3 键是连接在单片机 P3.2 口外部中断 0K4 按键是连接在 P3.3 口外部中断 1。   软件设计         实现的功能是使用独立按键 K3 控制 LED 亮灭。 /********************************************************************************** **** 实验名称外部中断 0 实验 接线说明 实验现象下载程序后当按下 K3 键可控制 D1 指示灯亮灭 注意事项将红外接收传感器取下防止对 P3.2 口干扰 *********************************************************************************** ****/ #include reg52.h typedef unsigned int u16;//对系统默认数据类型进行重定义 typedef unsigned char u8; //定义 LED1 管脚 sbit LED1P2^0; //定义独立按键 K3 控制脚 sbit KEY3P3^2; /******************************************************************************* * 函 数 名 : delay_10us * 函数功能 : 延时函数ten_us1 时大约延时 10us * 输 入 : ten_us * 输 出 : 无 *******************************************************************************/ void delay_10us(u16 ten_us) {while(ten_us--); } /******************************************************************************* * 函 数 名 : exti0_init * 函数功能 : 外部中断 0 配置函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void exti0_init(void) {IT01;//跳变沿触发方式下降沿跳变沿触发方式下降沿如果是0是低电平触发EX01;//打开 INT0 的中断允许EA1;//打开总中断 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ /******************************************************************************* 再main()函数并没有对LED灯的操作按下按键KEY3为什么会控制灯亮灭呢 这是因为我们满足了 exi0_init()的出发条件 就会进入中断服务函数exti0()中断函数执行完成就又回到刚才中断的位置现在while是个死循环不断的循环如果我们按键按下就又跳到中断服务函数exti0()中断函数执行完成就又回到刚才中断的位置while()循环里面当没有按键按下的时候就一直再while里面循环只要又按键按下就跳到中断服务函数exti0() *******************************************************************************/ void main() {exti0_init();//外部中断 0 配置while(1){} } //外部中断 0 中断函数interrupt 是一个关键字不能写错写错是进不去中断的 //0后面的0是中断号也不能写错不同数字代表不同的中断 void exti0() interrupt 0 {delay_10us(1000);//消斗if(KEY30)//再次判断 K3 键是否按下LED1!LED1;//LED1 状态翻转 } 程序代码比较简单首先定义 K3 键与 LED1 的控制管脚然后定义了外部中 断 0 配置函数 exti0_init该函数内容是按照前面介绍的配置方法实现即开 启总中断、外部中断 0 功能设置外部中断 0 为下降沿触发。然后进入 while 循环在循环体内没有执行任何功能程序。 有人就会问在主函数中怎么没有看到按键对 LED 的控制呢因为我们在 exti0_init()函数内就已经把按键管脚配置为外部中断 0 下降沿触发当有按键 按下即会进入对应中断服务函数执行相应的功能程序LED 的控制就在中断函 数内完成的。 实现的功能是使用独立按键 K4 控制 LED 亮灭。 /********************************************************************************** **** 实验名称外部中断 1 实验 接线说明 实验现象下载程序后当按下 K4 键可控制 D2 指示灯亮灭 注意事项将红外接收传感器取下防止对 P3.3 口干扰 *********************************************************************************** ****/ #include reg52.h typedef unsigned int u16;//对系统默认数据类型进行重定义 typedef unsigned char u8; //定义 LED1 管脚 sbit LED2P2^1; //定义独立按键 K3 控制脚 sbit KEY4P3^3; /******************************************************************************* * 函 数 名 : delay_10us * 函数功能 : 延时函数ten_us1 时大约延时 10us * 输 入 : ten_us * 输 出 : 无 *******************************************************************************/ void delay_10us(u16 ten_us) {while(ten_us--); } /******************************************************************************* * 函 数 名 : exti0_init * 函数功能 : 外部中断 1 配置函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void exti0_init(void) {IT11;//跳变沿触发方式下降沿跳变沿触发方式下降沿如果是0是低电平触发EX11;//打开 INT0 的中断允许EA1;//打开总中断 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ /******************************************************************************* 再main()函数并没有对LED灯的操作按下按键KEY3为什么会控制灯亮灭呢 这是因为我们满足了 exi0_init()的出发条件 就会进入中断服务函数exti0()中断函数执行完成就又回到刚才中断的位置现在while是个死循环不断的循环如果我们按键按下就又跳到中断服务函数exti0()中断函数执行完成就又回到刚才中断的位置while()循环里面当没有按键按下的时候就一直再while里面循环只要又按键按下就跳到中断服务函数exti0() *******************************************************************************/ void main() {exti0_init();//外部中断 0 配置while(1){} } //外部中断 0 中断函数interrupt 是一个关键字不能写错写错是进不去中断的 //2后面的0是中断号也不能写错不同数字代表不同的中断 void exti0() interrupt 2 {delay_10us(1000);//消斗if(KEY40)//再次判断 K4 键是否按下LED2!LED2;//LED2 状态翻转 } 实验现象         使用 USB 线将开发板和电脑连接成功后电脑能识别开发板上 CH340 串口 把编译后产生的.hex 文件烧入到芯片内实现现象如下当按下 K3 键D1 指 示灯亮再次按下 K3 键D1 指示灯灭如此循环。 如果下载的是外部中断 1 实验程序实验现象如下当按下 K4 键D1 指示 灯亮再次按下 K4 键D1 指示灯灭如此循环
http://www.w-s-a.com/news/925374/

相关文章:

  • 如何k掉别人的网站搜索引擎优化与关键词的关系
  • 百度推广 网站吸引力做网站开发的薪酬怎么样
  • js网站开发工具软件营销方案
  • 做网站的天空网云南省建设厅网站怎么进不去
  • 天津网站排名提升网络营销推广策略包括哪些
  • 网站建设与管理 ppt网站打开是别人的
  • 图片网站怎么做排名怎么分析一个网站seo
  • 伪原创对网站的影响深圳装修公司排名100强
  • 网站建设公司效果个人可以做医疗信息网站吗
  • 网站使用arial字体下载微网站 建设
  • 文化馆网站建设意义营销型国外网站
  • 公司网站定位建议wordpress怎么用模板
  • 中国十大热门网站排名计算机选什么专业最好
  • 怀化建设企业网站太原网站关键词排名
  • 空间注册网站网站制作是怎么做的
  • 数码家电商城网站源码一个网站的成本
  • 网站伪静态是什么意思麻涌东莞网站建设
  • 理县网站建设公司郑州仿站定制模板建站
  • 手机网站建设网站报价诸城人才网招聘网
  • 一起做网站怎么下单临沂网站制作
  • 公司网站案例企业网站 模版
  • 做的好的响应式网站有哪些网站界面设计案例
  • 上海创意型网站建设icp备案网站信息
  • 网站没收录中山手机网站制作哪家好
  • 代驾软件开发流程wordpress 博客主题 seo
  • 成都的教育品牌网站建设网站广告js代码添加
  • 网站找人做seo然后网站搜不到了网站建设seoppt
  • 做网站优化有用吗学做文案的网站
  • wordpress 知名网站怎么做微网站
  • 用电脑怎么做原创视频网站河南建设工程信息网一体化平台官网