- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
次课矩阵键盘和定时器的使用
开发板3*4矩阵键盘电路图: 主程序 uchar temp,keynum,Flag; void main(void) { Init(); while(1) { if( Flag==1)//如果有键按下 display(); } } 键盘扫描子程序 uchar Keyscan() //键盘扫描 { temp=0xfe; P1=temp; //令P1.0=0 if((P10xf0)!=0xf0) { delay_50us(100); if((P10xf0)!=0xf0) //确认是否按下 { Flag=1; switch(P1) {case 0xee:keynum=1;break;//S7被按下;对应显示1 case 0xde:keynum=2;break;// S11;对应显示2 case 0xbe:keynum=3;break;//S15;对应显示3} } } 扫描第二行应该怎么写? return(keynum); void display(void) { Flag=0; P2=0x00;//开4个位选; P0=table[Keyscan()];//数码管显示;table里面放0-9 //的段选 delay_50us(100); } 嵌入式系统的软件系统 嵌入式软件开发内容 开发系统软件 操作系统 协议栈 GUI 库函数 软件组件与IP(知识产权内核) 开发应用软件 在嵌入式操作系统之上进行开发 在硬件层上进行开发 1 软件的结构和组成 #include stdio.h //嵌入式软件主程序 main() { while(1) { action1(); action2(); … } } 6.3 裸机系统软件的设计方法 无操作系统的嵌入式软件设计 有操作系统的嵌入式软件设计 6.3.1无操作系统的嵌入式软件设计 前后台系统 中断(事件)驱动系统 巡回服务系统 基于定时器的巡回服务系统 6.3.1.1前后台系统 后台: 应用程序是一个无限循环,巡回地执行多个事件,完成相应的操作。这一部分软件称为后台。通常在主程序main()中被调用。 前台: 中断服务程序处理异步事件,这一部分可以看成是前台。 后台可以称为任务级,前台可以称为中断级。强实时性的的关键操作一定要用中断来实现。 程序框架-后台 main() { /* 硬件初始化 */ while(1) /* 后台程序 */ { action1(); action2(); action3(); … } } action_1() { /* 执行动作n */ … } … … action_n() { /* 执行动作n */ … } 程序框架-前台 Isr_1() { /* 中断1的中断服务程序 */ … } … … Isr_n() { /* 中断2的中断服务程序 */ … } 前后台系统的特点 应用 小系统: 微波炉 电话机 玩具等 6.3.1.2中断(事件)驱动系统 原理 整个嵌入式系统软件由中断服务程序构成 主程序完成系统的初始化工作 应用 低功耗系统设计 事件驱动系统 构成 主程序-完成系统的初始化 中断服务例程-完成事务处理 中断驱动系统-主程序 main() /*完成系统的硬件初始化和数据结构的初始化*/ { /* to do: 系统的初始化 */ while(1){ 。。。其它代码或 enter_low_power(); /*进入低功耗状态*/ } } 中断驱动系统-中断程序 Isr_n() /* 其中的一个中断服务程序 */ { /* to do: 处理中断事件 */ /* to do: 中断返回 */ } 3.1.3巡回服务系统 应用: 嵌入式处理器/控制器的中断源不多 解决方案 增加中断源-需要硬件,成本高 软件方案-软件巡回服务 main() { /* to do: 系统初始化 */ while(1) { action_1();/*巡回检测事件1并处理事件*/ action_2();/*巡回检测事件2并处理事件*/
文档评论(0)