历史上的今天
今天是: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亮。。
下一篇:STM8 定时器中断程序
史海拾趣
|
步进电机驱动器高集成度芯片TB6560AHQ,详细功能优势说明 TB6560AHQ在具体应用方面的优势 1、在低转速运行系统中的应用优势 低转速运行系统,是指时钟频率不高、以小电流驱动为主的系统,比如转速为每分钟几转到100转,用户在此种应用条件下如使用传统的驱动方案,要么因集成芯片细分太低,而使低速振动 ...… 查看全部问答> |
|
基于TMS320F28027的语言录放模块的设计 文章介绍了这次活动中的关键模块(语音录放模块)的基本设计思路和整个系统的构架,通过一些实际参量的分析,计算,提高整个系统前期设计的可实现性,虽然这个模型还没有经过实际验证,相关的参考实例也比较少,但他 ...… 查看全部问答> |
|
求教一下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 应用程序里,组控件里最多放几个控件变量啊?我的怎么放了八个就放不下别的了,确切的说是能放下但运行的时候 根本不显示,能不能更改一些设置,让组控件放的控件变多? … 查看全部问答> |
|
这是前些日子在使用uc/GUI的时候即下来的一些东西原来发布在EDACN的bbs上面。现在不知道沉到哪里去了。现在把它重新整理发布在这里。随后在明年过年的时候把后续的几个高级主题整理出来。 下面开始我的笔记! 有兴趣的兄弟们可以来看看。 ste ...… 查看全部问答> |
|
新手提问:vxworks中BSP包中的有些配置修改了,是不是要重新做编译啊? 同上.还有不知道谁有关于vxworks中PCI驱动的编写事例,最好硬件是PPC8270或相近的CPU.万分感谢!!!… 查看全部问答> |




