- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
手把手教你学单片机6.ppt
--51基础(C语言) 金沙滩工作室 作者:宋雪松 第六课: 中断与数码管动态显示 数组的声明和初始化 数组是一组变量,这组变量需要满足三个条件: 1、具有相同的数据类型 2、具有相同的名字 3、在存储器中是被连续存放的 if语句的用法 if语句的默认形式: if(条件表达式) { 语句1; } if...else语句 if(条件表达式) { 语句1; } else { 语句2; } if...else if语句 if(表达式1) {语句1;} else if(表达式2) {语句2;} else if(表达式3) {语句3;} ... ... ... ... else {语句n;} switch语句的用法 switch(表达式) { case 常量表达式1: 语句1; case 常量表达式2: 语句2; ... ... case 常量表达式n: 语句n; default : 语句n+1; } switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; ... ... case 常量表达式n: 语句n; break; default : 语句n+1;break; } 动态显示的基本原理 动态显示: 多个数码管显示数字的时候,我们实际上是轮流点亮数码管(一个时刻只有一个数码管是亮的),利用人眼的视觉暂留现象(也叫余晖效应)。 数码管动态显示秒表流程图 数码管消隐 产生背景: 数码管位选切换过渡阶段造成的段选的瞬态显示。 解决方法: 切换之前关闭位选或者段选,切换后一次性打开。 中断的介绍 比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开——如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。 门外忽然又传来了铿锵有力的歌声,我最喜欢的天龙八部要开演了,听着水壶发出“咕嘟咕嘟”的声音,我清楚:除非等到水开,否则没有我享受人生的时候。 这个场景跟中断有什么关系呢? 在这个场景中,我是唯一具有处理能力的主体,不管是烧水、还是看电视,同一个时间点上我只能干一件事情。但是,在我专心致志干一件事情时,总有许多或紧迫或不紧迫的事情突然出现在面前,都需要去关注,有些还需要我停下手头的工作马上去处理。只有在处理完之后,方能回头完成先前的任务。 中断机制不仅赋予了我处理意外情况的能力,如果我能充分发挥这个机制的妙用,就可以“同时”完成多个任务了。 事实上烧水需要10分钟完成,但是提下水壶和关煤气我只要几秒钟就可以完成。为了这几秒,我需要在厨房等候10分钟。如果使用闹钟定时10分钟,10分钟一到,闹钟就会提醒我该去关煤气了,那么我就可以去安心看电视了。 实际上就是用了闹钟这样一个中断信号来提示我完成提水壶和关煤气的任务。 中断优先级的说明 当设置为默认中断固有优先级时: 当几个中断同时发生时,则先处理中断优先级高的中断程序,在处理任意中断期间发生中断,都不会响应。 当配置了中断优先级,即抢占优先级 同时发生中断,优先级高的先响应,在处理任意中断时,发生同级别或低级的中断,则不响应,发生优先级更高的中断时,则先处理高优先级中断,处理完毕,再回来处理当前中断。 中断固有优先级的说明 当设置为默认固有中断优先级时: 假设“水开”默认优先级高于“门铃”优先级,当先听到“水开”则先处理“水开”这件事,当先听到“门铃”则先处理“门铃”这件事。只有当两件事同时发生时,则会先去处理“水开”,再处理“门铃”。 中断优先级的说明 当人为配置了抢占中断优先级 配置“水开”为高优先级,则当“水开”事件发生时,直接处理“水开”,在处理“水开”的过程中,即使“门铃”响了,也不会去理会。当“门铃”响了,正在走向门口时,这个时候,“水开”事件又发生了,那么从门口转向,先去处理“水开”
文档评论(0)