目录:
1.独立按键控制LED灯亮灭
2.独立按键控制LED状态
3.独立按键控制LED显示二进制
4.独立按键控制LED移位
1.独立按键控制LED灯亮灭



器件:



可以单独控制一位,不用写八位的方式了

写寄存器,会把这个状态送到lo口 ,如果lo口产生的电平,也会把电平的数据送回给寄存器,直接读寄存器


第一个程序的功能,通过按独立按键的第一个键实现led灯的亮灭:按下灯点亮,松手熄灭



k1和k2同时按才会亮


按位左移

按位右移

按位与、按位或:

按位异或:一样就是0,不一样就是1

按位取反:


2.独立按键控制LED状态
实现按键取反:按下的一瞬间会有抖动,会产生干扰

消斗:两种解决办法
1.硬件的消斗,加一个电路,里面经过触发器等等,把抖动进行过滤
2.通过软件,当按下按键的时候,延迟20毫秒,松开按键的时候,也延迟20毫秒





验证一下是否延迟闪烁:



就实现,按下没反应,松手亮了,再按下没反应,松手灭了

3.独立按键控制LED显示二进制







定义一个变量:
unsigned char 无符号的字符型,是8位的二进制数据,正好跟p2口和其他的寄存器都是一样的,用它来表示一个寄存器










就实现了案例,按一下加一位的效果,按一下逐渐+1
4.独立按键控制LED移位


函数要先定义,放到main的上面

如果放到下面,需要再main上面声明

定义在main函数外面的变量是全局变量,初始值是0,在里面是局部变量,初始值不为0



开始第一个灯不亮,按一下直接第二个灯亮,逐渐后面的亮

给第一个灯一个初始化:

复位后就会亮,逐渐按一下,递增的亮

实现按第二个按键向右移动


按第二个按键,向右移动
