查看: 1359|回复: 0

【S08P闯关赛经验分享】+按键

[复制链接]
  • TA的每日心情
    开心
    2024-3-22 17:30
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    5

    主题

    87

    帖子

    1

    高级会员

    Rank: 4

    积分
    920
    最后登录
    2024-4-18
    发表于 2020-7-9 19:12:55 | 显示全部楼层 |阅读模式
          测试一下按键,也遇到了xyzml坛友同样的问题,按键失灵,SW3按下无反应,万用表测按键已经失效,两个都换掉了。
    微信图片_20200709191134.jpg

    /*
    * key.h
    *
    *  Created on: Jul 9, 2020
    *      Author: Haifeng
    */

    #ifndef KEY_H_
    #define KEY_H_

    #define        KEY_S2Init()        PORT_Init(PTD, 4, 1, PORT_MODE_IN_PULL)
    #define        KEY_S2Read()        PORT_PinRead(PTD, 4)

    #define        KEY_S3Init()        PORT_Init(PTD, 5, 1, PORT_MODE_IN_PULL)
    #define        KEY_S3Read()        PORT_PinRead(PTD, 5)

    #define        KEY_Init()        do{        \
            KEY_S2Init();                \
            KEY_S3Init();                \
    }while(0)

    #endif /* KEY_H_ */


    #include <hidef.h> /* for EnableInterrupts macro */
    #include "derivative.h" /* include peripheral declarations */

    unsigned char key_code,key_tri,key_cnt;

    void        DELAY_Ms(int tMs)
    {
            int tUs;
            while(tMs--)
            {
                    tUs = 250;
                    while(tUs --);
            }
    }

    void        KEY_Read(void)
    {
            unsigned char key_value = 0;
                           
            if(KEY_S2Read() == 0)
            {
                    key_value |= 0x01;
            }       
           
            if(KEY_S3Read() == 0)
            {
                    key_value |= 0x02;
            }       
           
            if(key_code != key_value)
            {
                    key_code = key_value;
                    key_cnt = 0;
            }
            else if(key_cnt < 20)
            {
                    key_cnt ++;
                    if((key_cnt == 10) &&
                       (key_code != 0))
                    {
                            key_tri = 1;
                    }
            }
           
    }


    void main(void)
    {
            unsigned char i = 0x01;
            key_code = 0;
            key_tri = 0;
           
            WDT_Init(10000);
            DisableInterrupts;
      /* include your code here */
            LED_Init();
            KEY_Init();

            for(;;)
            {
                    WDT_Clr();        /* feeds the dog */
                    KEY_Read();
                    if(key_tri != 0)
                    {
                            key_tri = 0;
                            if(key_code & 0x01) i++;
                            else if(key_code & 0x02) i--;
                    }
                    LED_Display(~i);
                    DELAY_Ms(10);
            } /* loop forever */
      /* please make sure that you never leave main */
    }


    今天天气不错!签到!
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 20:15 , Processed in 0.112479 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表