历史上的今天
返回首页

历史上的今天

今天是:2025年05月17日(星期六)

2020年05月17日 | 单片机 MSP430 独立按键检测

2020-05-17 来源:eefocus

可以不用while等待。


定义函数


#define CPU_F ( (double) 8000000)

#define delay_us( x ) __delay_cycles( (long) (CPU_F * (double) x / 1000000.0) )

#define delay_ms( x ) __delay_cycles( (long) (CPU_F * (double) x / 1000.0) )



#define CO 1

#define SET 2

#define UP 3

#define DOWN 4

#define key_01 (P2IN&BIT5)

#define key_02 (P2IN&BIT4)

#define key_03 (P2IN&BIT3)

#define key_04 (P2IN&BIT2)


//初始化按键IO

void initKeyIO(void)

{

    P2DIR &= ~(BIT2 + BIT3 + BIT4 + BIT5); ///引脚方向

    P2REN |= (BIT2 + BIT3 + BIT4 + BIT5); //引脚上拉使能

    P2OUT |= (BIT2 + BIT3 + BIT4 + BIT5); //上拉

}

uchar last = 1;

//四个按键的检测函数

//有按键则返回1 2 3 4

//无按键则返回  0

unsigned char scanKey(void)

{


    if ((key_01 == 0 || key_02 == 0 || key_03 == 0 || key_04 == 0) && (last == 1))

    {

        delay_ms(10); //去抖动

        last = 0;

        if (key_01 == 0)

        {

            return 1;

        }

        else if (key_02 == 0)

        {


            return 2;

        }

        else if (key_03 == 0)

        {


            return 3;

        }

        else if (key_04 == 0)

        {


            return 4;

        }

    }

    if ((key_01) && (key_02))

    {

        if ((key_03) && (key_04))

            last = 1;

    }


    return 0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

使用:


int main(void)

{

   initSystemWdtAndIOAndClock();                  //8MHZ


    while (1)

    {

        delay_ms(10);


        keyValue = scanKey(); //检测按键

        if (keyValue != 0)

        {

            if (keyValue == CO)

            {

            }else if (keyValue == SET)

            {

            }else if (keyValue == UP )

            {

            }else if (keyValue == DOWN )

            {

            }

        }

    }

}

推荐阅读

史海拾趣

Emerson公司的发展小趣事

第二次世界大战期间,Emerson迅速调整生产策略,转产炮弹弹壳等军需品。在随后的五年中,公司共生产出超过1000万支铜制炮弹弹壳,为战争的胜利做出了重要贡献。同时,Emerson还利用战时的技术积累,为战后的电气工业发展奠定了基础。

Advanced Semiconductor, Inc.公司的发展小趣事

随着全球对环保和可持续发展的重视,ASI也积极响应这一趋势,致力于研发更加环保、节能的半导体产品。公司不断投入资源研发低功耗、高性能的芯片技术,为推动绿色电子产业的发展贡献力量。同时,ASI也对未来充满信心,将继续加大在新技术、新应用领域的投入,为半导体行业的未来发展贡献更多的智慧和力量。

这五个故事展示了Advanced Semiconductor, Inc.在电子行业中的发展历程和取得的成就。从创立初期的艰难探索到如今的行业领先地位,ASI凭借其独特的技术、创新的精神和敏锐的市场洞察力,不断突破自我、超越自我,成为了半导体行业的一颗璀璨明星。

富捷(FOJAN)公司的发展小趣事

富捷电子深知质量是企业生存和发展的基石。因此,公司高度重视质量管理体系建设,成功导入了ISO9001/IATF16949及VDA6.3质量管理体系、ISO14001环境管理体系。在原材料管理、产品生产、产品过程检验及出货流程中,公司严格遵循体系要求,秉持全面质量管理(TQM)精神,确保每一环节都达到国际最高品质标准。这种对质量的执着追求,赢得了客户的广泛信赖和好评。

Glenair公司的发展小趣事
在修复或更换元件后,使用模拟测试设备对电路进行测试,确保电路能够正确触发保护动作并恢复正常工作。
Datatronic公司的发展小趣事

随着市场竞争的加剧,Datatronic公司意识到单纯依靠技术创新已不足以保持竞争优势。于是,公司开始调整市场策略,注重与客户的沟通和合作。通过深入了解客户需求,公司能够提供更符合市场需求的定制化产品和服务。同时,公司还加强了与上下游企业的合作,形成了稳定的供应链体系。

安碁科技(AKER)公司的发展小趣事

1990年,安碁科技股份有限公司正式成立,标志着其进军石英振荡器领域的起点。公司初创时期,面临着激烈的市场竞争和技术挑战。然而,安碁科技凭借对技术的执着追求和对市场的敏锐洞察,逐步在行业中崭露头角。通过不断的技术研发和产品创新,公司逐渐建立了自己的品牌地位,为后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

128x64点阵液晶资料及源程序

128x64点阵液晶资料及源程序…

查看全部问答>

DMB-TH ISDB-T DVB-T ATSC

本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 公司以代理台湾禾瑞亚 【EMPIA】全系列芯片为主导,兼营多家国内外半导体公司【TI、PHILIPS、FMD等】消费类IC的增值方案服务商。客户和产品类型涵盖视频与图像采集领域。如:视频采集类 ...…

查看全部问答>

宽动态摄像机市场数据调查分析

  关键字:宽动态摄像机   根据调查统计,2008年中国宽动态摄像机市场总量约300万台,占全部摄像机市场的25%,约30亿人民币。较2007年,2008年宽动态摄像机市场增幅超过30%。在对2009年1月~3月的三个月调查中,统计出宽动态摄像机生产了约2 ...…

查看全部问答>

電路元件之理想化.

電路元件之理想化.…

查看全部问答>

WINCE启动应用程序

应用程序放在NAND FLASH,开机让WINCE启动应用程序怎么实现啊,以前是把应用程序编译到内核采用下边方法实现的 1、 将应用程序和应用程序快捷方式添加到映像里,再将快捷方式添加到StartUp目录下,这样当系统运行后应用程序就能自动运行; 2、 直 ...…

查看全部问答>

关于java嵌入式的几个疑问

请路过的大虾给菜鸟解疑了。。 在嵌入式方面是java用的多还是c/c++要多? java嵌入式除了j2me还有哪些方向? java嵌入式的前景看好吗? 干java嵌入式除了j2se还要学那些东西,软件方面的? 请给初学者点入门建议? 谢谢大虾们,一下问了这么多 ...…

查看全部问答>

发电机输出只有N线?

现场施工用的发电机,为什么只有N先输出?这样的话,一相接地时,由于没有地线,会造成危险,就是站在地上,不小心碰到零线,但是我认为,既然发电机这么做,肯定有它的道理,但是为什么?…

查看全部问答>

edk时发现license问题

启动edk时发现license过期了,但是貌似还能用,哪有最新的破解文件?WARNING:EDK:2842 - Your license for \'ISE\' expires in -27 days.WARNING:EDK:2842 - Your license for \'XPS\' expires in -27 days.WARNING:EDK:2842 - Your license for \' ...…

查看全部问答>

IO口的输出频率能达到多少?

我用8M 的晶振,IO口好像只能输出60多K的波形,大于60多K就没波形了,这又是为什么呢?…

查看全部问答>

如何看待代理商请求原厂发公告来点名镇压优势贸易商?

     代理商,贸易商谁优势大?采购方需要怎么选择?这样的话题永远没有结果,根本是购销双方你情我愿意,和谐合作就可以!        贸易商不可缺少的两个生存条件应该是:代理没有货的,你有;代理 ...…

查看全部问答>