历史上的今天
今天是:2024年10月21日(星期一)
2019年10月21日 | 控制单个单片机IO的按键+定时器10ms定时器程序
2019-10-21 来源:51hei
/*刚刚开始学习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口全部输出低
}
}
史海拾趣
|
作为一种基于普通电话双绞线的传输技术,ADSL对物理传输线路有很大的依赖性。环路的特征将对ADSL服务的质量和性能级别产生决定性影响。首先在业务开通时会遇到如何选择ADSL线路,某条线路能否开通ADSL业务,可以开通的速率是多少,影响传输质量的原 ...… 查看全部问答> |
|
RTL8309的资料好少,我在网络上有找到通过SMI接口协议来操作寄存器的,能通过主芯片和8309之间的I2C来进行通信,然后控制寄存器吗?… 查看全部问答> |
|
我两台机器的网卡都是百兆网卡,测速软件报告网速最高只有 26 Mbps,为什么呢? 我两台机器的网卡都是百兆网卡,我用测试软件测试了一下网速,能达到 26 Mbps,离 100 Mbps 还有很远呢!这是为什么呢? 我用的是直连网线。 我很关心 怎样能让测试结果非常接近 100 Mbps ? … 查看全部问答> |
|
在config.bib中把CE镜像划分为了4个部分,例如: KERNEL.BIN,DRIVER.BIN,APP.BIN,NK.BIN 这样做以便后期对单个镜像文件升级,现在问题来了,每个BIN文件中的DLL在SLOT0,SLOT1中所占用的地址空间都是在编译器时计算好的。如果后面我的APP.BIN变化 ...… 查看全部问答> |
|
很多价格昂贵的无铅焊台都喜欢强调和炫耀瞬间强大的温度恢复能力,其实这个有一些钻牛角尖的做法,虽然性能是上去了,但焊台本身的总体制造成本以及使用成本也跟着抬高,势必转嫁到最终用户身上。 &nb ...… 查看全部问答> |
|
本来打算用2013做16位AD,然后将数据用SPI传送给149的,做的时候才发现,2013的资料实在是太少了,特别是中文资料,反复看了例程,网上的,TI的,到现在还没有能通讯上,哎,2013这个东东怎么看都和先前的片子不一样,149,133资料多,好用,看来2xxx的麻烦死了. ...… 查看全部问答> |




