本帖最后由 强仔00001 于 2015-9-8 00:51 编辑
点完LED
后,我就来捣鼓下板子的按键,最小系统上有两个按键,分别是复位键和一个普通按键。我们只需要把按键配置成输入模式就可以做个简单的按键程序。 我们还是理清下思路:
(1)设置IO口为数字端口。
(2)把IO设置为上拉模式(或者下拉模式)。
(3)获取IO口的值,编写程序实现自己的功能。
首先我们先来看看电路图按键所在的管脚:
看原理图可以知道我们的按键是在P11管脚上,按键是加了上拉电阻。
第一设置IO模式通过PMC1的第2位置0就可以把IO设置为数字端口模式。
接下来我们把IO口设置为上拉模式,这样我端口默认的输入值就是1。而设置为下拉模式是相对的,这样端口默认的输入值就是0。
以下两个截图就是上拉和下拉寄存器的配置方法:
接着我们可以通过直接读取P1端口的值就可以获取P11的输入值了。
这次就写了简单的按键程序,用按键来控制LED的亮灭,按下就亮,否则就是灭。
代码如下:
- #include "userdefine.h"
- void GPIO_Init()
- {
- PMC1 &= 0xFD; /* 设置 P11 为数值端口 */
-
- PU1 |= 0x02; /* 设置P11为上拉 */
- PM1 |= 0x02; /* 设置 P11 为输入模式 */
- }
- void LED_Init(void)
- {
- PMC0 &= 0xFD; /* 设置 P01 为数值端口 */
-
- //PU0 |= 0x02;
- //PD0 |= 0x02;
- PM0 &= 0xFD; /* 设置 P01 为输出模式 */
- }
- void LED_On(void)
- {
- P0 &= 0xFD;
- }
- void LED_Off(void)
- {
- P0 |= 0x02;
- }
- int flag;
- void main(void)
- {
- GPIO_Init();
- LED_Init();
-
- while (1)
- {
- /**/
- flag = ((P1 & 0x02) >> 1);
- if(0 == ((P1 & 0x02) >> 1)) //按键是按下
- {
- LED_On();
- }
- if(1 == ((P1 & 0x02) >> 1))//按键没有按下
- {
- LED_Off();
- }
-
- }
- }
复制代码
demo.zip
(96.63 KB, 下载次数: 8)