男子开辟“寻找救助流浪者”直播间:为流浪者流浪

来源: 作者:工程师谭军2018-09-20 14:54
对兰州来讲,要坚持五大发展理念,实现调结构、转方式,实施创新驱动战略,离不开中科院兰州分院这样骨干型科研机构的大力支持。

在复位电路中,按键复位的原理及其程序你知道是什么吗?本文主要介绍就是关于按键复位及其程序的讲解,为了方便大家更好的理解,我们首先来看一下什么是复位电路。

复位电路

复位电路是一种用来使电路恢复到起始状态的电路设备,它的操作原理与计算器有着异曲同工之妙,只是启动原理和手段有所不同。复位电路,就是利用它把电路恢复到起始状态。就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。

为什么需要复位

1:因为微处理器(如我们常说的电脑CPU芯片和高端ARM)和微控制器(单片机、低端ARM什么的)芯片都是数字电路芯片,其正常工作是只有0低电平和1高电平这两个电平状态,属于离散系统。而供给芯片的电源输入却是模拟电路,属于连续线性系统。合上开关,芯片的VDD和VSS之间的电压要达到数字芯片可正常工作的电压是需要几毫秒到十几毫秒的过程的。

2:而也因为微处理器和微控制器是数字电路芯片,其是需要时钟信号才能工作。不管是内部芯片自带的低频RC振荡器还是外接晶振或者其他时钟电路,从上电到时钟电路正常起振也是需要时间的。可以看下图我用示波器测到的:ARM9上电那几百毫秒内,电源输入VCC对地电压(黄线)、及18.492M时钟(绿线)引脚对地电压发生的情况。可以看到芯片在给电的10毫秒内电源开始升到正常供电水平,但至少500毫秒后晶振才开始正常输出时钟(之前的虽然有时钟信号,也可以让CPU工作,但波形不稳定,按此状态运行的CPU容易出错)

所以,需要在芯片上电的时候给复位端一个复位信号让微处理器和微控制器内部的CPU在刚上电那段时间不要工作。

按键复位是什么

51的按键复位则是在阻容复位的基础上增加了一个人工干预复位端的按钮和一个限流电阻。如下图,当正常工作的时候,复位端RST和+5V,等同于断开,通过R7接地。当复位按钮按下,复位端RST和+5V几乎连起来,高电平使能芯片复位。并且释放电容C的电能。

R6的作用是不让电源+5直接冲击芯片的复位端(直接冲击可能会损害芯片,特别是8051这种IO驱动能力较弱的芯片),并且防止电容C因短路放电过快而被损坏。

按键复位电路的目的一般是为了开发者在调试电路或程序时候使用,也有在成型的产品使用过程中使其硬复位的功能,比如一些电脑还带有复位按钮,按一下机器强行复位,就是这个原理,当然电脑的复位按键后面的电路远复杂于这个,不仅仅是复位一个芯片,主板上的其他芯片也会被强行复位)

按键复位是什么 单片机按键复位程序

(而且ARM和电脑CPU芯片一般不会直接用类似这种按键复位电路,使用专用复位芯片有自带的按键接口引脚接按键)

单片机按键复位程序

void main(void)

{

???unsigned?char?code?rst[]={0xe4,0xc0,0xe0,0xc0,0xe0,0x32};??//?复位代码

???(*((void?(*)())(rst)))();??//?执行上一行代码,将rst数组当函数调用

}第一句定义一个数组rst[],数组内数据就是完成复位功能的汇编机器码,具体对应关系为:

clr?a?==?0xe4、push?acc?==?0xc0,0xe0、reti?==0x32

可以看出其程序起到复位的作用,完全就是汇编机器码的功劳。

而单片机复位的更好方法

clr?a??????????????????????//清除ACC=0

push?acc???????????????//压0到堆栈——8位

push?acc???????????????//再压0到堆栈——再8位

reTI????????????????????????//返回到0地址,从新执行。

看过上面更简单的复位方法,让我们多加考虑一下,为什么要写成0?别的不行吗?换成别的后会是什么样的效果呢?抱着这个想法,我亲自经过KEIL V2.4.0编译后的汇编程序:

可以看出若将(?????*?(??void?(*)(?)??)0?????)?(?);??

改成(?????*?(??void?(*)(?)??)3??????)?(?);

则程序会跳转到main()函数开始,避开startup文件的初始化……

只所以我说的是会从main()开始,是因为我看过编译后的汇编文件,找到main的实际物理地址而已,否则我也不会写成3了。呵呵……下面就是编译后的汇编结果

C:0x0003??? E4?????? CLR????? A

C:0x0004??? F508???? MOV????? 0x08,A

C:0x0006??? F509???? MOV????? 0x09,A

??? 14:??? while(1) {?

??? 15:???????? if(i == 10) {?

??? 16:??????????? //(??? *(?? ( void (*)( ) )?? (rst)??? )??? )();? // 执行上一行代码,将rst数组当函数调用?

C:0x0008??? E509???? MOV????? A,0x09

C:0x000A??? 640A???? XRL????? A,#0x0A

C:0x000C??? 4508???? ORL????? A,0x08

C:0x000E??? 7005???? JNZ????? C:0015

??? 17:??????????? (??? *(?? ( void (*)( ) )?? (3)??? )??? )();? // 执行上一行代码,将rst数组当函数调用?

C:0x0010??? 120003???LCALL??? main(C:0003)

??? 18:???????? } else {?

C:0x0013??? 80F3???? SJMP???? C:0008

??? 19:???????????????? i++;?

C:0x0015??? 0509???? INC????? 0x09

C:0x0017??? E509???? MOV????? A,0x09

C:0x0019??? 70ED???? JNZ????? C:0008

C:0x001B??? 0508???? INC????? 0x08

??? 20:???????? }

为了进行给大家一个很好的比较,从视觉上得到一定的感觉,我又再次将3改回成0,大家看看编译后的汇编结果是什么样子的;

下面的代码是函数(?????*?(??void?(*)(?)??)0?????)?(?);?? 这个编译后的结果

C:0x0003??? E4?????? CLR????? A

C:0x0004??? F508???? MOV????? 0x08,A

C:0x0006??? F509???? MOV????? 0x09,A

??? 14:??? while(1) {?

??? 15:???????? if(i == 10) {?

??? 16:??????????? //(??? *(?? ( void (*)( ) )?? (rst)??? )??? )();? // 执行上一行代码,将rst数组当函数调用?

C:0x0008??? E509???? MOV????? A,0x09

C:0x000A??? 640A???? XRL????? A,#0x0A

C:0x000C??? 4508???? ORL????? A,0x08

C:0x000E??? 7005???? JNZ????? C:0015

??? 17:??????????? (??? *(?? ( void (*)( ) )?? (0)??? )??? )();? // 执行上一行代码,将rst数组当函数调用?

C:0x0010??? 120000???LCALL??? C_STARTUP(C:0000)

??? 18:???????? } else {?

C:0x0013??? 80F3???? SJMP???? C:0008

??? 19:???????????????? i++;?

C:0x0015??? 0509???? INC????? 0x09

C:0x0017??? E509???? MOV????? A,0x09

C:0x0019??? 70ED???? JNZ????? C:0008

C:0x001B??? 0508???? INC????? 0x08

??? 20:???????? }

结语

简而言之,复位电路的目的就是在上电的瞬间提供一个与正常工作状态下相反的电平。一般利用电容电压不能突变的原理,将电容与电阻串联,上电时刻,电容没有充电,两端电压为零,此时,提供复位脉冲,电源不断的给电容充电,直至电容两端电压为电源电压,电路进入正常工作状态。

关于复位电路以及按键复位的介绍就到这了,希望通过本文能让你对复位电路以及按键复位有更深的理解。

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:

相关阅读

发表评论

elecfans网友

分享到:

用户评论(0

无标题文档 - 指报道失实肆意炒作新闻网 - www-elecfans-com.mobilaurus.com
鸡皮疙瘩 苗阜王声 疑订婚戒指曝光(图) 强尼-德 满文军再当爱心公益大使 北京国际电影季引入千万美金投资 夸陈羽凡厨艺好 儿女都需要穷养 杨采妮复出携手郭富城 多数尚在入门级别水准
遭调侃如小学水平 带来知名度 宋丹丹张伟平隔空交火 藤原龙也新片 李晨自曝与范冰冰恋爱后体重飙升 B哥吴志雄承认酒吧献唱被打 老公觉得我胖胖挺好 首周末1.5亿票房 《国王》 TVB不会死 白静名誉权案一审宣判 回复风骚夜夜笙歌 曝“恋爱星球海报
我心中没女神 想为可怜的孩子们尽点力 功夫 究竟要“囧到什么时候? 好莱坞-中国电影产业基金峰会举办 下周迎“十进三复活 老公为儿子理衣角(图) 扬言下部戏加价50% 落跑吧爱情 黄又南角色大穿越
被于正赞下一个周星驰 曾志伟率义工参加活动 误伤情敌 肉麻示爱妻子(图) 金友庄控高凌风不顾孩子又偷吃 2011首季度电影票房“明降暗升 泡妞考学认清社会 何洁挺孕肚怀抱大儿子甜蜜入睡 解读EXO鹿晗解约 身价打4折跪地吻红毯 Makiyo醉酒打人失代言 马苏颁奖秀美背 无心争视帝有意演哑巴