下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STM8的按键程序学习笔记本程序基于STM8S105K4单片机学习程序。程序硬件就是STM8 的最小开发板搭建,用的内部晶振1分频。经测试可以正常检测到按 键的短按和长按。程序思想见。C程序中的注释。最终通过调试和 实验。所有的程序如下:(程序中可能还有些其他没有发现的问题, 或其他错误有问题再学习更改。)/* 按键扫描程序 */本程序定义四个独立按键,对四个独立按键的短按长按进行识别,返回最终的键值 key_value为最终键值:0x11为按键1的短按,0x12为按键的长按。0x21为按键2的短按, 0x22为按键的长按。类推注意:键值读取之后应将键值复位清零,以备下次检测;注意:系统中断函
2、数中有按键打描的部分程序INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler; 4)等。调用方法:void key_port_init();按键端口的定义void scan_key():按键的扫描程序,放在定时器中断中,定时器Ims中断。extern unsigned char key_down_IF=0x00;在中断函数中加入变量声明extern scan_key();在中断函数中加入变量声明extern key_value;在主函数中加入变量声明 */#ifndef_KEY_SCAN_H #define _KEY_SCAN_H厂定义按键的端口位水/#define
3、key_l_io#defi ne key_2_io#defi ne key_3_ioGPIOnit(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_PUT)GPIOnit(GPIOC, GPIO_PIN_5, GPIO_MODEJN_PUJT)GPIOnit(GPIOC, GPIO_PIN_6, GPIO_MODEJN_PUJT)/#define key_l_in() (GPIO_ReadlnputPin(GPIOCz GPI0_PIN_5)=SET)? 1:0厂设置端1按键中断的触发方式 下降沿和低电平触发沐/#definekeyjnt.wayEXTI_SetExtlntSe
4、nsitivity(EXTI_PORT_GPIOC,/#definekey_l ong0x02;定义长按键值,/#definekey_short0x01;/#definekey_short0x01;/#define key_short 0x01;定义短按键值,按键按下后根据按键1号按键短按最终键值为0x11,长按为0x12类推unsigned charkey_value=O;EXTI_SENSITMTY_FALL_ONLY);unsigned char key_down_IF=0x00; 为key2按下,0x30为key3按下。unsigned intkey_deIay_count=0;uns
5、igned intkey_delay_short=100;unsigned intkey_delay_long=l000;定义一个键值变量。按键按下标志位,0x10代表keyl按下标志,0x20按键延时计数器定义短按延时判断时间定义长按的延时判断时间厂读取按键的位值审unsigned char key_l_in()if(GPI0_ReadlnputPin(GPI0C,GPI0_PIN_4) return 1;else return 0;unsigned char key_2_in()if(GPI0_ReadlnputPin(GPI0C,GPI0_PIN_5) return 1;else ret
6、urn 0;unsigned char key_3_in()if(GPI0_ReadlnputPin(GPI0C,GPI0_PIN_6) return 1;else return 0;unsigned char key_4_in()if(GPI0_ReadlnputPin(GPI0C,GPI0_PIN_7) return 1;else return 0;# endif/* 按键扫描程序 */ 建档时间:20151215跟新记录:20151218测试通过。注意事项:调试中遇到的问题有:按键的键值读取函数unsigned char key_ljn():等本来是 准备放在宏定义里面的,但是总是报错有
7、问题。所以放在函数中。导致不能直接在其他程序中包含这个头文件。程序思想:按键按下后进入中断,然后判断是哪个按键按下,并赋值。当有按键按卜后按键 按下标志位会被置位,然后在定时器的中断中不断检测是否有按键按下,如果有按键被按下,则开始计时,如果计数值没有达到去抖的累计值则松手之 后计时自动清零。当按卞后计数根据定时器的计数的时间长短判断是长按还是短按,然后将数据复制到键值返回到主函数中。按键程序没有在线等待,而是扫 描形式判断。减小CPU的负担。硬件支持:16MHz晶振1分频。按键中断选择下降沿中断。*/#inelude Hkey_scan.h” void key_port_init() 端I
8、I上拉输入中断按键触发方式为卞降沿低电平触发key_l_io; key_2_io; key_3o; key_4o; key_int_way;/INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler;4)/ void keyjnterrupt_do()key_down_l F=0xl0;key_down_l F=0x20;key_down_l F=0x30;key_down_l F=0x40; /1ms定时器中调用次程序,即每1ms扫描检测一次/void sean_key()if(key_down_IF != 0x00)有按键按下开始扫描 此时key_down_IF就有k
9、eyl,2,3的信息key_d e lay_co u nt+; 延时计数器开始计数if(key_delay_count=65530)key_deIay_count=0;key_down_lF=0;按键按卜时间过长,则是故障,不执行按键反馈if (key_delay_count=key_delayjong)key_down_IF &=OxfO; key_down_IF |=0x02; 加上长按标志 else if(key_delay_count=key_delay_short)key_down_IF &=OxfO; key_downJF |=0x01;加上短按标志if( (key_ln() &
10、(key_2n() & (key_3_in() & (key_4_in()松手后判断switch(key_down_IF&OxfO)有按键按下的条件卞,读取那个键按下的,然后判断是否已经松手,当前键值是什么case 0x10:if(key_2_in()&(key_down_IF & OxOf) 0)松手后如果有长短按标志,则将结果公布这句可以省略key_va lue=key_d own _IF;松手的时候没有长短按 标志,则不显示结果,且清零标志key_downF=0;key_delay_co un t=0;break;case 0x20:松手后如果有长短按松手的时候没有长短按松手后如果有长短按if(key_2_in()&(key_down_IF & OxOf) 0) 标志,则将结果公布这句可以省略下同key_va lue=key_d o wnF;标志,则不显示结果key_downF=0;key_delay_co un t=0; break;case 0x30:if(key_3_in()&(key_down_IF & OxOf) 0)标志,则将结果公布key_va lue=key_d ownF;松手的时候没有长短按标志,则不显示结果key_downF=0;key_delay_count=0;break;case 0x40:if(key_4Jn()&(key_down_IF &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年级上册数学相似三角形常见辅助线的作法教学设计
- 高中信息技术必修一《数据、信息、知识》教学设计
- 七年级地理教学设计:主题活动一《观察校园环境绘制校园简图》
- 高一数学必修二《平面与平面平行》教学设计
- 八年级数学全等三角形判定定理(边边边)教学设计
- 初中八年级道德与法治《遵崇宪法》教学设计
- 初中语文七年级《从百草园到三味书屋》互动导学教学设计
- 2027年四川省道德与法治初三考前冲刺卷(含答案)
- 2027年山东省语文九年级基础过关卷(含答案)
- 冲刺终点线 2027年中考河南省语文中考人教版考前回归卷(含答案)
- UOM无人机安全操控理论合格证(2026)题库+答案详解
- 统编版初中道德与法治九年级上册6.3文化自信日益增强 议题式教学课件(共35张)+内嵌视频
- LW36-126型户外自能式高压六氟化硫断路器安装使用说明书
- 江苏省南通市启东市2025-2026学年九年级上学期期中数学试卷(含答案)
- 血液透析用中心静脉导管护理专家共识(2025版)
- 手术室质控培训课件内容
- 村内街巷硬化施工技术交底
- 2025年中国安防行业发展研究报告
- 全国大学生职业规划大赛《水利水电工程》专业生涯发展展示
- 6.2 学会依法办事 课件-2025-2026学年统编版道德与法治 八年级上册
- 精神专科医院建设标准
评论
0/150
提交评论