用擎天柱学习冲哥的8051U试验箱教程(四)——I/o输出输入(第六集)
前言
什么是GPIO?GPIO通用为输入输出端口,简称引脚。引脚状态只有高电平(1)和低电平(0)。
学习
- 引脚的工作模式一共有四种模式,准双向口、推挽输出、高阻输出和开漏输出
- 直流特性,按VDD3.3V来说,如果开启施密特触发最高电压为1.18V,最低电压0.99v
- 任务1:按下P32按钮灯亮,松开按钮灯灭
//=========================================================================//
//任务一、按下P32按钮灯亮,松开按钮灯灭
if (P32==0) //检测按钮是否按下
{
P21 = 0; //P20端口输出0V
}
else
{
P21 = 1;
}
//=========================================================================//
- 任务二:按下P32按钮灯灭,松开按钮灯亮(把P32==0改为==1就行了)
//=========================================================================//
//任务二、按下P32按钮灯灭,松开按钮灯亮
if (P32==1) //检测按钮是否按下
{
P21 = 0; //P20端口输出0V
}
else
{
P21 = 1;
}
//=========================================================================//
任务三相对来说比较复杂一点,首先是需要让电平高低转换,第二防止抖动,还要添加延时。
//=========================================================================//
//任务三、按一下灯亮,按一下灯灭。
if (P32==0) //检测按钮是否按下
{
Delay20us();
if (P32==0)
state=!state;
P21 = state; //P20端口输出0V
printf("state:%d\\r\\n",(int)state);
while (P32==0);
}
//=========================================================================//
-
课后任务1:按一下P32按钮灯亮,按一下P33安灯灯灭
//=========================================================================//
//课后任务1:按一下P32按钮灯亮,按一下P33安灯灯灭
if (P32==0) //检测按钮是否按下
{
Delay20us();
if (P32==0)
P21 = 0; //P20端口输出0V
while (P32==0);
}
if (P33==0) //检测按钮是否按下
{
Delay20us();
if (P33==0)
P21 = 1; //P20端口输出0V
while (P33==0);
}
//=========================================================================//
- 课后任务2:按一下亮一课灯,在按一下亮两颗灯,直到全亮(变量+加法和乘法),这个有点复杂,需要想想怎做比较好!