2538|4

1291

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

【R7F0C809】小小的按键程序 [复制链接]

本帖最后由 强仔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的亮灭,按下就亮,否则就是灭。
代码如下:
  1. #include "userdefine.h"



  2. void GPIO_Init()
  3. {
  4.     PMC1 &= 0xFD;           /*  设置 P11 为数值端口 */
  5.   
  6.     PU1  |= 0x02;            /*  设置P11为上拉       */
  7.     PM1  |= 0x02;            /* 设置 P11 为输入模式 */
  8. }

  9. void LED_Init(void)
  10. {
  11.     PMC0 &= 0xFD;           /* 设置 P01 为数值端口 */
  12.    
  13.     //PU0  |= 0x02;
  14.     //PD0  |= 0x02;
  15.     PM0  &= 0xFD;            /* 设置 P01 为输出模式 */

  16. }

  17. void LED_On(void)
  18. {
  19.     P0 &= 0xFD;
  20. }

  21. void LED_Off(void)
  22. {
  23.     P0 |= 0x02;
  24. }
  25. int flag;
  26. void main(void)
  27. {
  28.     GPIO_Init();
  29.     LED_Init();
  30.    


  31.     while (1)
  32.     {
  33.             /**/
  34.         flag = ((P1 & 0x02) >> 1);
  35.         if(0 == ((P1 & 0x02) >> 1)) //按键是按下
  36.         {
  37.                 LED_On();
  38.         }
  39.         if(1 == ((P1 & 0x02) >> 1))//按键没有按下
  40.         {
  41.                 LED_Off();
  42.         }
  43.         

  44.     }
  45. }
复制代码
放上个小git图
代码分享: demo.zip (96.63 KB, 下载次数: 8)

demo.zip (96.63 KB, 下载次数: 8)


最新回复

KR好玩  详情 回复 发表于 2015-9-8 18:58
点赞 关注

回复
举报

21

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
灰常详细。。。。支持分享

点评

谢谢支持,现在才开始  详情 回复 发表于 2015-9-8 11:26
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

板凳
 
bellye123 发表于 2015-9-8 08:57
灰常详细。。。。支持分享

谢谢支持,现在才开始
 
 
 

回复

3415

帖子

0

TA的资源

纯净的硅(高级)

4
 
KR好玩

点评

KR是啥??是一个系列??  详情 回复 发表于 2015-9-8 22:49
 
个人签名

So TM what......?

 

 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

5
 

KR是啥??是一个系列??
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表