单片机c语言 oxfe,AVR单片机入门及C语言高效设计实践(五)

ATMEAGl6L的中断系统什么是“中断”?顾名思义中断就是中断某一工作过程去处理一些与本工作过程无关或间接相关或临时发生的事件,处理完后,则继续原工作过程。比如:你在看书,电话响了,你在书上做个记号后去接电话,接完后在原记号处继续往下看书。如有多个中断发生,依优先法则,中断还具有嵌套特性。又比如:看书时,电话响了,你在书上做个记号后去接电话,你拿起电话和对方通话,这时门铃响了,你让打电话的对方稍等一下,你去开门,并在门旁与来访者交谈,谈话结束,关好门,回到电话机旁,拿起电话,继续通话,通话完毕,挂上电话,从作记号的地方继续往下看书。由于一个人不可能同时完成多项任务,因此只好采用中断方法,一件一件地做。

类似的情况在单片机中也同样存在,通常单片机中只有一个CPU,但却要应付诸如运行程序、数据输入输出以及特殊情况处理等多项任务,为此也只能采用停下一个工作去处理另一个工作的中断方法。在单片机中,“中断”是一个很重要的概念。中断技术的进步使单片机的发展和应用大大地推进了一步。所以,中断功能的强弱已成为衡量单片机功能完善与否的重要指标。中断系统的引入解决了微处理器和外设之间数据传输速率的问题,提高了微处理器的实时性和处理能力。

当微处理器处于中断开放时,才能接受外部的中断申请。一个完整的中断处理过程包括中断请求、中断响应、中断处理和中断返回。

中断请求是中断源向微处理器发出的信号,要求微处理器暂停原来执行的程序并为之服务。中断请求可以是电平信号或者脉冲信号。中断请求信号一般保持到微处理器作出响应为止。微处理器在检测到中断请求信号之后,将中止当前正在执行的程序,并对断点实行保护,即将断点的地址(PC值)推入堆栈保护,以便在中断结束时从堆栈弹出断点地址,以便继续执行中断前的任务。然后,微处理器由中断地址表获取中断入口地址,并将此地址送入程序计数器(PC),从而开始执行中断服务程序。在中断服务程序里一般需要完成现场保护、开关中断、执行中断服务程序、现场恢复和中断返回等工作。

ATMEAG16L具有20个中断源和1个复位中断,在中断源中处于低地址的中断具有高的优先级。所有中断源都有独立的中断使能位,当相应的使能位和全局中断使能位(SREG寄存器的位I)都置1时,中断才可以发生,相应的中断服务程序才会执行。下表为ATMEAGl6L的中断源。

向量号

程序地

中断源

中断足义

1

0x000

RESET

外部引脚电平引发的复位,上电复位,掉电检测复位,看门狗复位,以及JTAGAVR复位

2

0x002

INT0

外部中断请求0

3

0x004

INT1

外部中断请求1

4

0x006

TIMER2COMP

定时器/计数器2比较匹配

5

0x008

TIMER2OVF

定时器/计数器2溢出

6

0x00A

TIMERlCAPT

定时器/计数器1事件捕捉

7

0x00C

TIMERlCOMPA

定时器/计数器1比较匹配A

8

0x00E

TIMER1COMPB

定时器/计数器1比较匹配B

9

0x010

TIMER1OVF

定时器/计数器1溢出

10

0x012

TIMER0OVF

定时器/计数器O溢出,

11

0x014

SPI.STC

SPI串行传输结束

12

0x016

USART.RXC

USART,Rx结束

13

0x018

USART.UDRE

USART数据寄存器空

14

0x01A

USART。TXC

USART,Tx结束

15

0x01C

ADC

ADC转换结束

16

0x01E

EERDY

EEPROM就绪

17

0x020

ANACOMP

模拟比较器

18

0x022

TWI

两线串行接口

19

0x024

INT2

外部中断请求2

20

0x026

TIMER0COMP

定时器/计数器0比较匹配

21

0x028

SPMRDY

保存程序存储器内容就绪

一个中断产生后,SREG寄存器的全局中断使能位I将被清零,后续中断被屏蔽。

用户可以在中断服务程序里对I置位从而再次开放中断。在中断返回后,全局中断位I将重新置位。当程序计数器指向中断向量开始执行相应的串断暇务程序时,对应中断标志位将被硬件清零。当一个符合条件的中断发生后,如果相应的中断使能位为0,中断标志位将挂起并一直保持到中断执行或者被软件清除。如果全局中断标志I被清零,则所有的中断都不会被执行直到I置位。然后,被挂起的各个中断按中断优先级依次被处理。

ATMEAG16L的外部中断编程实践ATMEAG16L具有多达20个中断源,这里我们首先进行外部中断的实验,其它的等到介绍到相关内容时再进行实验。

1.外部中断0外部中断0由引脚INT0(PIND2)触发。如果INT0引脚按照MCUCR寄存器中的ISC01、ISC00设置的方式发生跳变,则不管是否INTO中断使能,INTO中断标志位INTFO都将置位。如果SREG寄存器的全局中断位I和通用中断控制寄存器GICR中的lNT0中断使能位INTO置位,则开始执行中断程序。在进入中断服务程序时,INTF0被硬件清零。必须指出,不管INT0(PIND2)引脚方向位设置如何,只要INT0引脚发生规定的跳变,都会触发中断。中断标志位INTF0只在满足发生中断的条件时置位,一旦条件变化,INTF0被硬件清零。向INTF0位写“1”也会对其清零。

2.外部中断1外部中断1由引脚INTI(PIND3)触发。如果INTl引脚按照MCUCR寄存器中的ISC11、ISC10设置的方式发生跳变,则不管是否INT1中断使能,INT1中断标志位INTF1都将置位。如果SREG寄存器的全局中断位l和通用中断控制寄存器GICR中的INTl中断使能位INT1置位,则开始执行中断程序。在进入中断服务程序时,INTF1被硬件清零。必须指出,不管INT1(PIND3)引脚方向位设置如何,只要INT1引脚发生规定的跳变,都会触发中断。中断标志位INTF1只在满足发生中断的条件时置位,一旦条件变化,INTF1被硬件清零。向INTF1位写“1”,也会对其清零。

3.外部中断2外部中断2由引脚INT2(PINB2)触发。如果INT2引脚按照MCUCR寄存器中的ISC2设置的方式发生跳变,则不管是否INT2中断使能,INT2中断标志位INTF2都将置位。如果SREG寄存器的全局中断位I和通用中断控制寄存器GICR中的INT2中断使能位INT2置位,则开始执行中断程序。在进入中断服务程序时,INTF2被硬件清零。必须指出,不管INT2(PINB2)引脚方向位设置如何,只要INT2引脚发生规定的跳变,都会触发中断。中断标志位INTF2只在满足发生中断的条件时置位,一旦条件变化,INTF2被硬件清零。向INTF1位写“1”,也会对其清零。

INT1中断实验:平时8个LED闪烁,点亮/熄灭时间约500mS。一旦INT1触发中断后,蜂鸣器发出10秒的报警声。

在我的文档中新建一个ac6的文件夹。建立一个ac6.prj的工程项目,最后建立源程序文件ac6.C。输入下面的程序(程序1):

85f77f2bf5d7fda83de1f1555600e8a0.png

编译通过后,可在AVRStudio集成开发环境中进行INTO、INT1中断嵌套实验:平时8个LED闪烁,点亮/熄灭时间约500ms。INTl触发中断后,蜂鸣器发出1O秒的报警声。在INT1的中断服务子函数中,再置位总中断使能位I,这样INT1中断服务子函数中,即可进行INT0中断嵌套。当INT0触发中断时,进入INT0中断服务子函数,将8个LED的一半熄灭。

在我的文档中新建一个ac7的文件夹。建立一个JTAG在线仿真或进行软件模拟仿真。仿真完成后,将ac6.hex文件下载到AVR单片机综合试验板上。注意,标示“LED”及“INT1”的双排针应插上短路块。我们看到,D1-D8发光管闪亮,间隔约0.5秒。按下INT1键后,单片机进入中断,蜂鸣器发声10秒。

ac7.prj的工程项目,最后建立源程序文件ac7.C。输入下面的程序(程序2):

a7b1cdd632f77985127a79a8a8f15d95.png

编译通过后,可在AVRStudio集成开发环境中进行JTAG在线仿真或进行软件模拟仿真。仿真完成后,将ac7.hex文件下载到AVR单片机综合试验板上进行实际的中断操作。注意,标示“LED”、“BEEP”及“INT0”、“INT1”的双排针应插上短路块。

两路防盗报警器实验:平时一个数码管熄灭。当盗情发生时自动显示“1”或“2”,同时一个LED点亮(代表报警)。着两路同时产生盗情,则数码管每隔2秒轮流显示“1”、“2”。直到值班人员按下复位按钮后才解除报警。

在我的文档中新建一个ac8的文件夹。建立一个ac8.pd的工程项目,最后建立源程序文件ac8.C。输入下面的程序(程序3):

程序3)

#include    //包含头文件

#define uchar unsigned char  ∥变量类型的宏定

#define uint unsigned int

uchar const SEG7f [10]={0X3f,0x06.0x5b,∥共阴极数

码管0-9的字形码

0x4f,Ox66;Ox6d,0x7d,Ox07,0x7f,0x6f};

#define ALM_ON(PORTB=PORTB&0xfe)//报警

器启动

uchar aim_flag1,alm_flag2;//第1、2路盗情标志

//**********************************

void delay_ms(uint k)//定义毫秒级的延时子函数

{

uint i,j;

for(=O:i

{

for(j=0;j<1140;j++)

}

}

//========================

void main(void)∥定义主函数

{    ∥主函数开始

DDRA=0xff;  ∥将PA端口设为输出

DDRC=0xff;    ∥将PC端口设为输出

PORTA=0x00;#PA端口初始化输出00000000

PORTC=0xff;  //PC端口初始化输出1 1 11 1 1 1 1

PORTB=0xff; //PB端口初始化输出11 11 1 1 1 1

DDRB=0xff:  //将PB端口设为输出

PORTD=0xff;  #PD端口初始化输出1 111111 1

DDRD=0xf3;  //将PIND2、3设为输入

MCUCR=0x0A;//INT0、1为下降沿触发

GICR:0xC0;//使能INT0、1中断

SREG=0x80;//使能总中断

while(1)    //无限循环

{    ∥无限循环语句开始

if(alm_flag1==1)//如果第1路产生盗情

{PORTA=SEG7[1];∥数码管显示为1

PORTC=Oxfe;//点亮最右的数码管

ALM_ON://报警器启动

delay_ms(2000);#延时2秒

}

if(alm_flag2==1)∥如果第2路产生盗情

{PORTA=SEG7[2];∥数码管显示为2

PORTC=0xfe;//点亮最右的数码管

ALM_ON;//报警器启动

delay_ms(2000);//延时2秒

}

}    ////无限循环语句结束

}    ////主函数结束

∥****************************************

*

#pragma interrupt_handler intO_isr:2#INTO中断服

务子函数

void intO_isr(void)

{

aim_flagl=1:    //置第1路盗情标志为

1

#pragma interrupt_handler int1_isr:3//INT1

务子函数

中断服

void int1_isr(void)

{

alm_flag2=1;    //置第2路盗情标志为1

}

}

//****************************************

编译通过后,可将ac8.hex文件下载到AVR单片机综合试验板上进行实际的操作演示。注意,标示“LED”、“LEDMOD_DISP”、“LED-MOD_COM”及“INT0”、“INT1”的双排针应插上短路块。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 生成 资源文件,SVG-Android开源库——SVG生成Vector资源文件的编辑预览工具...

Vector矢量图在Android项目中的利用愈来愈广泛&#xff0c;但是如果你想用Android Studio自带的工具将SVG图片转化成Vector资源文件却是相当麻烦&#xff0c;首先能支持的SVG规范较少&#xff0c;其次操作流程麻烦。而另外一种方式就是通过http://inloop.github.io/svg2android…

android微信朋友圈相册背景,Android 仿微信朋友圈图片拖拽返回

目前的app的动画效果是越来越炫了&#xff0c;很多主流app的图片预览返回都有类似功能&#xff0c;比较常见的是ios自带相册&#xff0c;微信朋友圈等等。自己项目中也有类似功能&#xff0c;最近整理了一下这个功能的代码&#xff0c;做个笔记记录&#xff0c;有兴趣的朋友可以…

erp采购总监个人总结_《用友 ERP 培训教程:财务核算/供应链管理/物料需求计划》ERP概述 : ERP基础知识...

第1章 ERP概述本章重点_- _ERP概要_- _ERP实施成功的必要条件_- _ERP几个重要的名词解释用友ERP-U8&#xff08;V8 .72&#xff09;简介及功能按钮说明1.1 ERP基础知识1.1.1 ERP基本概念ERP&#xff08;Enterprise Resources Planning&#xff09;中文叫做企业资源规划&…

soc 设计soc设计 uml实务手册_企业内训“软件需求设计建模方法学全程实例剖析”训练方案(2020年)...

※训练介绍※利润需求-设计。软件开发中&#xff0c;需求是解决“系统怎样好卖”的问题&#xff0c;设计是解决“降低开发成本”的问题。要迈向“低成本制造好卖的产品”的境界&#xff0c;并非喊喊口号就能达到。口号&#xff1a;我们只做最重要的需求&#xff0c;尽快把系统推…

鸿蒙分布式通讯子系统,【鸿蒙】分布式通信子系统--让华为手机发现Hi3861开发板...

目录&#xff1a;工具步骤运行结果工具&#xff1a;1. 华为手机&#xff0c;需要有多设备协同功能。在设置->更多连接->多设备协同&#xff0c;查看是否有多设备协同功能&#xff0c;此功能使用的就是coap协议。2. Hi3861开发板步骤&#xff1a;1. 修改源码&#xff0c;…

winform 统计大量数据重复的元素个数_DAY10——推断统计之概率与概率分布:常见的离散型概率分布...

「数学期望——某件事情大量发生之后的平均结果」----------------分割又分割----------------------昨天文章排版出了问题&#xff0c;今天重新排版。数据的三个统计维度&#xff1a;集中程度、离散程度、分布情况。集中程度&#xff1a;期望离散程度&#xff1a;方差、标准差…

xss跨站脚本攻击_常见攻击之xss跨站脚本攻击

前言随着互联网的不断发展&#xff0c;web应用的互动性也越来越强。相应的&#xff0c;在用户体验提升的同时安全风险也会跟着有所增加。今天&#xff0c;我们就来讲一讲web渗透中常见的攻击方式之一&#xff0c;XSS攻击。首先需要了解他是如何工作的&#xff0c;以及我们如何利…

缺陷调研报告_质量零缺陷 | 打造极致产品的质量管理之道

质量是政治质量是生命质量是效益为强化全员“零缺陷”质量意识&#xff0c;坚决打赢质量提升攻坚战&#xff0c;现开设“质量零缺陷”专栏&#xff0c;着力宣传全院各单位在加强质量管理&#xff0c;落实零缺陷理念等方面的典型做法和质量故事。今天为大家带来的是曾获得“全国…

oracle 从右往左截取_截取GIF、调分辨率、快捷拨号,三星这些功能让人爱不释手...

昨天三星5G手机正式上市后&#xff0c;今天又爆出苹果被三星拒绝后要转向华为购买5G芯片&#xff0c;苹果如此操作是真的走投无路了&#xff1f;再看看吃瓜群众们&#xff0c;吐槽一波接一波。​一会儿&#xff0c;嫌弃三星信号频段不完全&#xff0c;10nm的工艺制程太差。一会…

html中表单的校验的插件,功能强大的jquery.validate表单验证插件

本文实例为大家分享了jquery.validate表单验证的使用方法&#xff0c;供大家参考&#xff0c;具体内容如下1 、表单验证的准备工作在开启长篇大论之前&#xff0c;首先将表单验证的效果展示给大家。1.点击表单项&#xff0c;显示帮助提示2.鼠标离开表单项时&#xff0c;开始校验…

swing 显示文件下文件_Linux 文件权限详解

阅读五分钟&#xff0c;每日十点&#xff0c;和您一起终身学习&#xff0c;这里是程序员Android本篇文章主要介绍 Android 开发中的部分知识点&#xff0c;通过阅读本篇文章&#xff0c;您将收获以下内容:一、使用ls -l 显示文件的详细信息二、Linux下的文件权限分组三、drwx 代…

未来教育计算机二级书怎么样,未来教育计算机二级

1册图书1张光盘&#xff0c;轻松应对2018年一级计算机基础及MS Office应用考试 n 1.历年真题精选&#xff0c;全方位把握真考动向&#xff0c;具有练习价值 n (1)新大纲、新题型、新题库&#xff0c;全方位解读无纸化考试&#xff0c;帮助考生轻松过关。 n (2)精选2017年~2016年…

江苏计算机专业,行情火爆的计算机专业:江苏计算机专业高校最低录取分排序...

原标题&#xff1a;行情火爆的计算机专业&#xff1a;江苏计算机专业高校最低录取分排序现如今的十大热门专业里&#xff0c;计算机类专业总是稳居榜首&#xff01;几年前市场对计算机专业人才的需求非常大&#xff0c;计算机专业红得发紫&#xff0c;毕业生是"皇帝的女儿…

em算法 实例 正态分布_Petuum提出序列生成学习算法通用框架

近日&#xff0c;来自人工智能创业公司 Petuum 的研究人员发表论文&#xff0c;提出序列生成学习算法的通用框架——广义的熵正则化策略优化框架(Generalized Entropy-Regularized Policy Optimization)。该框架是对包括最大似然学习 (MLE)、增强学习 (RL) 等多种广泛使用的算法…

springboot 集成redis_一文详解Spring Boot 集成 Redis

redis设置&#xff1a;修改redis服务器的配置文件vim /usr/local/redis/bin/redis.confbind 0.0.0.0 protected-mode no重新启动redissystemctl restart redis.service #重新启动服务注意&#xff1a;服务器的话需要设置安全组开放端口1.导入依赖org.springframework.boot …

计算机用手机的网络,电脑做热点让手机上网_电脑开热点给手机用

2016-11-26 12:00:20你好!很高兴为你解答&#xff0c;有两个解决办法:1.在每台机的本地连接--属性--常规--internet协议(TCP/IP)--常规里,设置成"自动获取IP地址"2.在每台机的本地连接--...2017-01-06 14:44:121.打开任务栏右下角的网络连接&#xff0c;在弹出的界面…

shell开启飞行模式_原来手机飞行模式有这么多用处!99%的深圳人都不知道...

相信大家都知道我们的手机里有个功能叫「飞行模式」(又称航空模式)它可以关掉手机收发信号的装置避免手机信号对飞机飞行造成干扰来源&#xff1a;网络那么对于不常坐飞机的人来说「飞行模式」功能是不是毫无用处呢&#xff1f;当然不是今天易小姐就带大家解锁关于「飞行模式」…

联想微型计算机启天e4300,戴尔轻薄商务本Latitude E4200/E4300开卖

戴尔随迅驰2平台的发布全面更新了自己的Latitude商用笔记本产品线&#xff0c;之前15和14寸的E6000/E5000系列已经上市销售&#xff0c;今天两款轻薄型号E4300/E4200也摆上了戴尔美国官网的货架。13.3寸的E4300目标直指联想ThinkPad X300/X301系列&#xff0c;虽然在轻薄程度上…

医疗小程序源码_不懂商城小程序源码,如何快速创建小程序商城?

小程序在近来发展十分迅速&#xff0c;从微信小程序游戏出发&#xff0c;到现在渗透到各种功能类型&#xff0c;甚至已经扩展到了其他的应用程序上。那么如今很多的小程序商城应该怎么创建呢&#xff1f;不懂商城小程序源码也可以自己制作吗&#xff1f;当然可以&#xff0c;下…

计算机快捷键任务管理器,任务管理器快捷键,小编告诉你电脑如何打开任务管理器...

电脑系统的任务管理器是Windows提供有关计算机性能的信息&#xff0c;并显示了计算机上所运行的程序和进程的详细信息&#xff0c;从这里可以查看到当前系统的进程数、CPU使用比率、更改的内存、容量等数据。那么&#xff0c;任务管理器怎么样打开呢&#xff1f;下面&#xff0…