[技术问答] N76E003 按键控制LED

[复制链接]
3323|12
 楼主| lailai518 发表于 2019-10-24 10:55 | 显示全部楼层 |阅读模式
本帖最后由 lailai518 于 2019-10-25 11:34 编辑

#include <stdio.h>
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"

#define  Key1 P01 // STOP 按键  
#define  Key2 P10 // UP 按键  
#define  Key3 P10 // DOWN 按键

#define  Out1 P30  // 1
#define  Out2 P05  // A
#define  Out3 P02  // F

/********************************************************
* 函数名称:GPIO_init
* 输    入:无
* 输    出:无
* 功能描述: i/o口初始化
********************************************************/
void GPIO_init()            // 端口初始化
{

       P01_Quasi_Mode;       // STOP 设置为准双向模式
       P10_Quasi_Mode;       // UP 设置为准双向模式
       P04_Quasi_Mode;       // DOWN 设置为准双向模式
       P30_PushPull_Mode;   // 1 设置为输出推挽模式
       P05_PushPull_Mode;   // A 设置为输出推挽模式
       P02_PushPull_Mode;   // F 设置为输出推挽模式


}

/********************************************************
* 函数名称:Timer0_Delay1ms
* 输    入:无
* 输    出:无
* 功能描述: 延时1MS
********************************************************/
void Timer0_Delay1ms(UINT32 u32CNT)
{
    clr_T0M;                                                       //T0M=0, Timer0 Clock = Fsys/12 定时器0 12分频
    TMOD |= 0x01;                                            //Timer0 is 16-bit mode  16位定器/计数器
    set_TR0;                                                     //Start Timer0  开启
    while (u32CNT != 0)
    {
        TL0 = LOBYTE(TIMER_DIV12_VALUE_1ms);                 //Find  define in "Function_define.h" "TIMER VALUE"
        TH0 = HIBYTE(TIMER_DIV12_VALUE_1ms);                 //高8位和低8位设置相应值
        while (TF0 != 1);                                                        //Check Timer0 Time-Out Flag  等待溢出
        clr_TF0;                                                                    //清除溢出
        u32CNT --;
    }
    clr_TR0;                                                //Stop Timer0  定时器0停止
}

/********************************************************
* 函数名称:MAIN
* 输    入:无
* 输    出:无
* 功能描述: 按键控制IO口输出
********************************************************/
void main (void)
{
        GPIO_init();            // IO端口初始化

        Out1 = 1;
        Out2 = 1;        
        Out3 = 1;               //输高低电平  LED全灭


       while(1)
      {
          if (Key1==0)       // STOP 按键  按下
       {                    Timer0_Delay1ms(100) ; // 延时消抖
           if (Key1==0)         
           {
               Out1 = 1;
               Out2 = 1;        
               Out3 = 1;           //输出高电平  LED全灭
              }           }
          if (Key2==0)         // UP 按键  按下
         {   
             Timer0_Delay1ms(100) ; // 延时消抖
              if (Key2==0)
                   {         
                         Out1 = 1;
                         Out2 = 1;        
                         Out3 = 0;       //OUT3输出低电平  LED亮   
                    }
             }
          if (Key3==0)         // DOWN 按键  按下
          {
              Timer0_Delay1ms(100) ; // 延时消抖
               if (Key2==0)         
                {
                   Out1 = 1;
                   Out2 = 0;          //OUT2输出低电平  LED亮  
                   Out3 = 1;
             }
          }
      }                        
}

新手刚学习,按键控制LED亮灭。走了点弯路,终于点亮了,分享给有需要的朋友
 楼主| lailai518 发表于 2019-10-25 11:17 | 显示全部楼层
已经解决,谢谢各位
heisexingqisi 发表于 2019-10-25 22:20 | 显示全部楼层
非常好,学习学习楼主的 思想。
xuanhuanzi 发表于 2019-10-26 20:53 | 显示全部楼层
好好读手册,理解各种GIPO模式电路。
幸福小强 发表于 2019-10-26 23:37 | 显示全部楼层
来学习一下楼主的技术。
zhuomuniao110 发表于 2019-10-26 23:51 | 显示全部楼层
这个例子不错,看懂了。
zhuomuniao110 发表于 2019-10-26 23:51 | 显示全部楼层
还可以按键控制修改PWM占空比,实现曾亮,变暗操作。
wahahaheihei 发表于 2019-10-29 00:38 | 显示全部楼层
是的,新手需要摸索摸索。
dongnanxibei 发表于 2019-10-31 12:42 | 显示全部楼层
比较简洁的参考代码。
dongnanxibei 发表于 2019-10-31 12:43 | 显示全部楼层
注释的明白,MARK
heisexingqisi 发表于 2019-10-31 18:49 | 显示全部楼层
读取端口电平。
晨sunshine 发表于 2021-8-17 19:53 | 显示全部楼层
楼主大大,您好!请问下,我用003的开发板学习,我按键必须要开启串口InitialUART0_Timer3(115200);才有效?
晨sunshine 发表于 2021-8-17 20:37 | 显示全部楼层
本帖最后由 晨sunshine 于 2021-8-18 09:37 编辑

找到原因了,是串口注释了,然后printf 有遗漏没有注。尴尬了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部