您的位置:首页单片机AVR单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

AVR按键检测实验程序

[日期:2008-06-06 ] [来源:NET 作者:佚名] [字体: (投递新闻)

IDE                 :CVAVR 
Chip type           : ATmega8L
Program type        : Application
Clock frequency     : 8.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

//按钮检测实验 每按一下按钮led的显示状态就改变一次
//小灯是低电平点亮
//硬件操作:将PB处的短路帽0到7都插上,将PD处的短路帽I1插上

#i nclude <mega8.h>   //头文件
#i nclude <delay.h>   //引用系统自带的延时函数
#define u8  unsigned char
#define u16 unsigned int

u8 n_temp=0x55;

void init(void) //初始化函数
{
      PORTB=0x55;
      DDRB=0xFF;     
}

u8 anniu(void)  //检测按钮按下,如果消抖后按钮仍然是按下的,则返回1;
{
      if(PIND.3==0)
      {
            delay_ms(95);     //95ms的消抖时间
            if(PIND.3==0)
            {  
                  return 1;     
            }
            else
            {
                  return 0;
            }
      }
      else
      {
            return 0;
      }
         
}

void xianshi(void)
{
      if(anniu()==1&&n_temp==0x55)   //当按钮按下有效并且n_temp==0x55时
      {
            PORTB=0X55;  //led显示
            n_temp=0xAA; //下次再按下按钮的时候显示0XAA
      }  
     
      if(anniu()==1&&n_temp==0xAA)  //当按钮按下有效并且n_temp==0xAA时
      {
            PORTB=0XAA;  //led显示
            n_temp=0x55; //下次再按下按钮的时候显示0X55
      }
}

void main(void) //主函数
{
      init();     //调用初始化数   
      while (1)   //循环
      {
         xianshi();  //调用显示函数
      }
}
//-----------------------END--------------------------------- 

阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐