历史上的今天
返回首页

历史上的今天

今天是:2025年06月27日(星期五)

正在发生

2020年06月27日 | STM8 IO输入之独立按键检测程序

2020-06-27 来源:eefocus

系统功能


使用STM8检测三个独立按键,一旦检测到按键被按,立刻做出指示!


硬件设计


关于STM8的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是STM8的I/O引脚配置表:

STM8 I/O 口引脚配置表


Px_DDR Px_CR1 Px_CR2 I/O 方式 引脚状态说明

0 0 0 输入 悬浮输入

0 0 1 输入 上拉输入

0 1 0 输入 中断悬浮输入

0 1 1 输入 中断上拉输入

1 0 0 输出 开漏输出

1 1 0 输出 推挽输出

1 X 1 输出 输出(最快速度为10MHZ)

LED控制电路原理图

独立按键电路原理图


软件设计

/*********************************************************************

微 雪 电 子 WaveShare http://www.waveShare.net

目标系统: 基于STM8单片机 

应用软件: Cosmic CxSTM8 

说 明: 若用于商业用途,请保留此段文字或注明代码来源

深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权 

*********************************************************************/

#include


#define LED_DDR  PB_DDR

#define LED_ODR PB_ODR

#define LED_CR1  PB_CR1

#define LED_CR2  PB_CR2

#define KEY_DDR  PB_DDR

#define KEY_IDR PB_ODR

#define KEY_CR1  PB_CR1

#define KEY_CR2  PB_CR2


void scanKey()

{

    

    KEY_PORT=0xFF;  //设置按键输出“1”,之后语句检测按键,若端口变为“0”,则表示被按   

    if(KEY_PIN==0xFE)   //1111 1110 --> 说明最低位的按键可能被按

    {

        delay50us(1);  //去抖

        if(KEY_PIN==0xFE) //1111 1110 --> 确认最低位的按键被按

            LED_P0RT=0xFE; //进行LED指示

    }

    if(KEY_PIN==0xFD)   //1111 1101 --> 说明最低位的按键可能被按

    {

        delay50us(1);  //去抖

        if(KEY_PIN==0xFD) //1111 1101 --> 确认最低位的按键被按

            LED_P0RT=0xFD; //进行LED指示

    }

    if(KEY_PIN==0xFB)   

    {

        delay50us(1);

        if(KEY_PIN==0xFB)

            LED_P0RT=0xFB; 

    }

    if(KEY_PIN==0xF7)   

    {

        delay50us(1);

        if(KEY_PIN==0xF7)

            LED_P0RT=0xF7; 

    }

    if(KEY_PIN==0xEF)   

    {

        delay50us(1);

        if(KEY_PIN==0xEF)

            LED_P0RT=0xEF; 

    }

    if(KEY_PIN==0xDF)   

    {

        delay50us(1);

        if(KEY_PIN==0xDF)

            LED_P0RT=0xDF; 

    }

    if(KEY_PIN==0xBF)   

    {

        delay50us(1);

        if(KEY_PIN==0xBF)

            LED_P0RT=0xBF; 

    }

    if(KEY_PIN==0x7F)   

    {

        delay50us(1);

        if(KEY_PIN==0x7F)

            LED_P0RT=0x7F; 

    }

 }



系统调试

按第一个键,第一个LED亮;按第二个键,第二个LED亮。。


推荐阅读

史海拾趣

Fullywell Semiconductor Co Ltd公司的发展小趣事

随着全球对环境保护和可持续发展的重视,Fullywell也积极响应这一趋势,开始实施绿色转型战略。公司投入大量资源研发环保型半导体材料和生产工艺,致力于降低生产过程中的能耗和排放。同时,Fullywell还加强了与产业链上下游企业的合作,共同推动绿色供应链的建设。这些举措不仅提升了公司的社会责任感,也为公司的可持续发展奠定了坚实的基础。通过绿色转型,Fullywell在行业内树立了良好的企业形象,吸引了更多关注环保和可持续发展的客户和合作伙伴。

聚洵(Gainsil)公司的发展小趣事

面对市场需求的不断变化和技术的不断进步,Fullywell始终保持着对研发的重视和投入。在2020年,公司研发团队经过数年的努力,成功攻克了多项关键技术难题,推出了新一代的智能电源管理芯片。这款芯片在能效比、集成度和可靠性等方面均达到了行业领先水平,赢得了市场的广泛好评。Fullywell借此机会实现了产品的迭代升级,进一步巩固了其在电源管理芯片市场的领先地位。

ANADIGICS公司的发展小趣事

面对市场需求的不断变化和技术的不断进步,Fullywell始终保持着对研发的重视和投入。在2020年,公司研发团队经过数年的努力,成功攻克了多项关键技术难题,推出了新一代的智能电源管理芯片。这款芯片在能效比、集成度和可靠性等方面均达到了行业领先水平,赢得了市场的广泛好评。Fullywell借此机会实现了产品的迭代升级,进一步巩固了其在电源管理芯片市场的领先地位。

台湾诚阳(BC)公司的发展小趣事

台湾诚阳(BC)公司深知人才是企业发展的核心。因此,公司一直注重人才的引进和培养。公司建立了完善的人才培养和激励机制,为员工提供了广阔的职业发展空间。同时,公司还鼓励员工参与各种培训和交流活动,提升他们的专业技能和综合素质。这种对人才的重视和投入,使得台湾诚阳拥有一支高素质、专业化的团队,为公司的持续发展提供了有力保障。

EDI [Electronic devices inc.]公司的发展小趣事

在2000年代初,Eclipse Magnetics公司迎来了一个重要的合作伙伴——IBM。当时,IBM正在寻求一种可靠的磁性技术来支持其开源项目Eclipse。经过深入了解和严格测试,IBM最终选择了Eclipse Magnetics的产品。这一合作不仅为Eclipse Magnetics带来了可观的业务机会,还进一步提升了公司在行业中的影响力。

宁波晨翔电子(CONNFLY)公司的发展小趣事

在市场竞争日益激烈的环境下,晨翔电子始终坚持产品创新,不断推出具有市场竞争力的新产品。同时,公司还注重品牌建设,通过提升产品质量、优化服务流程、加强市场营销等方式,不断提高品牌知名度和美誉度。这一时期的努力,使得晨翔电子在电子连接器行业树立了良好的品牌形象。

问答坊 | AI 解惑

步进电机驱动器高集成度芯片TB6560AHQ,详细功能优势说明

TB6560AHQ在具体应用方面的优势 1、在低转速运行系统中的应用优势 低转速运行系统,是指时钟频率不高、以小电流驱动为主的系统,比如转速为每分钟几转到100转,用户在此种应用条件下如使用传统的驱动方案,要么因集成芯片细分太低,而使低速振动 ...…

查看全部问答>

南京小组DIY情人节礼物方案公布

基于TMS320F28027的语言录放模块的设计 文章介绍了这次活动中的关键模块(语音录放模块)的基本设计思路和整个系统的构架,通过一些实际参量的分析,计算,提高整个系统前期设计的可实现性,虽然这个模型还没有经过实际验证,相关的参考实例也比较少,但他 ...…

查看全部问答>

WinCE死机

为什么我用VS2008的VB编了一个时钟程序(智能设备应用程序),然后部署到WinCE 5.0上,程序跑一会自己就死机了。很奇怪。后来发现死机主要取决于Timer控件,1秒刷新一次,3分多钟后死机,如果1毫秒刷新一次,2秒后就死机。为什么?怎么解决?谢谢!…

查看全部问答>

GPRS的驱动问题

     我要用GPRS模块实现终端机和服务器的数据交换(主要就是一些用户信息的交换和图片的传输)。客户要求通过HTTP协议来实现。而我要实现底层驱动部分,因为对上层应用不了解,有几个问题需要大侠确认:    1、我 ...…

查看全部问答>

求教一下AT91RM9200访问16位外部ASIC时该如何初始化?

由于我是新手,没有什么分给大家,真正的高手肯定是不在乎这些俗物的,真心希望大家给与帮助! 求教一下AT91RM9200访问16位外部ASIC时该如何初始化? 我用的是NCS2/WR0/NRD,D[15:0]接ASIC的D[15:0],A[19:1]接ASIC的A[18:0],SMC_CSR[2]设置如下: ...…

查看全部问答>

VS2005基于智能设备的程序,对话框里的组控件里最多放置几个控件

用Vs 2005开发的VC 应用程序里,组控件里最多放几个控件变量啊?我的怎么放了八个就放不下别的了,确切的说是能放下但运行的时候 根本不显示,能不能更改一些设置,让组控件放的控件变多? …

查看全部问答>

编译器调试

各位好:      我用一NEC单片机的编译器进行代码调试时,该项目由多文件组成,修改了一个文件当中与编译无关的代码,比如多一个或者少一个空格都会提示好多错误,即使在主函数里屏蔽掉该文件的功能函数,也会提示相同的错误,反正是 ...…

查看全部问答>

[转帖] uC/GUI3.32应用笔记

这是前些日子在使用uc/GUI的时候即下来的一些东西原来发布在EDACN的bbs上面。现在不知道沉到哪里去了。现在把它重新整理发布在这里。随后在明年过年的时候把后续的几个高级主题整理出来。 下面开始我的笔记! 有兴趣的兄弟们可以来看看。 ste ...…

查看全部问答>

新手提问:vxworks中BSP包中的有些配置修改了,是不是要重新做编译啊?

同上.还有不知道谁有关于vxworks中PCI驱动的编写事例,最好硬件是PPC8270或相近的CPU.万分感谢!!!…

查看全部问答>