单片机程序设计编程规范(3)
b0movy,#0;清RAMbank0
b0movz,#48
@@:
clr@yz
decmsz
jmp@b
clr@yz
ret
2)系统寄存器必须进行初始化,比如说I/O口方向和输出电平等。
需要特别说明的是输出口的初始化必须按照下列顺序来处理:
(1)设定相应I/O口输出高低电平
(2)将相应I/O口为输出口
如此可确保MCU的I/O口从输入模式转为输出模式时不会有脉冲的存在。而在I/O口控制频繁变化(如通信)时更要引起注意。
例如:
(3)mova,#11111111b
;如果p1.0和p1.1原来为输入高电平,当直接切换为输出方式时会有高电平脉冲的输出,而这不是所希望的。
b0movp2m,a
mova,#11111100b
b0movp2,a
(4)mova,#00001100b
b0movp2,a
;这样处理p1.0和p1.1就避免了高电平脉冲的输出
mova,#11111111b;
b0movp2m,a
开机时后IOtoggle的作法
利用暂时没有用到的IO来做toggle可有效观察以下几点
1)系统是否正常开机
2)是否发生resetorwatchdogreset现象
3)程序是否重头运行
观察IOtogglepulsewidth可以了解InternalRC频率的准确性或是协助调整外部RC数值以上方法可以有效协助量产生产问题
开机时后TestMode的作法
TestMode必须在开机时后按下某些组合按键同时通过de-bounce才可进入testmode
2.按键处理
1)一般来说key的处理是所有程序的基础教科书里面所教导的key处理观念大多以delay循环与多次检查来处理弹跳事件,但是此种方法由于导入delay循环大大降低系统实时性,而大多使用者都没有警觉此问题依然延续此观念设计keyscanandde-bounce技巧,此份文件详细叙述key处理观念
2)家电产品中经常用到抗干扰的测试EFT,会从电源端打入噪声测试系统抗噪声能力,如果key处理不好会有key误动作产生,一般使用者会在keyscan地方加入电容以减低此问题的产生,但是此方法还是无法完全避免此问题同时还增加硬件成本,这里提出的de-bounce观念可以完全解决此问题
3)按键处理很多程序员都会将系统的程序设计与key程序结合没有分开结构,这造成很多程序就以key程序变成程序主体来运行,这里提出将key动作得出的keycode存到fifo(firstinfirstout)中,使得AP系统得以在有空闲的时候才处理keycode动作,程序架构自然形成
4)一般来说key处理都只侦测keydown,但是在某些系统确有keydownandkeyup的要求,这方面可以透过keyinbuffer的储存new/oldbufferXOR比对得到keyevent,更深一层的技巧侦测多按键处理更是需要利用new/oldbufferXOR来处理
合理的按键处理一般包括按键扫描、按键弹跳处理、按键输出转换等环节。
例如:
mn_key:
callkeyin;读取按键输入将资料储存在keyinbuf里面
callkeychk;按键弹跳处理
callkeycvt;弹跳处理后,将按键扫描码转换储存到FIFO里面!ret
①keyin――按键扫描,其主要负责将外部按键信息读入到内部buffer中。
常用的按键一般包括:直接按键、M*N矩阵式扫描按键、三角形按键、扩充按键、按键与其它周边共享I/O脚位等,部分场合还要考虑睡眠和按键的唤醒功能。下面进行分别说明:
1)直接按键
最简单的按键方式,通常作法利用MCU里面的pull-up电阻上拉,外面按键落地,平时没有按键的时候,MCUinput端口读到Hi,按键按下时候读到Low,如下图所示
2)M*N矩阵式扫描按键
最典型的按键扫描方式,有分Singlekey,multi-key扫描
单按键扫描:一个时间只允许一个按键动作同时也只读取一个按键
多按键扫描:一个时间允许一个以上的key按下,但是只读取最新按下的按键
扫描注意事项:一般来说扫描的作法有Outputportandinputport配合
Outputport1110
1101
1011
0111
依序送出0信号让inputport读取,但此时可能发生两件冲突事件需要注意
如果用output0andoutput1的组合来送出scanpattern,当客户同时按下同一排两组按键的时候,会有短路现象,传统作法是加入二极管diode来保护,现在单片机的作法则是利用outputàinputpull-upR的方式来达成.见图面说明
但是当使用Inputpull-upR时候又有另外一件事情要注意就是当1110à1101时候,bit0=output0àinputpull-up1,必须是bit0=output0àoutput1àinputpull-up中间必须经过output1的动作,这动作要协助output0的信号直接快速拉至Hi准位,然后再切换入inputmode,如果直接由output0àinputmode,此时会有一个较长的上升时间,导致keyscan错误
3)三角形按键有效的增加扫描按键数目,见图面说明
4)扩充按键可以加上diode增加keyscan数目见图面说明
5)按键与其它周边共享I/O脚位
6)ADC与RF接收机杂音避免的方式
②keychk――按键弹跳处理,其主要负责滤除按键输入口灌入的杂讯或按键弹跳杂波。
1)一般建议弹跳时间处理约在70mS~100mS,EFT特性如果要好可以更加长到使用者可接受到最常时间200mS
2)弹跳时间的处理并非用delayloop延迟,这会降低系统的实时性与反应力必须检查的动作放在主程序循环里面配合keychattime的递减来完成!
3)如果主循环绕圈时间1mS那按键稳定检查连续次数可高达100次左右这对于Key处理来说是非常稳定的
4)弹跳的检查是连续检查key变化后维持相同状态100mS,比如说key按下后Hi变成Low这时候程序侦测到输入有异动便开启检查时间机制,当程序连续检查100mS都发现Low没有改变的时候便发出keyevent,此时才有按键发生.
5)关于de-bounce的程序验证可透过修改弹跳时间测试,比如说故意将弹跳时间改1sec.观察在一秒内的按键动作是否都不成立,只有按键持续达一秒以上才有动作产生,确认后再将弹跳时间改回
③keycvt――按键输出转换,其主要负责将确认的按键信息进行转换和存储。
1)KeyCVT主要工作将经过de-bounce的keybuffer跟之前所得到的key相比对,看看新的keyevent为何,转换出来后存储到keybufferorkeyfifo甚至直接进入apfifo
2)将keycode储存到fifo中是一个非常重要的观念,这里展示出Key处理是一个独立的物件程序,他的运行跟其他程序都没有相关,唯一对外的界面interface就是fifo.而key的处理方式端看当时系统的status还有AP设计的流程才做出相对应的工作Task.
3.计时系统
计时系统一般包括定时器初始化和定时设置及处理两部分。
1)定时器初始化部分又包括:
(1)定时器控制寄存器的设定
(2)相关用户寄存器的设定
(3)定时时间的初始化
2)定时设置及处理:由于系统里面会经常在不同的时间点执行不同的动作,所以定时的设置及处理变的尤为重要。例如需要以下时间的定时:
10ms定时:每10ms产生定时到达标志位
100ms定时:每100ms产生定时到达标志位
1000ms定时:每1000ms产生定时到达标志位
一般来说,10ms的工作可放在中断处理程序或主程序循环圈中执行,至于采取哪种方式主要是看时间准确性的要求。100ms以上的工作如果没有特别的要求建议放在主程序循环中执行。此外在系统时间设计中,时间不准确的问题经常发生,一般来源于时基的计算与处理。可以在定时中断处理程序中输出一个方波来检查中断发生的时间。
定时设置及处理有两种方法可作参考:
(1)计算法:利用MCU本身的定时中断作出10ms的时基,再利用计算的方法作出100ms、1000ms的定时。
…… 此处隐藏:3356字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




