AVR单片机基本输入和外部中断实验二

合集下载

外部中断计数实验报告

外部中断计数实验报告

一、实验目的1. 理解单片机外部中断的工作原理和触发条件。

2. 掌握如何通过外部中断实现计数功能。

3. 学习中断服务程序的设计方法。

4. 提高单片机编程和调试能力。

二、实验环境1. 单片机:80C512. 开发工具:Keil uVision3. 实验电路:按键、LED灯、单片机及其相关外围电路三、实验原理外部中断是指单片机通过外部引脚接收到的中断信号,使得CPU暂停当前程序,转而执行中断服务程序。

本实验通过外部中断实现计数功能,具体原理如下:1. 将单片机的某个外部引脚(如P3.2)设置为外部中断0(INT0)的触发引脚。

2. 在外部中断0的中断服务程序中,设置一个计数变量,每次中断发生时,计数变量加1。

3. 将计数变量的值通过LED灯显示出来,以观察计数过程。

四、实验步骤1. 创建Keil uVision项目,并添加80C51固件库。

2. 编写C语言程序,实现以下功能:- 初始化外部中断0,设置中断触发方式为下降沿触发。

- 初始化定时器,用于产生中断。

- 编写外部中断0的中断服务程序,实现计数功能。

- 编写主函数,用于设置单片机的工作状态和显示计数结果。

3. 编译并下载程序到单片机。

4. 连接实验电路,包括按键、LED灯和单片机及其相关外围电路。

5. 观察实验现象,验证计数功能是否实现。

五、实验结果与分析1. 实验现象:按下按键,LED灯显示的计数值加1。

2. 分析:- 外部中断0的中断服务程序被正确调用。

- 计数变量在每次中断发生时加1。

- LED灯能够正确显示计数结果。

六、实验总结1. 本实验成功实现了通过外部中断实现计数功能,验证了单片机外部中断的工作原理。

2. 通过编写中断服务程序,掌握了中断编程方法。

3. 实验过程中,遇到了一些问题,如中断服务程序编写错误、程序编译错误等,通过查阅资料和调试,最终解决了问题。

4. 通过本次实验,提高了单片机编程和调试能力,加深了对单片机外部中断的理解。

AVR学习-外部中断INT0实验

AVR学习-外部中断INT0实验

ARM-AVR 嵌入式开发论坛
2、GCC 中无参数的函数需要写为 void,否则编译时会有警告产生。如:void LED_off(void)
void LED_01(char i) { PORTB = ~_BV(i); _delay_ms(100); } void LED_02(char i) { PORTB=~(_BV(i)|_BV(i-2)); _delay_ms(100); }
Version : 08.12.06 Author:linxiyiran E_mail:605987969@ ※转载请注明出处
/
Updata : 09.02.26 模块化 09.05.03 增加 proteus 仿真模型,仿真通过 09.07.21 WinAVR-20071221 环境下编译通过 comments:
//LED 亮灭控制
//输出低电平 //调用延时程序
//间隔点亮
void LED_03(char i) { PORTB=~(_BV(i)|_BV(i-1)); _delay_ms(100); } //端口初始化程序 void port_init(void) { DDRA = 0x00; PORTA = 0xFF; DDRB = 0xFF; PORTB = 0xFF; DDRC = 0x00; PORTC = 0xFF; DDRD = 0x00; PORTD = 0xFF; } /*方向输入*/ /*打开上拉*/ /*方向输出*/ /*电平设置*/
ARM-AVR 嵌入式开发论坛
//输出高电平,LED 熄灭
for(l=0;l<2;l++) { for (i = 0; i < 8; i++) LED_01(i);

外部中断的实验报告

外部中断的实验报告

一、实验目的1. 理解外部中断的概念和作用。

2. 掌握外部中断的编程方法。

3. 熟悉中断处理程序的设计和调试。

二、实验原理外部中断是指由外部设备或信号产生的中断,用于处理与CPU无关的事件。

在微机系统中,外部中断通常用于处理输入/输出设备的中断请求。

外部中断分为可屏蔽中断和不可屏蔽中断两种类型。

三、实验环境1. 开发平台:Keil uVision 52. 微控制器:STM32F103C8T63. 外部设备:按钮、LED灯4. 连接方式:通过GPIO引脚连接四、实验步骤1. 设计外部中断电路(1)将按钮连接到STM32F103C8T6的GPIO引脚,例如PA0引脚。

(2)将LED灯连接到STM32F103C8T6的另一个GPIO引脚,例如PB0引脚。

2. 编写外部中断初始化程序(1)在Keil uVision 5中创建一个新项目,并添加STM32F103C8T6的起始代码。

(2)在主函数中编写初始化程序,包括以下步骤:a. 配置PA0引脚为输入模式,设置为浮空输入。

b. 配置PB0引脚为输出模式,用于控制LED灯。

c. 使能中断,设置中断优先级。

d. 配置NVIC(嵌套向量中断控制器)以允许外部中断。

3. 编写外部中断处理程序(1)在项目中添加一个新的C文件,用于编写外部中断处理程序。

(2)编写外部中断处理函数,当按钮按下时,触发中断,控制LED灯闪烁。

a. 初始化外部中断处理函数,设置中断优先级和中断触发方式。

b. 在外部中断处理函数中,编写LED灯控制代码,实现LED灯闪烁。

4. 编译并下载程序(1)编译项目,生成.hex文件。

(2)将.hex文件下载到STM32F103C8T6开发板上。

5. 测试实验结果(1)将按钮按下,观察LED灯是否闪烁。

(2)松开按钮,LED灯停止闪烁。

五、实验结果与分析1. 实验结果实验过程中,当按钮按下时,LED灯闪烁;松开按钮后,LED灯停止闪烁。

实验结果表明,外部中断能够正确地处理外部设备的中断请求,并控制LED灯的亮灭。

单片机外部中断实训报告

单片机外部中断实训报告

一、实训目的1. 理解单片机外部中断的概念和作用。

2. 掌握单片机外部中断的配置方法。

3. 学会编写外部中断服务程序。

4. 通过实际操作,提高单片机编程和调试能力。

二、实训内容1. 单片机外部中断原理2. 单片机外部中断配置3. 外部中断服务程序编写4. 实验验证与调试三、实训环境1. 单片机开发板:选用STC89C52单片机。

2. 仿真软件:Proteus。

3. 实验工具:示波器、电源、连接线等。

四、实训步骤1. 理解单片机外部中断原理外部中断是单片机中断系统中的一种,用于响应外部事件。

当外部事件发生时,单片机会暂停当前程序,转去执行外部中断服务程序。

外部中断有多个中断源,如INT0、INT1等。

2. 单片机外部中断配置(1)设置外部中断触发方式:根据需要选择上升沿触发、下降沿触发或双边沿触发。

(2)设置外部中断优先级:根据实际需求设置中断优先级。

(3)设置外部中断使能:通过设置IE寄存器使能外部中断。

3. 外部中断服务程序编写编写外部中断服务程序,用于处理外部中断事件。

在服务程序中,完成相关处理逻辑,如记录外部事件发生次数、控制LED灯闪烁等。

4. 实验验证与调试(1)搭建实验电路:将单片机开发板与外部设备(如按钮)连接,设置好外部中断配置。

(2)在Proteus中搭建仿真电路,编写代码。

(3)下载代码到单片机开发板,观察实验现象。

(4)根据实验现象,调试程序,确保外部中断功能正常。

五、实验结果与分析1. 实验现象:按下外部按钮,单片机进入外部中断服务程序,控制LED灯闪烁。

2. 分析:通过设置外部中断触发方式、优先级和使能,成功实现外部中断功能。

在服务程序中,完成相关处理逻辑,达到预期效果。

六、实训总结1. 通过本次实训,掌握了单片机外部中断的配置方法,学会了编写外部中断服务程序。

2. 熟悉了外部中断在实际应用中的重要作用,提高了单片机编程和调试能力。

3. 在实训过程中,遇到了一些问题,如外部中断响应不及时、LED灯闪烁不稳定等。

AVR单片机(C语言)项目开发实践教程项目7 中断控制应用

AVR单片机(C语言)项目开发实践教程项目7 中断控制应用
外部中断源,用开关模拟报警信号,当触发报 警时,有蜂鸣器报警。
二、硬件电路
C2 C1
22pf
22pf
X1
1M
LS1
SOUNDER
R1
10k
C3
10uF
U1
9 RESET
12 13
XTAL1 XTAL2
40 39 38 37 36 35 34 33
PA0/ADC0 PA1/ADC1 PA2/ADC2 PA3/ADC3 PA4/ADC4 PA5/ADC5 PA6/ADC6 PA7/ADC7
计算机中的中断概念
主 程 序 随机事件1 随机事件2
主 程 序

断 服
中断——由于某一随机事件的发生,
务 程
断点1 计算机CPU暂停原程序的运行,转去

执行另一程序(随机事件),处理完
1中

毕后又自动返回原程序继续运行。
服 务
主程序——计算机现行运行程序。

程 序
断 点中2断源——引起中断的原因,或能发
➢ 1、中断源 中断源是指能够向单片机发出中断请求信号的部件
和设备。AVR单片机具有丰富的中断源,ATmega16单 片机有21个中断源,如表4-1所示。 ➢ 2、中断向量
中断源发出的请求信号被CPU检测到之后,如果单 片机的中断控制系统允许响应中断,则CPU会自动转移, 执行一个固定的程序空间地址中的指令。这个固定的地 址称为中断入口地址,也称中断向量。中断入口地址通 常是由单片机内部硬件决定的。ATmega16单片机的中 断向量如4-1 所示。
三、中断控制与响应过程
➢ 2、中断管理及中断标志 AVR有两种不同的中断:带有中断标志位

实验二、外部中断

实验二、外部中断

实验二外部中断实验一、实验目的1.掌握外部中断技术的基本使用方法2.掌握中断处理程序的编写方法二、实验原理1.外部中断的初始化设置的三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。

中断方式设置一般有两种方式:电平方式和脉冲方式.2.中断服务的关键:(1)保护进入中断时的状态。

堆栈有保护断点和保护现场的功能使用PUSH,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。

注:中断程序自动保护PC,对其做入栈操作(2)用POP指令恢复中断时的现场。

(先进后出)3.中断控制原理:中断控制是提供给用户使用的中断控制手段。

实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。

TCON格式SCON格式三、实验内容参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为下降沿触发时,LED灯全亮。

中断结束后LED继续接上次状态进行跑马灯闪烁。

注:注意保护现场。

且编译器不支持工作组寄存器名(R0-R7)入栈,需要对栈地址操作。

例:PUSH 06H ;把R6入栈等同 PHSHU R6四、实验步骤1.使用单片机最小应用系统1模块,P1接发光二极管,INTO接单次脉冲输出端。

2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加**.ASM源程序,进行编译,直到编译无误。

4.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。

五、参考程序ORG 0000HLJMP STARTORG 0030HSTART: MOV A, #0FEHOUTPUT: MOV P1,ARL AACALL DELAYLJMP OUTPUTDELAY: MOV R6,#0MOV R7,#0MOV R5#5DELAYLOOP: ;延时程序DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPDJNZ R5,DELAYLOOP RETEND。

第4讲AVR单片机中断

第4讲AVR单片机中断
16
Bit 0 – IVCE: 中断向量修改使能 改变IVSEL 时IVCE 必须置位.在IVCE 或IVSEL 写操作之后4 个时钟周期, IVCE 被硬件清零.如前面所述,置位IVCE 将禁止中 断
17
12
13
14
15
通用中断控制寄存器- GICR
Bit 1 – IVSEL: 中断向量选择 当IVSEL 为"0" 时,中断向量位于Flash 存储器的起始地址;当 IVSEL 为"1" 时,中断向量转移到Boot 区的起始地址.实际的 Boot 区起始地址由熔丝位BOOTSZ 确定.为了防止无意识地改 变中断向量表,修改IVSEL 时需要遵照如下过程: 1. 置位中断向量修改使能位IVCE 2. 在紧接的4 个时钟周期里将需要的数据写入IVSEL,同时对 IVCE 写"0"
11
AVR 退出中断后总是回到主程序并至少执 行一条指令才可以去执行其他被挂起的中 断.要注意的是,进入中断服务程序时状态寄 存器不会自动保存,中断返回时也不会自动 恢复.这些工作必须由用户通过软件来完成. 使用CLI 指令来禁止中断时,中断禁止立即 生效.没有中断可以在执行CLI 指令后发生, 即使它是在执行CLI 指令的同时发生的.下 面的例子说明了如何在写EEPROM 时使用 这个指令来防止中断发生以避免对 EEPROM 内容的可能破坏.
3
#include <mega16.h> flash char
led_7[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x 7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; char counter; // INT0 中断服务程序 interrupt [EXT_INT0] void ext_int0_isr<void> { if <++counter>=16> counter = 0; } // INT1 中断服务程序 interrupt [EXT_INT1] void ext_int1_isr<void>

AVR学习笔记二、基本输入和外部中断实验

AVR学习笔记二、基本输入和外部中断实验

A VR学习笔记二、基本输入和外部中断实验-------基于LT_Mini_M162.1 利用按键控制发光二极管的亮灭2.1.1 实例功能在“点亮发光二极管”和“让发光二极管动起来”这两个例子中,都是通过单片机程序来控制发光二极管的亮灭。

如果想要控制发光二极管的亮灭,只有通过打开或者关闭电源来实现控制。

那么怎样实现人工参与控制呢?在有些应用场合,需要单片机对人工的开关信号作出相应的响应和处理,通过控制电源的通断会影响到单片机系统中的其他功能,所以通过控制电源的方法并不明智。

能不能通过按动一个按键来实现发光二极管的亮灭呢?当然可以,前面已经讲过,A VR单片机的I/O口都是双向的,也就是既能当作输出控制端口,也能当作输入检测端口。

既然我们可以通过控制端口输出不同的高低电平使发光二极管实现点亮和熄灭;那么为什么不能通过监测端口输入电平的状态来进行相应的处理呢。

在本例中,通过介绍利用按键开关控制发光二极管的亮灭来了解A VR单片机的端口检测外部信号的功能和方法。

本例中有3个功能模块,描述如下:●单片机系统:检测外界的按键开关信号,根据按键的开关状态控制发光二极管的亮灭状态。

●外围电路:首先是产生信号的按键电路,包括对按键去抖动电路的介绍;然后是发光二极管的控制电路。

●软件程序:通过读取AVR单片机相应端口的状态,编写相应的程序控制发光二极管的亮灭。

本例的目的在于希望读者完成本例后,能完成相关电路的设计和相应程序的编写,从而掌握以下知识点:◆了解AVR单片机端口输入功能,掌握使用AVR单片机端口输入功能检测外部信号的原理。

◆熟悉单片机端口输入输出功能的综合使用。

◆掌握AVR单片机按键的硬件去抖动的电路设计和原理。

◆掌握AVR单片机端口输入输出程序的编写。

◆掌握AVR单片机按键软件去抖动功能的实现。

2.1.2 器件和原理本例主要介绍A VR单片机外围电路中按键去抖电路的设计,分别介绍相应的软件和硬件解决方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
典型的硬件去抖动电路如图2.1.4,74LS02按键输出端口通过/Q端接入单片机的I/O口,74LS02构成一个R-S触发器电路实现按键的消抖。
●软件消抖的原理和实现
软件消抖的基本原理是在软件中对按键进行两次检测确认,记载第一次检测到按键按下后,间隔10ms左右再次检测按键是否按下,只有在两次都检测到按键按下时才最终确认有键按下,这样就避开了按键的抖动时间,从而消除了抖动的影响。
图2.1.1按键开关图2.1.2按键闭合断开时的电压波动示意图
(2)按键去抖动的方法和原理
为了去除按键的抖动,保证单片机对按键的一次输入只响应一次,可以采用硬件和软件两种方法:硬件电路去抖动是在外围电路中加入去抖动电路(如R-S触发器);软件去抖动是在程序中加入延时程序以跳过抖动时间,等待信号稳定后再次判断按键的输入电平,如果信号电平保持不变,则可以确认一次按键按下。
在有些应用场合,需要单片机对人工的开关信号作出相应的响应和处理,通过控制电源的通断会影响到单片机系统中的其他功能,所以通过控制电源的方法并不明智。能不能通过按动一个按键来实现发光二极管的亮灭呢?
当然可以,前面已经讲过,AVR单片机的I/O口都是双向的,也就是既能当作输出控制端口,也能当作输入检测端口。既然我们可以通过控制端口输出不同的高低电平使发光二极管实现点亮和熄灭;那么为什么不能通过监测端口输入电平的状态来进行相应的处理呢。
●D1-D8:发光二极管,指示按键状态。
●RP1:阻值为330Ω的排阻,限流电阻。
● K3、K4:按键,当按键按下时,与按键连接的单片机端口的电平发生变化。
图2.1.5按键电路图2.1.6 LED电路
3、管脚连接
在这里列出和本例相关的、关键部分的单片机端口与外围电路的连接。
● PB0-PB7:连接8个发光二极管LED1-LED8,控制发光二极管的亮灭。
图2.1.474LS02实现的硬件消抖电路
在按键接口软件的设计中,除了要考虑按键消抖外,一般还要判别按键的释放,只有检测到按键释放后,才能确定为一次完整的按键动作。
通用的案件检测程序如下:
Keyscan()
{
if(!key)//判断按键是否按下,key=0表示按键按下
{
delayms(20);//延时20ms。避开按键抖动时间
1单片机的中断系统
关于中断的概念可以在一般的教材中找到,本例中只做简要叙述,不再详细说明。
中断属于一种对事件的实时处理过程。中断源可能随时停止单片机当前正在处理的工作,转而去处理中断事件,待中断时间处理完毕之后,再返回原来工作的断点处,继续原来的工作。
对于单片机的中断系统,需要了解这几个概念:中断源、中断信号、中断向量、中断优先级、中断嵌套、中断控制(屏蔽)、中断响应条件、中断响应过程(中断服务程序)。
◆ 掌握AVR单片机按键的硬件去抖动的电路设计和原理。
◆ 掌握AVR单片机端口输入输出程序的编写。
◆ 掌握AVR单片机按键软件去抖动功能的实现。
2.1.2器件和原理
本例主要介绍AVR单片机外围电路中按键去抖电路的设计,分别介绍相应的软件和硬件解决方案。然后利用C语言编写通过按键控制发光二极管亮灭状态的程序。
●中断向量
中断源发出的请求信号被CPU检测到之后,如果单片机的中断控制系统允许响应中断,CPU会自动转移,执行一个固定的程序空间地址中的指令。这个固定的地址称作中断入口地址,也叫做中断向量。中断入口地址往往是由单片机内部硬件决定的。
2、主要变量和函数说明

3、使用WINAVR开发环境,makefile文件同前面的例子,直接复制到本实例程序的文件夹中即可。
4、程序代码
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
PORTB = 0X00; //输出低,LED全部熄灭
● PD6、PD7:连接按键K3、K4,检测两个按键的状态。
2.1.4程序设计
1、程序功能
● 按键软件消抖
本例中采用软件消抖的方法,在程序中加入软件延时,去除按键的抖动。
●按键检测
通过将单片机的PD6、PD7口设置为输入状态,同时使能这两个口的内部上拉电阻(因为这两个口在按键没有按下时处于悬空状态,易受外界干扰,所以必须将其内部上来电阻使能,使其平时处于高电平状态),检测按键是否按下。
图2.1.3R-S触发器的基本原理
在启动过程中,/S端一旦下降到开门电平,Q端电平就会上升,反馈到门B的输入端,此时门B在/R的低电平作用下处于导通状态,/Q输出高电平反馈到A的输入端,如果这时/S端电压有一个高的跳动,则A门截止,Q段输出低电平,这个低电平反馈到A的输入端,使A门导通,Q端电平为高,这样就保证了Q端电平的稳定,从而消除按键的抖动。
●软件程序:通过读取AVR单片机相应端口的状态,编写相应的程序控制发光二极管的亮灭。
本例的目的在于希望读者完成本例后,能完成相关电路的设计和相应程序的编写,从而掌握以下知识点:
◆ 了解AVR单片机端口输入功能,掌握使用AVR单片机端口输入功能检测外部信号的原理。
◆ 熟悉单片机端口输入输出功能的综合使用。
{
_delay_ms(20); //判断按键按下,延时一会再判断是否按下,以消除干扰
if(!(PIND & (1 << PD7))) //按键真正按下后,进行相应处理
{
PORTB = 0Xaa;//
while(!(PIND & (1 << PD7))); //
//PORTB = 0Xaa;//
}
}
}
if(!key)//再次判断按键是否按下,
{
…//按键按下的处理程序
}
}
While(!key); //判断按键是否放开,key=1表示按键释放,退出按键处理函数
}
2.1.3电路
本例中的电路如图2.1.5和2.1.6所示。
1、电路原理
图2.1.5是按键检测电路,两个按键分别连接到单片机的PD6、PD7管脚,AVR单片机在程序里把PD6、PD7设置为带上拉的端口,这样按键没有按下时,PD6、PD7处于高电平状态,当按键按下时PD6、PD7被连接到地,电平状态变为低电平,程序中检测到PD6、PD7的电平为低电平时,就可以认为按键被按下了。
在本例中,通过介绍利用按键开关控制发光二极管的亮灭来了解AVR单片机的端口检测外部信号的功能和方法。
本例中有3个功能模块,描述如下:
● 单片机系统:检测外界的按键开关信号,根据按键的开关状态控制发光二极管的亮灭状态。
● 外围电路:首先是产生信号的按键电路,包括对按键去抖动电路的介绍;然后是发光二极管的控制电路。
本例中三个功能模块描述如下:
● 单片机系统:对按键事件产生的中断时间作出响应,并在数码管上显示按键按下的次数。
● 外围电路:通过将按键连接到单片机的外部中断检测端口,实现中断产生电路,数码管显示电路用于指示按键的按下状态。
● 软件程序:编写AVR单片机的外部中断服务程序,从而实现对中断事件的响应。
2.2.2器件和原理
●中断源
中断源是指能够向单片机发出中断请求信号的部件和设备。对于单片机来讲,往往存在多个中断源。中断源一般可分为内部中断源和外部中断源。
单片机内部集成的许多功能模块,如定时器、串行通讯口、模/数转换器等,它们在正常工作时往往无需CPU参与,而当处于某种状态或达到某个规定值需要程序控制时,会通过发出中断请求信号通知CPU。这一类的中断源位于单片机内部,称作内部中断源。内部中断源在中断条件成立时,一般通过片内硬件会自动产生中断请求信号,无须用户介入,使用方便。内部中断是CPU管理片内资源的一种高效的途径。
AVR学习笔记二、基本输入和外部中断实验
-------基于LT_Mini_M16
2.1利用按键控制发光二极管的亮灭
2.1.1实例功能
在“点亮发光二极管”和“让发光二极管动起来”这两个例子中,都是通过单片机程序来控制发光二极管的亮灭。如果想要控制发光二极管的亮灭,只有通过打开或者关闭电源来实现控制。那么怎样实现人工参与控制呢?
DDRB = 0Xff; //PB端口置为输出
PORTD = 0Xc0; //一定要使能上拉电阻,否则会有干扰
DDRD = 0X3F; //K3、K4按键(PD6、PD7)设置为输入端口
while(1)
{
if(!(PIND & (1 << PD6))) //判断按键是否按下
{
_delay_ms(20); //判断按键按下,延时一会再判断是否按下,以消除干扰
●LED的亮灭控制
通过将单片机的PB0-PB7口设置为输出状态,根据K3、K4两个按键的按下情况,控制不同的发光二极管点亮或熄灭。
● AVR单片机端口输入状态的读取
AVR单片机端口配备有3个寄存器,分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。当I/O工作在输入方式,要读取外部引脚上的电平时,应读取PINxn的值,而不是PORTxn的值。
1、按键的去抖动电路
(1)按键的响应过程
我们日常所说的按键,实际上是一个机械开关,本实例所用的按键外观如图2.1.1所示。理想的按键的闭合和断开时,接触点的电压应该立即变高或者变低,但是由于机械触点的弹性以及按键按动时电压突变等原因,在触点闭合或断开的瞬间会出现电压抖动现象,如图2.1.2所示。在发生抖动的时间一般在5-10ms。
图2.1.6为LED显示电路,当按键K3被按下时,D1、D3、D5、D7点亮,D2、D4、D6、D8熄灭。当按键K4被按下时,D1、D3、D5、D7熄灭,D2、D4、D6、D8点亮。
2、元器件选择
在这里列出和本例相关的、关键部分的器件名称及其在电路中的作用。
相关文档
最新文档