[Atmel] ATmega328p Xplained Mini (3) 按键中断

[复制链接]
2304|11
 楼主| ddllxxrr 发表于 2015-1-12 22:34 | 显示全部楼层 |阅读模式
ATmega328p Xplained Mini上有一个按键和一个LED,具体在哪个管脚如下图所示:




而要用中断来控制LED,必须了解以下寄存器:

EICRA - 外部中断控制寄存器A
比特3,2 - 外部中断1控制
ISC11 ISC10 Description
0 0 The low level of INT1 generates an interrupt request.
0 1 Any logical change on INT1 generates an interrupt request.
1 0 The falling edge of INT1 generates an interrupt request.
1 1 The rising edge of INT1 generates an interrupt request.
比特1,2 - 外部中断0控制
ISC01 ISC00 Description
0 0 The low level of INT0 generates an interrupt request.
0 1 Any logical change on INT0 generates an interrupt request.
1 0 The falling edge of INT0 generates an interrupt request.
1 1 The rising edge of INT0 generates an interrupt request.
由于开发板是按键接高电平的,所以我选下降沿触发。

EIMSK - 外部中断屏蔽寄存器
比特1:外部中断请求1允许
比特2:外部中断请求2允许

PCICR - 管脚改变中断控制寄存器
比特2:管脚改变中断允许寄存器2  23-16脚
比特1: 管脚改变中断允许寄存器1  14-8脚
比特0:管脚改变中断允许寄存器0  7-0脚


PCMSK0 - 管脚改变屏蔽寄存器0
PCINT7 到 PCINT0哪个管脚中断就设为1


具体程序如下:


  1. /*
  2. * GccApplication3.c
  3. *
  4. * Created: 2015/1/12 星期一 19:51:48
  5. *  Author: Administrator
  6. */

  7. #define F_CPU 16000000UL

  8. #include <avr/io.h>
  9. #include <util/delay.h>

  10. void PCINT0_vect(void)
  11. {
  12.     PORTB |= 0x20;
  13.         _delay_ms(1000);
  14. }

  15. int main(void)
  16. {
  17.     PCICR = 0x01;
  18.     PCMSK0 = 0x80;
  19.     EICRA = 0x0A;
  20.     EIMSK = 0x03;
  21.     PCICR = 0x01;
  22.     PCMSK0 = 0x80;
  23.        
  24.         DDRB = 0x20;
  25.        
  26.         SREG |= 0x80;
  27.        
  28.        
  29.         while(1)
  30.     {
  31.         //TODO:: Please write your application code
  32.     }
  33. }





当我按下按键时,LED亮了,正明运行正常。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
JY-DX-JY 发表于 2015-1-13 08:47 | 显示全部楼层
版主肯定ATMEL的片子用的不错。
huangxz 发表于 2015-1-13 09:34 | 显示全部楼层
这个是AVR8的,还是AVR32的?
 楼主| ddllxxrr 发表于 2015-1-13 11:17 | 显示全部楼层
huangxz 发表于 2015-1-13 09:34
这个是AVR8的,还是AVR32的?

AVR8的, 现在叫新AVR8好像
123654789 发表于 2015-1-13 11:28 | 显示全部楼层
AVR系列
频率不够STM32F103高
RAM不够STM32F103大
ROM不够STM32F103大
价格不够STM32F103便宜
就限制了他的发展了
 楼主| ddllxxrr 发表于 2015-1-13 14:05 | 显示全部楼层
123654789 发表于 2015-1-13 11:28
AVR系列
频率不够STM32F103高
RAM不够STM32F103大

呵呵,有些东东是看别的参数,我司用的无线发射模块就是AVR的MEGA8的,根据各种实际需要吧。
123654789 发表于 2015-1-13 14:12 | 显示全部楼层
ddllxxrr 发表于 2015-1-13 14:05
呵呵,有些东东是看别的参数,我司用的无线发射模块就是AVR的MEGA8的,根据各种实际需要吧。
...

使用MEGA8能做的事情,还不如使用STC12C5A08单片机
123654789 发表于 2015-1-13 14:15 | 显示全部楼层
本来就是想找高速大容量的片子
bowei181 发表于 2015-1-13 14:22 | 显示全部楼层
成本合适吗
huangxz 发表于 2015-1-13 15:33 | 显示全部楼层
123654789 发表于 2015-1-13 14:12
使用MEGA8能做的事情,还不如使用STC12C5A08单片机

stc可靠性不敢恭维,avr的强壮是见识过的。
dgjydq 发表于 2015-1-13 20:23 | 显示全部楼层
版主大人,你给ATMEL公司提些建议吧,将芯片的文档汉化,这样就不用你解说了
 楼主| ddllxxrr 发表于 2015-1-13 20:37 | 显示全部楼层
本帖最后由 ddllxxrr 于 2015-1-13 20:43 编辑
dgjydq 发表于 2015-1-13 20:23
版主大人,你给ATMEL公司提些建议吧,将芯片的文档汉化,这样就不用你解说了 ...

呵呵,是啊。不用我说,Atmel清楚的很。我想会解决的!但楼上提出来了,我有机会就反应一下哈!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2404

主题

7002

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部