打印
[技术问答]

N76E003 按键控制LED

[复制链接]
2891|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模式电路。

使用特权

评论回复
5
幸福小强| | 2019-10-26 23:37 | 只看该作者
来学习一下楼主的技术。

使用特权

评论回复
6
zhuomuniao110| | 2019-10-26 23:51 | 只看该作者
这个例子不错,看懂了。

使用特权

评论回复
7
zhuomuniao110| | 2019-10-26 23:51 | 只看该作者
还可以按键控制修改PWM占空比,实现曾亮,变暗操作。

使用特权

评论回复
8
wahahaheihei| | 2019-10-29 00:38 | 只看该作者
是的,新手需要摸索摸索。

使用特权

评论回复
9
dongnanxibei| | 2019-10-31 12:42 | 只看该作者
比较简洁的参考代码。

使用特权

评论回复
10
dongnanxibei| | 2019-10-31 12:43 | 只看该作者
注释的明白,MARK

使用特权

评论回复
11
heisexingqisi| | 2019-10-31 18:49 | 只看该作者
读取端口电平。

使用特权

评论回复
12
晨sunshine| | 2021-8-17 19:53 | 只看该作者
楼主大大,您好!请问下,我用003的开发板学习,我按键必须要开启串口InitialUART0_Timer3(115200);才有效?

使用特权

评论回复
13
晨sunshine| | 2021-8-17 20:37 | 只看该作者
本帖最后由 晨sunshine 于 2021-8-18 09:37 编辑

找到原因了,是串口注释了,然后printf 有遗漏没有注。尴尬了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝