ATMEGA16单片机实验
ATMEGA16单片机实验

ATMEGA16单⽚机实验实验⼀软件和硬件的认识⼀、实验⽬的:1、掌握硬件原理。
2、初步掌握实验板的使⽤⽅法。
3、熟悉软件⼯作界⾯。
⼆、实验仪器:ATmage16实验板⼀块PC机⼀台三、实验内容及步骤:1、插上电源,按下开关。
观察批⽰灯是否点亮。
电源(可输⼊7~12V)ATmega16管脚图2、由原理可知I/O⼝的批⽰灯为低电平亮,在实验板上取地与I/O⼝相接,观察是否点亮。
I/O⼝LED显⽰与接⼝3、打开编程界⾯,点击各栏,认识各栏的⽤途。
A VRICC IDE 软件的⼯作界⾯4、输⼊以下程序:#includeint main(void){DDRA = 0xff;/* all outputs */DDRB = 0xff;/* all outputs */DDRC = 0xff; /*all outputs */DDRD = 0xff; /*all outputs */PORTA = 0x00; /* 输出低电平*/PORTB = 0x00; /* 输出低电平*/PORTC = 0x00; /* 输出低电平*/PORTD = 0x00; /* 输出低电平*/while(1);}观察I/O⼝的灯是否被点亮。
实验⼆I/O⼝的输⼊与输出⼀、实验⽬的:1、了解IO⼝的结构;2、熟悉IO⼝的特性;3、掌握IO⼝的控制。
⼆、实验仪器:ATmage16实验板⼀块PC机⼀台三、实验原理:作为通⽤数字I/O 使⽤时,A VR 所有的I/O 端⼝都具有真正的读-修改-写功能。
这意味着⽤SBI 或CBI 指令改变某些管脚的⽅向( 或者是端⼝电平、禁⽌/ 使能上拉电阻) 时不会改变其他管脚的⽅向( 或者是端⼝电平、禁⽌/ 使能上拉电阻)。
输出缓冲器具有对称的驱动能⼒,可以输出或吸收⼤电流,直接驱动LED。
所有的端⼝引脚都具有与电压⽆关的上拉电阻。
并有保护⼆极管与VCC 和地相连,如Figure23 所⽰。
在控制I/O时,分别由⽅向寄存器DDRX与数据寄存器PORTX控制I/O的状态,如下表。
单片机电子琴的实验报告

姓名:班级:学号:小班学号:同组姓名:电子邮件:实验课题:基于AVR单片机电子琴的制作实验日期:2013.09.02—2013.09.15目录:一、实验简介1.1实验目的 (4)1.2实验关键词 (4)1.3基础知识 (4)二、实验器材2.1核心部件:ATmega16单片机 (5)2.2电路元件 (6)2.3管脚说明 (6)三、实验原理3.1实验原理图 (7)3.2实验流程图 (8)3.3实物效果图 (8)四、操作过程与运行结果4.1操作过程示意图 (9)4.2电子琴系统主要部分 (11)4.3具体操作过程 (11)4.4运行结果 (12)五、实验中的排错、体会与建议5.1调试与排错过程 (12)5.2体会与建议 (14)5.3小组分工 (15)5.4参考文献 (15)六、附录6.1流水灯实验 (16)6.2蜂鸣器实验 (17)6.3秒表实验 (18)6.4简易交通灯实验 (25)6.5电子琴源代码 (30)一、实验简介1.1实验目的通过设计一个模拟电子琴系统熟悉ATmega16单片机的使用及其基本功能。
使其能够通过键盘控制实现播放预存音乐,弹奏、储存弹奏音乐,变速播放,暂停及继续播放,停止播放功能。
1.2实验关键词按键检测预存播放弹奏储存变速暂停停止1.3基础知识声波是振动产生的。
频率即表示每秒钟振动的次数,采用CTC方式时avr 单片机通过特定的端口(PD4及PD5)输出一定频率的方波,TCCR1A设为比较匹配时OC1A/OC1B电平取反,TCCR1B的计数上限为OC1A,根据公式OCnA=f/2N(1+OCRnA)计算出7个频率音阶所需的OCR1A,则只需将喇叭接在PD4或PD5,通过程序控制端口输出特定频率的方波波形(发声使用正弦波最好,方波效果稍次但影响不大),喇叭就会发出七种不同的声音,依照人听觉分辨7个音阶分为三组,分别为高,中,低音阶频率,经计算可得,当OCR1A=(8000000/musicmem[i]-1)时,{131,147,165,175,196,220,247}存放低音阶频率,{262,294,330,349,392,440,494}存放中音阶频率,{524,588,660,698,784,880,988}则存放高音阶频率,所以需要定义三个数组存放各音阶的频率值。
《单片机原理与应用》课程设计基于atmega16实现的电压和温度的采集及液晶显示系统

课程设计任务书学生姓名:专业班级:自动化0501班指导教师:工作单位:自动化学院题目: 电压和温度的采集及液晶显示要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)系统能够测量环境温度,测量范围0-100摄氏度。
(2)系统能够测量给定电压,测量范围0-5V。
(3)电压测量精确到0.01伏,温度测量精确到0.1摄氏度。
(4)具有液晶实时显示当前电压及温度的功能。
时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (3)1. 硬件选择及各模块组成 (4)1.1设计原理 (4)1.2器件选择及基本原理 (4)1.2.1 模数转换模块 (5)1.2.2 ATmega16芯片模块....................... 错误!未定义书签。
1.2.3 DS18B20模块 (6)1.2.4 液晶显示器模块 (7)2各模块实现方法说明及整体电路图 (9)2.1 温度采集.................................... 错误!未定义书签。
2.2 电压采集 (9)2.3液晶中文显示 (10)2.4整体电路图 (10)3.软件设计 (11)3.1程序设计流程图 (11)3.2源程序 (11)4 仿真调试结果 (12)总结 (13)参考文献: (14)附录1 (15)主程序源程序: (15)显示驱动程序源程序: (22)摘要此次课程设计是基于ATmega16实现的电压和温度的采集及液晶显示系统。
该系统主要包括控制器、温度传感器、外部参考电压及测试电压、液晶显示器几个硬件部分。
控制器采用的8位AVR系列单片机-ATmega16,有高性能、低功耗等优点,电压采集是通过单片机内部的数模转换器实现的;温度传感器则采用DS18B20实现,该传感器有低功耗单总线控制的特点,显示部分采用控制芯片为KS0108的12864液晶显示器,通过单片机的I/O口直接驱动。
ADC实验 ATmega16

6.2模数转换的ADC实验 6.2.1、实例功能AVR的模数转换器ADC具有下列特点:110位精度;20.5LSB积分非线形误差3±2LSB的绝对精度;413µs~260µs的转换时间;5在最大精度下可达到每秒15kSPS的采样速率;68路可选的单端输入通道;77路差分输入通道;82路差分输入通道带有可选的10×和200×增益;9ADC转换结果的读取可设置为左端对齐(LEFT ADJUSTMENT);10ADC的电压输入范围0~Vcc;11可选择的内部2.56V的ADC参考电压源;12自由连续转换模式和单次转换模式;13ADC自动转换触发模式选择;14ADC转换完成中断;15休眠模式下的噪声抑制器(NOISE CANCELER)。
在本实例中,我们将编写程序实现将模数转换后获得的电压值通过单片机的串口发送到计算机,然后通过计算机上的串口助手显示测量的电压值。
本实例共有3个功能模块,分别描述如下:●单片机系统:使用单片机的串口实现将模数转换后获得的电压值通过串口发送到计算机。
●外围电路:RS232电平转换电路,DB9串行接口插座,模拟电压输入采集电路。
●软件程序:进一步熟悉单片机的串行通信,并掌握单片机的模数转换的方法。
6.2.2、器件和原理关于串行接口的原理已接单片机与计算机的串口的连接在上一实例中进行了描述,在本实例中不再重复。
本实例只介绍ATmega16单片机如何通过内置的模数转换模块采集外界输入的模拟电压。
1、ATmega16单片机的模数转换器ADC介绍由于单片机只能处理数字信号,所以外部的模拟信号量需要转变成数字量才能进一步的由单片机进行处理。
ATmega16内部集成有一个10位逐次比较(successive approximation)ADC电路。
因此使用AVR可以非常方便的处理输入的模拟信号量。
ATmega16的ADC与一个8通道的模拟多路选择器连接,能够对以PORTA作为ADC输入引脚的8路单端模拟输入电压进行采样,单端电压输入以0V(GND)为参考。
ATmega16实验板使用说明书

Atmega16实验板说明书硬件资料介绍 (2)调试软件安装 (3)编译环境的使用 (8)建立新的工程 (15)资料和例程 (18)注意:使用时先把调试器和开发板用数据线连起来,再插上USB线;停止使用时应先断开USB线切断电源,才能拔下数据线,否则可能会损坏调试器。
硬件资料介绍实验套件共分3部分,开发板,调试器,数据线(1根usb线,1根串口线)。
开发板文件夹图片/原理图里面有开发板的原理图图片和protel dxp 原理图文件。
如果开发板是没有焊好的套件可以对照元器件参数表和已焊好的图片(图片文件夹里有)先把开发板焊接完成。
焊接完成后先用万用表测量一下5V 与GND 之间是否短路,确定没有短路之后,插上USB 线接到电脑上,弹上开关SW1电源指示灯D1亮,说明电源已接通。
调试器调试软件安装要实现开发调试需要安装三个软件:PL2303驱动,avr studio 4,WinAVR。
这三个软件都在软件这个文件夹里。
首先安装usb驱动PL2303,如图点下一步。
点完成就可以了。
然后把调试器和电脑通过USB线联机。
如图这时调试器上的电源指示灯和信号指示灯都亮,而且电脑开始发现新硬件,新硬件可以安装使用。
这说明已经建立起连接,然后右击我的电脑—>属性—>硬件—>设备管理器,打开设备管理器界面,点开端口(COM和LPT)的“+”如图。
其中的Prolific usb-to-Serial Comm Port(COMx)就是调试器的usb设备。
端口号是多少根据个人电脑情况可能有差异。
下面我们要修改端口号,因为调试器里只提供COM1-COM3的通讯。
双击Prolific usb-to-Serial Comm Port(COMx)选项,弹出端口设置对话框,如图然后选端口设置—>高级,在端口号中选一个没有被占用且3以内的COM口,我的电脑上没有串口,我选的是COM1,如图然后点确定,重新打开设备管理器再看一下端口情况。
单片机项目实训实验报告

一、实验背景与目的随着科技的发展,单片机作为嵌入式系统的重要组成部分,广泛应用于各个领域。
为了提高学生的实践能力和创新精神,我们选择了单片机项目实训作为实验课程。
本次实训旨在让学生掌握单片机的基本原理,熟悉其硬件和软件设计,并通过实际项目实践,提高学生的动手能力和解决问题的能力。
二、实验内容与步骤本次实训项目为设计一款基于ATmega16单片机的简易计算器。
该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。
1. 实验内容(1)设计计算器的硬件电路,包括ATmega16单片机、矩阵键盘、LCD1602显示屏等。
(2)编写计算器的软件程序,实现四则运算功能。
(3)测试计算器的功能,确保其正常运行。
2. 实验步骤(1)硬件设计根据实验要求,设计计算器的硬件电路。
主要包括以下步骤:1)选择合适的ATmega16单片机开发板。
2)设计矩阵键盘电路,包括按键布局和连接方式。
3)设计LCD1602显示屏电路,包括数据线和控制线。
4)将以上电路连接到ATmega16单片机开发板上。
(2)软件设计编写计算器的软件程序,实现以下功能:1)初始化ATmega16单片机,设置时钟频率。
2)初始化LCD1602显示屏,显示“0”作为初始值。
3)编写矩阵键盘扫描程序,检测按键状态。
4)根据按键输入,执行相应的四则运算。
5)将运算结果显示在LCD1602显示屏上。
6)实现清零、退格等功能。
(3)测试与调试1)将编写好的程序烧录到ATmega16单片机中。
2)连接计算器硬件电路,进行功能测试。
3)针对测试过程中发现的问题,进行调试和修改。
4)确保计算器能够正常运行,实现预期功能。
三、实验结果与分析经过实际操作和调试,我们成功设计并实现了一款基于ATmega16单片机的简易计算器。
该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。
以下是实验结果分析:1. 硬件设计方面,我们选择了合适的ATmega16单片机开发板,并设计了简洁的矩阵键盘和LCD1602显示屏电路。
ADC数据采集显示实验
工程基础实验与训练中心实验报告
那么仅需读取 ADCH 就足够了。否 则必须先读出 ADCL 再读 ADCH ,其中 MUX4~0: 模拟通道与增益选择位。 (3)ADC 控制和状态寄存器 A - ADCSRA:其中 ADEN: ADC 使 能位;ADSC: ADC 转换启动位;ADATE: ADC 自动触发使能位;ADIF: ADC 中断标志;ADIE: ADC 中断使能; ADPS2~0: ADC 预分频器 选择位。 (4)特殊功能 IO 寄存器 - SFIOR:其中 ADTS2~0: ADC 自动触 发源;Res: 保留位。
如下图,使用软件 PROTEUS 画出原理图。 因为在实际中没有 AVR 的开发板,所以使用软件来模型出,来 显示。 当然也要了解这个软件的使用方法。 因此,在下面的图形中能够显示出 ADC 的数据采集与显示,所 以如下图:
4
工程基础实验与训练中心实验报告
三、程序流程图 开始
1602初始化
检测是否
实验原理及主要工作: 一、实验原理
ATmega16 内部的 ADC 拥有很多的特点,更具这些特点可以知 道本次实验的有些内容的要求。本次试验是数据采集和显示,用 ADC 转换器来进行数据的采集,并在 1602 的液晶显示屏上显示出数据采 集的结果。
要做本次实验还需了解 ATmega16 内部的 ADC 的寄存器,ADC 有以下几个寄存器: (1)多路复用器选择寄存器 - ADMUX :其中 REFS1/REFS0: 参考电压源选择设置;ADLAR: ADC 转换结果 对齐选择位。 (2)ADC 数据寄存器 - ADCL 及 ADCH:读取 ADCL 之后, ADC 数据寄存器一直要等到 ADCH 也被读出才可以进行数据更 新。因此,如果转换结果为左对齐,且要求的精度不高于 8 比特,
基于Atmega16单片机主控大功率电磁炉设计
基于Atmega16单片机主控大功率电磁炉设计摘要:本文详细介绍了基于Atmega16单片机的电磁炉感应加热设计的研究。
它主要包括五个部分:不控整流,滤波电路,逆变电路,保护电路和单片机采样数码管显示电路。
经实验,本设计能实现高频加热的功能,符合现代节能的要求。
关键词:Atmega16单片机感应加热不控整流Based on Atmega16 single-chip microcomputer control high power electromagnetic stove designHUANG Rong-lan 21. Wuzhou College,Wuzhou, Guangxi(543002)Abstract:This paper introduces the design of electromagnetism heating based on the Atmega16 MCU, It mainly includes five parts: uncontrolled rectifier, filter circuit, inverter circuit, protection circuit and a single chip. microcomputer sampling digital tube display circuit. After the experiment, the design can achieve high frequency heating function, in line with modern energy-saving requirement.Keywords: Atmega16 MCU ;electromagnetism heating; uncontrolled rectifier1引言感应加热主要是利用电磁感应现象,让交变的电流在导体中产生感应电流,从而使导体发热[1]。
基于 ATmega16 单片机的微型气象探测系统设计-设计应用
基于ATmega16 单片机的微型气象探测系统设计-设计应用摘要:设计了一种便携式低功耗微型气象探测系统,该系统以低功耗ATmega16单片机作为控制部件,采用温湿度传感器、气压传感器以及光强度传感器,进行温度、湿度、气压和光照强度的测量;通过12864液晶、时钟芯片和E2PROM实现数据的显示、存储和查询。
实验测试结果表明该微型气象探测系统的测量精度达到了普通气象测量要求,稳定性高。
由于该气象探测系统具有微型化、低功耗、实时化和便携式等特点,因而特别适用于小区域的气象监测。
0引言气候变化使得我国干旱,洪涝等自然灾害更加严重,提高我国的气象探测能力,有助于增强我国灾害预警和人工影响天气能力。
因此,气象要素测量系统开发研究具有重要的意义。
目前很多地区气象要素的测量大多依靠当地天气预报,然而天气预报地域范围较广,无法到小区域的气候测量。
而搭建气象台成本较高,性价比低,因此设计一种微型化,便携式的综合气象探测系统就显得十分必要。
针对以上问题本文设计了一种便携式气象探测系统,该气象检测系统可以有效地测量小区域的温度、湿度、气压、光照强度等气象参数,精度可达到普通气象测量要求,还有显示、存储、回溯查询的功能,具有低功耗、微型化、便携式、低成本的特点,适应于各种小区域的气象测量,具有一定的实用价值。
1系统设计和工作原理本气象测量系统以低功耗AVR单片机ATmega16作为控制部件,如图1所示,由温度测量模块、湿度测量模块、气压测量模块、光照强度测量模块、时钟芯片、E2PROM、液晶显示和独立按键等模块组成。
通过各个传感器将温度、湿度、气压、光强度转化为电信号,利用单片机处理后得到测量数据,并在液晶上显示。
通过E2PROM和独立按键实现数据的存储和查询。
按下存储键,储存各个测量数据和时钟芯片得到的当前时间;按下查询键,查询以前存储的测量数据。
同时该系统还具有自动测量功能,自动测量时,关闭液晶,测得数据每30min存入E2PROM。
基于单片机ATmega16的CCD驱动电路的设计
2 线阵图像传感器TCD1304的时序分析 CCD芯片TCD1304是一款高灵敏度、低暗电流的线阵图像传感器,其光电灵敏度的典型值可达到160 V/lx.s,可用于条码扫描、光谱测量等场合。TCD1304有两种工作方式:普通工作方式和电子快门工作方式,图3为在普通工作方式下的时序图。
TCD1304工作时需要SH、ICG和ФM 3路驱动信号。SH的周期表示光信号积累时间,即积分时间,ICG和SH是同步的,ФM是主脉冲,其典型值为2 MHz。OS表示信号输出,每4个ФM脉冲周期对应1位信号周期。可以看出,TCD1304工作时需要的驱动信号比较简单,完全可以用ATmega16来产生。3 电路设计及实验结果3.1 电路设计 基于ATmega16的TCD1304的驱动电路。
CCD是一种固体成像器件[1],应用广泛。CCD工作需要多路脉冲驱动,并且各路脉冲在时序上要严格对应。对于CCD时序的设计,通常采用CPLD和FPGA技术,CPLD在低频CCD时序设计中使用[2-4],FPGA则用在更为复杂的时序设计中[5]。对于驱动比较简单的线阵CCD没有必要用这种成本比较高的电路。本文针对东芝公司的线阵CCD芯片TCD1304设计了基于单片机ATmega16的驱动电路。采用ATmega16的定时器/计数器timer0的CTC(比较匹配时清零定时器)模式和timer1的相位与频率修正PWM模式产生所需要的基本波形,可通过修改单片机程序中的参数来改变输出波形的频率和占空比,使得波形调整便捷。1 ATmega16的CTC模式及相位与频率修正PWM模式 ATmega16的timer0的CTC模式可通过令控制寄存器TCCR0的WGM01=1和WGM00=0来设定。寄存器OCR0用于调节计数器的分辨率,当计数器的数值TCNT0等于OCR0中的值时计数器清零,即OCR0定义了计数器的TOP值,亦即分辨率。这个模式使得用户可以很容易地控制比较匹配输出的频率。CTC模式的时序图。计数器数值TCNT0一直累加到TCNT0与OCR0匹配,然后TCNT0清零。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一软件和硬件的认识一、实验目的:1、掌握硬件原理。
2、初步掌握实验板的使用方法。
3、熟悉软件工作界面。
二、实验仪器:ATmage16实验板一块PC机一台三、实验内容及步骤:1、插上电源,按下开关。
观察批示灯是否点亮。
电源(可输入7~12V)ATmega16管脚图2、由原理可知I/O口的批示灯为低电平亮,在实验板上取地与I/O口相接,观察是否点亮。
I/O口LED显示与接口3、打开编程界面,点击各栏,认识各栏的用途。
A VRICC IDE 软件的工作界面4、输入以下程序:#include <iom16v.h>int main(void){DDRA = 0xff;/* all outputs */DDRB = 0xff;/* all outputs */DDRC = 0xff; /*all outputs */DDRD = 0xff; /*all outputs */PORTA = 0x00; /* 输出低电平*/PORTB = 0x00; /* 输出低电平*/PORTC = 0x00; /* 输出低电平*/PORTD = 0x00; /* 输出低电平*/while(1);}观察I/O口的灯是否被点亮。
实验二I/O口的输入与输出一、实验目的:1、了解IO口的结构;2、熟悉IO口的特性;3、掌握IO口的控制。
二、实验仪器:ATmage16实验板一块PC机一台三、实验原理:作为通用数字I/O 使用时,A VR 所有的I/O 端口都具有真正的读-修改-写功能。
这意味着用SBI 或CBI 指令改变某些管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻) 时不会改变其他管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻)。
输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。
所有的端口引脚都具有与电压无关的上拉电阻。
并有保护二极管与VCC 和地相连,如Figure23 所示。
在控制I/O时,分别由方向寄存器DDRX与数据寄存器PORTX控制I/O的状态,如下表。
Figure 23. I/O 引脚等效原理图I/O口LED显示与接口四、实验内容及步骤:输入以下程序:这个程序为流水灯#include <iom16v.h>//*******************延时usvoid delay_us(int t){dot--;while(t>1);}//*******************延时msvoid delay_ms(unsigned int t){while(t!=0){delay_us(1142);t--;}}int main(void){DDRA = 0xff;/* all outputs */DDRB = 0xff;/* all outputs */DDRC = 0xff; /*all outputs */DDRD = 0xff; /*all outputs */PORTA=0XFF;PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;while(1){//***IO口输出低电平有效,如:0X01为十六进制数,二进制表示为00000001B,再取反PORTA=~0X01;delay_ms(1000);//************延时1秒PORTA=~0X02;delay_ms(1000);PORTA=~0X04;delay_ms(1000);PORTA=~0X08;delay_ms(1000);PORTA=~0X10;delay_ms(1000);PORTA=~0X20;delay_ms(1000);PORTA=~0X40;delay_ms(1000);PORTA=~0X80;delay_ms(1000);PORTA=0XFF;PORTB=~0X01;delay_ms(1000);//************延时1秒PORTB=~0X02;delay_ms(1000);PORTB=~0X04;delay_ms(1000);PORTB=~0X08;delay_ms(1000);PORTB=~0X10; delay_ms(1000); PORTB=~0X20; delay_ms(1000); PORTB=~0X40; delay_ms(1000); PORTB=~0X80; delay_ms(1000); PORTB=0XFF; PORTC=~0X01; delay_ms(1000); PORTC=~0X02; delay_ms(1000); PORTC=~0X04; delay_ms(1000); PORTC=~0X08; delay_ms(1000); PORTC=~0X10; delay_ms(1000); PORTC=~0X20; delay_ms(1000); PORTC=~0X40; delay_ms(1000); PORTC=~0X80; delay_ms(1000); PORTC=0XFF; PORTD=~0X01; delay_ms(1000); PORTD=~0X02; delay_ms(1000); PORTD=~0X04; delay_ms(1000); PORTD=~0X08; delay_ms(1000); PORTD=~0X10; delay_ms(1000); PORTD=~0X20; delay_ms(1000); PORTD=~0X40; delay_ms(1000); PORTD=~0X80; delay_ms(1000); PORTD=0XFF;}}观看现象是不是流水灯。
实验三外部中断一、实验目的:1、了解外部中断的库函数;2、熟悉外部中断的特性;3、掌握外部中断的使用。
二、实验仪器:ATmage16实验板一块PC机一台三、实验原理:外部中断通过引脚INT0 与INT1 或PCINT23..0 触发。
只要使能了中断,即使引脚INT0与INT1 或PCINT23..0 配置为输出,只要电平发生了合适的变化,中断也会触发。
这个特点可以用来产生软件中断。
只要使能,PCINT23..16 引脚上的电平变化将触发外部中断PCI2,PCINT14..8 引脚上的电平变化将触发外部中断PCI1,PCINT7..0 将触发外部中断PCI0。
PCMSK2、PCMSK1 与PCMSK0 寄存器则用来检测是哪个引脚上的电平发生了变化。
PCINT23..0 外部中断的检测是异步的。
也就是说,和其他中断方式一样,这些中断也可以用来将器件从休眠模式唤醒。
INT0 与INT1 中断可以由下降沿、上升沿,或者是低电平触发。
具体由外部中断控制寄存器A –EICRA 的设置来确定。
当INT0 或INT1 中断使能且设定为电平触发时,只要引脚电平被拉低,中断就会产生。
若要求INT0 或INT1 在信号下降沿或上升沿触发中断,则I/O时钟必须工作(请参见P23”时钟系统及其分布”了解更多信息)。
INT0与INT1 的低电平中断检测是异步的。
也就是说它可以用来将器件从休眠模式唤醒。
在休眠过程( 除了空闲模式) 中I/O 时钟是停止的。
通过电平中断将MCU 从掉电模式唤醒时,要保证低电平保持一定的时间以使MCU 完成唤醒过程并触发中断。
如果触发电平在启动时间结束前就消失,MCU 将被唤醒,但中断不会被触发。
启动时间由熔丝位SUT 与CKSEL 决定。
详见P23”系统时钟及其选项”。
外部中断控制寄存器MCUCR 外部中断控制寄存器 A 包括决定中断触发方式的控制位。
位1, 0 –ISC01, ISC00: 中断触发方式控制0 之位1 与位0外部中断0 由引脚INT0 激发,如果SREG 寄存器的I 标志位和相应的中断屏蔽位置位的话。
触发方式如Table35 所示。
在检测边沿前MCU 首先采样INT0 引脚上的电平。
如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。
如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。
中断完成后回到被中断的位置。
外部中断控制寄存器MCUCR 外部中断控制寄存器 A 包括决定中断触发方式的控制位。
通用中断控制寄存器GICR,控制外部中断使能位,具体如下:四ICC软件中断程序书写格式及16中断向量表16中断向量表五实验步骤及内容:输入程序:本程序一开始是IO口中的A口以流水灯工作,一旦有外部中断请求,就是B口以流水灯工作,循环一次后回到被中断处继续运行。
程序如下:#include <iom16v.h>#include <macros.h>//*******************延时usvoid delay_us(int t){dot--;while(t>1);}//*******************延时msvoid delay_ms(unsigned int t){while(t!=0){delay_us(1142);t--;}}#pragma interrupt_handler INT_0:2 //外部中断0执行函数void INT_0 (void){PORTC=0XFF;PORTB=~0X01;delay_ms(1000);PORTB=~0X02;delay_ms(1000);PORTB=~0X04;delay_ms(1000);PORTB=~0X08;delay_ms(1000);PORTB=~0X10;delay_ms(1000);PORTB=~0X20;delay_ms(1000);PORTB=~0X40;delay_ms(1000);PORTB=~0X80;delay_ms(1000);PORTB=0XFF;}void main(void){DDRA = 0xff;/*输出*/DDRB = 0xff;/*输出*/DDRC = 0xff;/*输出*/DDRD = 0xff; /*输出*/PORTA=0XFF;PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;MCUCR=0X02; //定义外部中断INT0为下降沿产生中断请求GICR=0X40; //中断屏蔽寄存器开INT0SEI(); //******开全局中断for (;;){PORTA=~0X01;delay_ms(1000);PORTA=~0X02;delay_ms(1000);PORTA=~0X04;delay_ms(1000);PORTA=~0X08;delay_ms(1000);PORTA=~0X10;delay_ms(1000);PORTA=~0X20;delay_ms(1000);PORTA=~0X40;delay_ms(1000);PORTA=~0X80;delay_ms(1000);}}实验四数码LED 实验一、实验目的:1、了解数码管的原理;2、熟悉数码管的使用;3、掌握外部中断和数码管动态显示的应用。