相关寄存器:DDRD,DDRB方向寄存器。PORTB,PORTD。
PINB(PINA,PINC,PIND)数据输入寄存器。当方向寄存器设置为输入时,此时PINB起作用,用来保存当前引脚的状态
说明:利用按键来改变B0口的状态。然后通过数据输入寄存器,来读取当前引脚的状态。
51单片机中的IO口是不分为输入和输出的。所以直接读取引脚的状态即可。而在AVR中,首先需要设置为输入状态。然后设置数据寄存器为高--就是为了使能内部的上拉电阻。
#include
void gpio_init(void)//端口初始化
{
DDRD=0xff;//将D0口设置为输出
DDRB=0xfe;//11111110将B0口设置为输入
PORTB=0xff;//B0口的上拉使能,端口状态在外部不改变时始终处于高
DDRD=0xff;//初始化D端口都为高
}
void main(void)
{
gpio_init();//端口的初始化
while(1)
{
if(!(PINB&0x01))//判断D0口的状态,如果按键按下,输入为低
{
PORTD=0xfe;//点亮LED
}
while(!(PINB&0x01));//判断按键是否松开。没松开则停留在此循环中。
PORTD=0xff;//当松开时灭LED
}
}