/*刚刚开始学习AVR单片机,
*把学习到的知识和大家分享。有错误或者更好的写法,欢迎交流。
*方便新手学习,我都尽可能的注释
*/
#include
#include
#include
#define LED_DDR DDRA //LED接PA0~PA7
#define LED_P0RT PORTA //指示灯
/*********************************
*按键定义
*******************************/
#define K1 PINC & (1<
#define K4 PINC & (1 << PC3) //位读取 PC3
#define K5 PINC & (1 << PC4) //位读取 PC4
#define K6 PINC & (1 << PC5) //位读取 PC5
#define K7 PINC & (1 << PC6) //位读取 PC6
#define K8 PINC & (1 << PC7) //位读取 PC7
unsigned char key_s,biaozhi;
void port_init(void) //IO端口初始化
{
DDRC=0xFF;
PORTC=0xff;
DDRB=0xff;
PORTB=0xff;
DDRD=0xff;
PORTD=0xff;
DDRA=0xff;
PORTA=0xff;
}
#pragma interrupt_handler timer1_ovf_isr:15 //dingsh中断函数
void timer1_ovf_isr()
{
TCNT1H=0XFB; //赋初值定义0.01s
TCNT1L=0X1D;
/***************************按键程序**************************************/
if(((K1)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}} //按键按下 key_s开始++,起到延时给按键去抖的作用
if(((K2)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}}
if(((K3)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}}
if(((K4)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}}
if(((K5)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}}
if(((K6)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}}
if(((K7)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}}
if(((K8)==0)&&(biaozhi==0)){key_s++;if(key_s>=2){biaozhi=1;key_s=0;a=~a;}}
if(((K1)!=0)&&((K2)!=0)&&((K3)!=0)&&((K4)!=0)&&((K5)!=0)&&((K6)!=0)&&((K7)!=0)&&((K8)!=0))
{biaozhi=0;key_s=0;} //按键判弹起
if(key_s>=4){key_s=0;biaozhi=1;}
}
void init_timer1() // 定时器1初始化
{
TCCR1B=0X03; //64分频
TIFR=0X01;
TIMSK=0X04;
TCNT1H=0XFB; //10ms
TCNT1L=0X1D;
SREG|=BIT(7);
}
void main()
{
port_init(); //I/O初始化函数
init_timer1();//定时器初始化函数
while(1)
{
if(a==0xff){LED_P0RT=0x00;} //PA口全部输出低
if(a==0x00){LED_P0RT=0xff;} //PA口全部输出低
}
}
上一篇:Atmega16单片机实验:DS18B20和ad采集显示程序
下一篇:avr单片机+RFID的门禁系统
推荐阅读最新更新时间:2024-11-01 23:58
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- 9月29日直播回顾:安森美半导体针对物联网的先进图像传感器解决方案(含视频、演讲...
- 求指教。。 MSP430G2553利用外围电路做ADC采集,采集电压
- 运放驱动容性负载放电回路
- 推荐一本手把手教你嵌入式的书
- 西部安防展/美国安防展/2009美国安防展/安防展/ISC安防展/美国安防展
- 用430每隔1分钟测一次18b20的温度,同时保证没10ms产生一个脉宽为5us的脉冲
- NVMe与AHCI对比-Introduction
- 电源保险丝老是烧断???
- 请问一下:我想在pda上进行编程实现rs232串口通讯,采用c#开发工具,请问是在wince下好呢还是在Windows Mobile下好?谢谢
- 怎么利用F155实现计数功能