- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章任务T1-5 用按键控制LED
第5章 任务T1-5用按键控制LED 5.1 本章的知识点和技能点 5.2 任务描述 5.3 任务分析 对于普通的按键检测电路来说,由于对应的单片机引脚是负责检测按键的状态的,所以是输入信号。 按键的处理是比较复杂的过程,要考虑到按键被按下和松开时的抖动,还要考虑到长按键的情况。抖动和长按键的处理可以用硬件机制处理也可以用软件机制处理,在本任务中,我们是用软件机制处理的。 按键中还存在一种特殊的按键——复位按键,其对应的信号输入到单片机的复位引脚,按下复位键会引起单片机的复位。 5.4 实操训练:按键电路的静态测试 5.4 实操训练:按键电路的静态测试 5.4.3 实验步骤 5.5 知识链接1:简单按键的设计与处理 5.5.1 按键电路的电路原理 5.5.2 按键操作的时序图 5.5.3 按键扫描:延时读键法 5.5.4 按键扫描:多次读键法 5.5.5 多次读键法的处理流程图 5.5.6 键值与处理 获取键值。如果存在多个按键时,当确定有按键按下后,应该判断那个按键被按下即确定按键的键值,如课本图5-3-1所示,如果PTG1为0,则按键5被按下,为了和电路板上的按键编号一致,我们可以把按键5的键值定为5(当然也可以定为其他的值,这个由程序员决定),如果PTG0为0,则按键6被按下,相应的我们可以把按键6的键值定为6,如果PTG1和PTG0都为0,则按键5和6都被按下,我们可以把这时的键值定为7(表示两个键都被按下)。 按键处理。得到键值后,我们就根据键值进行不同的处理。按键的处理可以安排在按键闭合时,也可以安排在按键释放后,也要根据具体情况来决定,如果要求快速相应,则应该安排在闭合时就处理。 5.6 知识链接2:复位向量与复位电路 5.6.1 复位向量 向量是一种特殊的存储单元,保存着一种特殊地址。表示发生某种突然的操作(中断)后,单片机的程序应该跳转到这个地址执行程序。 复位向量保存着发生复位操作时程序开始执行的地址。复位向量的地址为$FFFE~$FFFF。 复位向量在程序中的表示方法: ORG $FFFE ; 定位复位向量的起始地址 DC.W _Startup ; 复位(Reset)向量 DC.W表示后面的操作数_Startup(实际上是表示一个地址)存储在两个连续的存储单元中,这里是指0xFFFE和0xFFFF这两个存储单元,有了这样的安排后,单片机上电后就会从_Startup这个地方开始运行。 5.6.2 复位电路 5.7 实操训练:按键电路与复位电路的处理 5.7 实操训练:按键电路的静态测试 5.7.3 实验步骤 5.8 知识链接3:函数 5.8.1 函数的概念 函数(也叫“子程序”或“过程”)是指能够完成某种特定功能并且能被重复使用的程序段。 函数的优点:每种函数表示某种功能,使程序简单易懂;函数代码能够被重复的使用,从而节省存储空间。 一般来说,我们可以按照功能来组织函数,把完成某个功能的程序段组织为一个函数。 函数分为主函数、一般子函数(简称子函数)、中断子函数。 5.8.2 函数的定义 一般来说,函数由函数名、函数参数、函数体组成。函数名相当于是函数的首地址,在调用时使用。 子函数定义时应具有下面的形式: 函数名 函数体 函数返回(RTS) 5.8.2 函数的定义(续) 把下面的程序段改造为函数: ScanDelay: LDHX KeyScanDelay AIX #1T STHX KeyScanDelay CPHX #110T BNE ScanDelay ClearScanDelay: LDHX #$0000 STHX KeyScanDelay 5.8.2 函数的定义(续) 改造后的函数如下: ScanDelay LDHX KeyScanDelay AIX #1T STHX KeyScanDelay CPHX #110T BNE ScanDelay ClearScanDelay: LDHX #$0000 STHX KeyScanDelay RTS 5.8.3 函数的调用 调用函数可以使用两种语句,相对函数调用指令BSR和绝对函数调用指令JSR,例如我们要调用上面的子函数ScanDelay,可以用语句 BSR ScanDelay JSR ScanDelay。 5.8.4 函数调用时产生的操作 第一个操作是保护现场,即把当前PC的值保存在堆栈中,以便函数返回后程序能够接着执行函数调用之后的语句。 第二个操作是改变PC的值,使PC的值变为函数的首地址,从而使函数的代码得以执行。 5.8.5 BSR和JSR的区别 BSR和JSR具有三个差别: 第一个差别是改
文档评论(0)