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---------------------------------