使用AVR的外部中断INT1检测PD3Key,如果有按键按下,则唤醒休眠的MCU,并使它的PB口的LED做加1指示。
#include
#include "D:ICC_HCmmICC.H"
#define DISP_DDR DDRB
#define DISP_PORT PORTB
#define IN_PD3 cbi(DDRD,3) //PD3
#define SET_PD3 sbi(PORTD,3)
#define GET_PD3 gbi(PIND,3)
/*--------------------------------------------------------------------
程序名称:外部中断服务程序
程序功能:
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
#pragma interrupt_handler int1_isr:3
void int1_isr(void)
{
GICR &= 0b01111111; // dISAble int1 interrupt
DISP_PORT++; // 显示口指示加1,指示被按次数
delay50ms(4);
GICR |= 0b10000000; // enable int1 interrupt
}
/*--------------------------------------------------------------------
程序名称:外部中断初始化程序
程序功能:
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
void int1_init()
{
IN_PD3; // set PD3/INT1 as input
SET_PD3; // set PD3/INT1 as output,high level,avoid triggering
MCUCR |= 0b11110011; // set PD3/INT1 as low level active
GICR |= 0b10000000; // enable global interrupt
SEI(); // enable external interrupt
}
/*--------------------------------------------------------------------
程序名称:
程序功能:
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
void main(void)
{
DISP_DDR = 0xFF;
DISP_PORT = 0x00;
int1_init();
asm("sleep"); // set mcu as sleep modle
while(1);
}
关键字:AVR 外部中断 INT
引用地址:
AVR的外部中断INT示例程
推荐阅读最新更新时间:2024-03-16 15:49
AVR驱动3.2英寸tft LCD(ssd1289)
管脚连接 D0 PA0 D5 PA5 D10 PD2 D15 PD7 D1 PA1 D6 PA6 D11 PD3 CS PB0 D2 PA2 D7 PA7 D12 PD4 RS PB1 D3 PA3 D8 PD0 D13 PD5 WR PB2 D4 PA4 D9 PD1 D14 PD6 RD PB3 RESET PB4 #inc
[单片机]
基于AVR单片机并采用分立元件构成的125 kHz RFID
0 引言 无线射频识别(Radio Frequency Identification,RFID)是利用感应、电磁场或电磁波为传输手段,完成非接触式双向通信、获取相关数据的一种自动识别技术。该技术完成识别工作时无须人工干预,易于实现自动化且不易损坏,可识别高速运动物体并可同时识别多个射频卡,操作快捷方便,已经得到了广泛的应用。 目前存在的一些读卡器,都需要读卡芯片作为基站,成本较高。本文介绍了一种采用分立元件构成的125 kHz RFID阅读器,电路结构简单,成本极低,用于读取EM4100型ID卡。 1 RFID系统的分类 RFID系统的分类方法有很多,在通常应用中都是根据频率来分,根据不同的工作频率,可将其分
[单片机]
avr单片机+12864液晶动画显示
折腾了3天12864液晶,终于有了进展。自己用所学知识完成了一些特殊功能。现在,12864可以完成在指定位置写入文字,绘制128*64的图形,绘制Wide*Height的图形(宽度必须为8的倍数,因为行的数据形式为字节)等。 下面将源代码贴上: /* * _12864.c * * Created: 2011/7/30 23:16:04 * Author: YIN */ #include avr/io.h #include avr/pgmspace.h // #include QQ.h // #include chiken.h #include TSJ.h #define uint unsigned int
[单片机]
基于AVR的智能教学无人车控制系统设计
智能教学无人车是一种履带式移动机器人,目前市场上的无人车大多采用单片机对其进行控制,其优点是体积小,成本低,结构简单,但仅仅依靠单片机远不能使无人车在复杂多变的工作环境中进行及时调整,并且极大地限制了其功能的扩展。基于此不足,本设计主要利用PC机与无人车的无线通信,使无人车在PC机无线指令下完成前进、后退、转弯、打击、生命值显示、调速和自动行驶等功能,并通过车载摄像头实时获取无人车所处环境信息,实现了远程监控。在执行任务时,如遭遇敌方车辆干扰通信,无人车在抵御干扰信号同时进行敌我识别,适时作出反击。 1 设计原理 教学无人车控制系统由上位机(PC)控制部分和下位机(教学无人车)控制部分组成。系统结构框图如图1所示。
[单片机]
avr单片机proteus仿真第三课:单只数码管
数码管选7SEG-MPX1-CC,共阴极数码管。也就是低电平选通(最右脚),数码管左边8只管脚,从左到右,由低到高,分别接PC0---PC7。 c程序如下: #include avr/io.h #include util/delay.h #define int8u unsigned char #define int16u unsigned int const int8u seg_code ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int main() { int8u i=0; DDRC=0xff; while(1) { PORTC=seg_code ; i=
[单片机]
AVR单片机1602液晶程序
端口定义在程序里面采用8位数据模式,程序测试通过. #include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #pragma data:code uchar shu; const uchar table ={ yinqing@163.com }; const uchar table1 ={ www.51hei.com }; /**********************************/ /************延时子程序************/ /*****************
[单片机]
CRC校验---之avrbootloader
先看一下要用到的函数。 #include util/crc16.h 这是计算单个字节的CRC(旧crc与data生成) static __inline__ uint16_t _crc_xmodem_update(uint16_t __crc, uint8_t __data); 多项式Polynomial: x^16 + x^12 + x^5 + 1 (0x1021) crc初始值Initial value: 0x0 专用于XMODEM通讯协议,等效于C写的 uint16_t crc_xmodem_update (uint16_t crc, uint8_t data) { int i; crc = crc ^ ((ui
[单片机]
基于AVR单片机的服装压力检测系统设计
O 引言 传统服装压力舒适度测试方法主要有:流体压力法、电阻法、石膏法。其中,使用流体水银压力计或水压机来测量服装压力的方法简单直接,但精度较低,尤其动态测量相当困难;电阻测量方法是将电阻应变片传感器插入衣服内,由于服装压力而使应变片变形导致电阻值的变化,从而将压力变化转换为变化的电压信号,通过测量该变化的电压值得出服装压力测试结果。该方法测试精度高,结果稳定,但易受外部条件的影响,且对服装压力进行动态测量比较困难;石膏法主要是通过模型检测实现,这种方法可以测出接近穿衣时的自然压力值,但不能进行连续动作时的服装压力测试,并且石膏模型难以制作。以上各种测试方法受时间和空间的限制,难以适应不同测试条件的需要,且测试数据的精度
[单片机]