文档视界 最新最全的文档下载
当前位置:文档视界 › 单片机死机复位程序

单片机死机复位程序

单片机死机复位程序
单片机死机复位程序

MCS-51系统软复位的深入研究

摘要在没有硬件看门狗的系统以及一些对单片机I/O口线状态高度敏感的系统中,软复位功能相当重要。标准MCS-51以及很多常见的51内核单片机没有提供“软复位”方法。本文分别以5lasm子程序和C51函数的形式,为MCS-51单片机系统提供完善的“软复位”方法。

关键词 MCS-51单片机软复位51asm C51

引言

复位是单片机的初始化操作,其作用是使单片机和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。

标准MCS-51的复位逻辑比较简单,只有通过复位引脚RST进行外部扩展。对于具有外部看门狗芯片的系统,当单片机由于某种原因程序“跑飞”而没有按时“喂狗”,或由软件陷阱捕捉到程序运行的异常,而故意不“喂狗”时,看门狗芯片会给单片机的RST引脚提供一个复位信号,让单片机进行一次“硬”复位,以恢复程序的正常运行;有些5l内核的单片机具有片内的看门狗,或者提供可访问的寄存器实现“软件复位”。一般实现的也都是与在RST引脚提供复位信号等价的“硬”复位。

在有些应用中,由于单片机所接外设严格依附干单片机口线的时序,甚至不允许硬件复位时对口线的复位操作;或由于系统没有外部看门狗,只能用软件监测程序运行异常并重新对单片机进行初始化操作,这时就需要所谓的“软复位”了。

在互联网上可以找到一些软复位的方法,但都不够完善或不方便使用,基于C5l的软复位更是一个难点。本文提出一种功能完善、占用资源少的实现方法,在51asm和C51下都可方便使用。

1 “软复位”要实现的功能

对于MCS-51系统,所谓“软复位”是一种由用户软件控制的复位活动,利用一系列指令来模拟硬件复位所实现的各种操作内容,并且重新从头开始执行用户程序。其内容包括:

①程序计数器PC的复位,从0000H开始执行程序;

②中断优先级状态触发器的复位;

③特殊功能寄存器的复位;

④程序跑飞前状态的尽量恢复。

其中,特殊功能寄存器的复位可根据具体系统的需要,在软复位以前对相关寄存器逐个赋值再软复位的方法完成,或在复位以后的初始化程序中实现;程序跑飞前状态的恢复也可根据RAM中存留的数据来进行判断处理。本文重点讨论关于程序计数器的复位和中断优先级状态触发器的复位,在此基础上不难再增加特殊功能寄存器的复位和程序跑飞前状态的恢复,下文不再涉及相关代码。

程序计数器的复位容易实现,一条“LJMP 0000H”即可。中断优先级状态触发器的复位则比较困难,由于它们对于用户程序是不可见的,无法直接读写其内容,只有用RETI指令才能清除。又由于51单片机两级中断机制,低优先级中断有可能被高优先级中断再次中断而形成中断再入,而一次RETl只能退出当前优先级中断并清除相应的中断优先级状态触发器,因此最坏情况下需要两次RETI才能确保中断优先级状态触发器的复位。综合考虑,可先用压栈的方法准备跳转后的入口地址,再用RETI来完成跳转和清除中断优先级状态触发器的双重任务,把以上过程执行两次,前一次的目标地址是后一次的入口,后一次则跳转到0000H,完成复位过程。

2 软复位的实现方法

前已述及软复位要完成的功能,包含程序计数器PC的复位、中断优先级状态触发器的复位、特殊功能寄存器的复位(略)和程序跑飞前状态的恢复(略)。下面分别用汇编程序和C51程序来实现,重点介绍C51程序的实现方法。

2.1 51asm汇编程序实现

使用时,在软件陷阱处理程序段或软件看门狗中用“LJMP #RST_O”指令跳转到此段程序入口处即可。

2.2 C51程序实现

用C语言实现MCS-51系统的软复位,互联网上出现过多种版本,但都不够完善。以下基于业界应用最广泛的编译器Keil C51来讨论。如:

这段程序,用强制类型转换把地址0000H转换成re-set_not_best_O()函数的入口。实际上调用函数reset_not_best_O()等价于“LJMP 0000H”,没有处理可能的中断状态问题。

又如:

这段代码中,一维字符数组中为复位代码的机器码。“(*((Void(*)())(rst)))()”是把rst这个字符数组的地址强制转换成函数指针,并调用。实际上调用函数reset_not_best_1()是执行了一段如下代码:

可见,调用一次reset_not_best_l()函数相当于执行了1次清除中断优先级状态触发器的动作,然后跳转到0000H重新执行。但此段代码仍然可能被再次中断失效,或者当原来堆栈已经溢出时导致对0000H地址的压栈错误,不能正确实现“软复位”功能。除此之外,由于KeilC5l在把控制权交给函数main()之前对内部R AM进行初始化的代码是:

此处R0作为循环变量使用,对内部RAM从7FH单元开始,按照每次递减的方法对内部RAM逐一进行清零。当R0指向00H时,以上程序可以很好地完成清零工作;然而R0依据RS0、RSl取值的不同,可以指向00 H、08H、10H或18H单元。当:R0指向08H、10H或18H时,上面所列清零程序将陷入死循环。分析如下:

以RS0=1、RSl=0,即RO指向08H为例。自标号LOOP处起始的循环进入时的状态是:R0=7FH,PC=# LOOP。设程序已执行到R0=08H,PC=#LOOP,此时执行PC指向处的指令“MOV @RO,A”,将把(RO)清零,也即08 H单元清零。由于R0指向08H,实际上R0也被清零了,此时RO=00H,PC=#LOOPl;再执行一条指令“DJNZ R0,L O OP”,R0将由00H自减为OFFH,回到R0=OFFH,PC=#LOOP的状态;继续执行,将再次出现R0==08H,PC=#LOOP 的状态,陷入死循环。当R0指向10H或18H单元时也类似会陷入死循环。为了避免上述问题,可以把字符数组中机器码改为与以下程序段对应:

调用改造后的reset_not_best_l()函数将清除中断优先级状态触发器,并跳转到0000H单元继续执行,从而实现了软复位。但由于只执行了1次RETT指令,在复位前出现了中断再入的极端情况下,仍会出现低优先级中断放锁死的现象。由于无法在字符数组中实现对最终代码地址的取得,无法如2.1节汇编程序中的“M OV DPTR,#RSTl”一样读取绝对地址,因此也无法实现如同2.1节中的两次RETl来保证清除全部的中断优先级状态触发器。解决的办法是,在内存中设置标志flag,每次复位后都检查特定标志,接如下伪代码来判定(假定复位标志设为0x55,若复位后发现标志字为0x55则转正常初始化程序,否则置复位标志为0x55,再次复位):

但这种办法有两个弊端:其一,万一在程序跑飞时刚好处在中断再入中,且flag所在的RAM地址中由于某种原因恰好是0x55,低级中断仍是被锁死的;其二,Keil C5l的缺省编译模式是加上了初始化程序段st artup.A51的,在这段程序中对全部的内部RAM都进行了初始化,复位标志也会被清0,flag将失效。因此要正常使用标志flag必须手工修改startup.A5l,不要清除flag单元,或者禁止stanup.A5l的使用,自己对内部RAM进行初始化,都比较繁琐。

若用以下reset_best()函数,则可顺利解决上述问题:

在此函数中,首先定义了结构体类型ResetStruct,它包含字符数组rstcode和16位整型数addr两个成员。在结构体变量的RST实例中,RST.rstcode是复位代码对应的机器码,RST.addr的值是RST.rstcod

e这个数组的首地址+偏移量0x15。其实是以下汇编代码中标号rstl处的地址,也即是“#rstl”,由Keil C51在编译时自动计算得到。

此reset_best()函数巧妙地利用C语言中数组名即是数组首地址(其实质就是这一段“软复位”代码的入口地址!),把数组名+偏移量0x15赋值给结构体的int型的成员addr,则正好把软复位代码中标号rstl的入口地址两个字节取了出来(由KeilC51在编译连接时完成),存放在RST.addr中,由于结构体连续存储,RST.a

c单片机上电复位和复位延时的时序分析

80C51单片机上电复位和复位延时的时序分析 80C51单片机的上电复位POR(Power On Reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上.为什么在每次单片机接通电源时,都需要加入一定的延迟时间呢?分析如下. 1 上电复位时序 在单片机及其应用电路每次上电的过程中,由于电源回路中通常存在一些容量大小不等的滤波电容,使得单片机芯片在其电源引脚VCC和VSS之间所感受到的电源电压值VDD,是从低到高逐渐上升的.该过程所持续的时间一般为1~100 ms(记作taddrise).上电延时taddrise的定义是电源电压从10% VDD上升到90% VDD所需的时间,如图1所示. 图1 上电延时taddrise和起振延时tosc实测结果 在单片机电源电压上升到适合内部振荡电路运行的范围并且稳定下来之后,时钟振荡器开始了启动过程(具体包括偏置、起振、锁定和稳定几个过程).该过程所持续的时间一般为1~50 ms(记作tosc).起振延时tosc的定义是时钟振荡器输出信号的高电平达到Vih1所需的时间.从图1所示的实际测量图中也可以看得很清楚.这里的Vih1是单片机电气特性中的一个普通参数,代表XTAL1和RST引脚上的输入逻辑高电平.例如,对于常见的单片机型号AT89C51和AT89S51,厂家给出的Vih1值为0.7VDD~VDD+0.5 V. 从理论上讲,单片机每次上电复位所需的最短延时应该不小于treset.这里,treset等于上电延时taddrise与起振延时tosc之和,如图1所示.从实际上讲,延迟一个treset往往还不够,不能够保障单片机有一个良好的工作开端. 在单片机每次初始加电时,首先投入工作的功能部件是复位电路.复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时,如图2所示.

单片机复位原理总结

题6是作者在2006年10月份全国巡回人才招聘的考题,居然60%的同学得零分,却只有一位同学得满分,这种现象值得我们彻底地反思。 题6:单片机上电复位电路如图3所示,请回答下列问题(12分): (1)该复位电路适用于高电平复位还是低电平复位? (2)试述复位原理,画出上电时Vc的波形; (3)试述二极管D的作用。 图3RC复位电路 答案:(1)低电平复位。 (2)在图3中,CPU上电时,但由于电容C两端的电压V C不能突变,因此V C保持低 不断上升,上升曲线如图4所示。只要选择合适电平。但随着电容C的充电,V C 就可以在CPU复位电压以下持续足够的时间使CPU复位。复位之后,的R和C,V C V 上升至电源电压,CPU开始正常工作。相当于在CPU上电时,自动产生了一个C 一定宽度的低电平脉冲信号,使CPU复位。 4 RC充放电曲线 图 (3)当电源电压消失时,二极管D为电容C提供一个迅速放电的回路,使/RESET端迅速回零,以便下次上电时CPU能可靠复位。 这是一个非常重要的知识点,如果CPU的复位电路设计得不合理将会导致CPU严重死机,并且影响与CPU有关的外围器件的稳定性,比如存储器上电丢失数据。因此我们在学习的过程中,一定要善于将前后的知识连贯起来。千万不要随意放过哪怕一个细小的问题,只有这样才能做到融会贯通。在管理新产品的开发过程中,作者发现出现质量事故的产品都是由一些看起来并不起眼的小问题所引起的,最终给企业带来的损失却是巨大的,甚至是毁灭性的打

击。 二、复位电路的工作原理 在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2US就可以实现,那这个过程是如何实现的呢? 在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。 开机的时候为什么为复位 在电路图中,电容的的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。 也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。 按键按下的时候为什么会复位 在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。 总结: 1、复位电路的原理是单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。 2、按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。

51单片机复位电路有关问题

想问一下单片机复位电路问题 复位过程我明白,RST接高电平复位,接低电平单片机正常工作 但电路连接不太理解什么意思, 想知道图中电解电容的作用,既然是按键高电平复位为什么要加电解电容呢不加可以吗?如果一定要加原因是什么? 另外想知道电容作用是隔直流通交流,是绝对的直流不通过还是什么充电过程无电流放电过程有电流,求指教 我认为绛红的蓝同学说的不太好。 电容确实可以起到按键去除抖动的作用,但是这里的电容还有一个更重要的作用就是上电复位,因为考虑到芯片刚刚上电时由于供电不稳定而做出错误的计算,所以增加一个上电复位以达到延时启动CPU的目的,使芯片能够正常工作。虽然现在很多芯片自带了上电延时功能,但是我们一般还是会增加额外的上电复位电路,提高可靠性。 上电复位是如此工作的,此时不用考虑按键和你图中1K电阻的作用。上电瞬间,电压VCC短时间内从0V上升到5V(比方说5V),这一瞬间相当于交流电,电容相当于导线,5V的电压全部加在10K电阻上,也就是说,这时RST的电平状态为高电平。但是从上电开始,电容自己就慢慢充电,其两端电压呈曲线上升,最终达到5V,也就是说其正端电位为5V,负端电位为0V,其负端也就正好是RST,此时RST为低电平,单片机开始正常工作。 添加按键是为了手动复位,一般那个1K电阻可以不加。当按键按下时,电容两端构成回路并放电,使RST端重新变为高电平,按键抬起时电容又充电使RST 变回低电平。 复位电路的作用 在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。 无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。 基本的复位方式 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位 1、手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。

单片机最小系统原理图

单片机最小系统 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的 系统. 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路. 下面给出一个51单片机的最小系统电路图. 说明

复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让R C组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍. 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作) 单片机:一片AT89S51/52或其他51系列兼容单片机 特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的. 复位电路: 一、复位电路的用途 单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。 单片机复位电路如下图:

二、复位电路的工作原理 在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2US就可以实现,那这个过程是如何实现的呢? 在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。 开机的时候为什么为复位 在电路图中,电容的的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充

单片机各种复位电路原理

单片机各种复位电路原理 复位电路的作用 在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是 一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁 兼容性能。 无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设 计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可 靠引起的。 基本的复位方式 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始 工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位 1、手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。一般采用的办法是在RST 端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒, 所以,完全能够满足复位的时间要求。

图1 图2 2 、上电复位 AT89C51 的上电复位电路如图 2 所示,只要在RST 复位输入引脚上接一电容至Vcc 端,下接一个电阻到地即可。对于CMOS 型单片机,由于在RST 端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1μF。上电复位的工作过程是在加电时,复位电路通 过电容加给RST 端一个短暂的高电平信号,此高电平信号随着Vcc 对电容的充电过程而 逐渐回落,即RST 端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地 复位,RST 端的高电平信号必须维持足够长的时间。上电时,Vcc 的上升时间约为10ms ,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz ,起振时间为1ms ;晶振频率为1MHz ,起振时间则为10ms 。在图 2 的复位电路中,当Vcc 掉电时,必然会使RST 端电压迅速下降到0V 以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生 损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l态”。如果系统在上电时得不到有效的复位,则程序计数器PC 将得不到一个合适的初值,因此,CPU 可能会从一个未被定义的位置开始执行程序。 2 、积分型上电复位 常用的上电或开关复位电路如图 3 所示。上电后,由于电容C3 的充电和反相门的作用,使RST 持续一段时间的高电平。当单片机已在运行当中时,按下复位键K 后松开,也能使RST 为一段时间的高电平,从而实现上电或开关复位的操作。 根据实际操作的经验,下面给出这种复位电路的电容、电阻参考值。 图3 中:C:=1uF ,Rl=lk ,R2=10k

单片机复位电路参数计算

系统上电时,随着Vcc 电压由0V 增加到5V ,电容C1的上极板电位随之增加,电容的内电场增强,使C1能吸引更多的电子通过R 到达下极板,从外面看就电流通过C1 和R10入地。按电压在随着电流方向逐惭降低的原则,电流的出现会在R10端形成一大于0的电位。由于电容的充电逐渐饱和,所以电流会逐渐减小,电位也会逐渐减小。该电位的大小和持续的时间将直接影响到我们的系统能否上电复位。在AT89C51的规格书中有这么一段描述: 如果当Reset Pin 有两个机器周期的时间是高电平,那么就会系统就会被复位。 震荡频率震荡周期1 = 12*震荡周期机器周期= 所以对于12M 晶振做为“原动力”的系统来说,使系统复位的时间t 应大于: us M t 212*121 *2== 两个机器周期的时间求出来了,但是多高的电平才算是高电平呢?由AT89C51是规格书中关于其DC 特性的描述中可以知道,当Reset Pin 上的电压超过Min=0.7Vcc 时Reset Pin 就会认为是高电平。事先假设的系统电压为5V ,Vcc 在这里可以看成5V ,所以如果Reset Pin 上的电压超过0.7Vcc=3.5V ,就可以看成Reset Pin 为高电平,如果这超过3.5V 的电平持续时间超过2uS ,那么系统就会复位。 最后一步就是计算RST_H 处的电位了。不考虑流入Reset Pin 内电流,该电路就是一阶RC 电路。电容两端暂态电流与电压的关系式如下:

()()()()[]RC t C C C C U U U t U -+∞-+∞=e 因为()V U C 5=∞;()V U C 00=+;所以 ()RC t C t U --= 55 设Reset pin 电压为()t U R ,那么: ()()t U V t U C CC R -= 所以, ()RC t R t U -= 5, 当()V t U R 4.3=的时, RC t 357.0= 当且仅当 us RC t 2357.0≥=时,系统才会复位,即满足条件 610*6.5-≥RC 所以用R=1K Ω、C=22μF 符合要求

单片机复位电路理图解

单片机复位电路原理图解 复位电路的作用 在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。 无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。 基本的复位方式 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位 1、手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。一

般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。 图1 图2 2、上电复位 AT89C51的上电复位电路如图2所示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电

容减至1µF。上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图2的复位电路中,当Vcc 掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。 2、积分型上电复位 常用的上电或开关复位电路如图3所示。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。 根据实际操作的经验,下面给出这种复位电路的电容、电阻参考值。图3中:C:=1uF,Rl=lk,R2=10k

单片机系统复位电路

单片机复位电路 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V 低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。 复位电路的分类: 单片机复位电路主要有四种类型:(1)微分型复位电路;(2)积分型复位电路;(3)比较器型复位电路;(4)看门狗型复位电路。 ISA总线的复位信号到南桥之间会有一个非门,跟随器或电子开关,常态时为低电平,复位时为高电平。IDE的复位和ISA总线正好相反,通常两者之间会有一个非门或是一个反向电子开关,也就是说IDE常态时为高电平,复位时为低电平,这里的高电平为5V或3.3V,低电平为0.5V以下的电位。 任何单片机在工作之前都要有个复位的过程,复位是什么意思呢?它就象是我们上课之前打的预备铃。预备铃一响,大家就自动地从操场、其它地方进入教室了,在这一段时间里,是没有老师干预的,对单片机来说,是程序还没有开始执行,是在做准备工作。显然,准备工作不需要太长的时间,复位只需要5ms的时间就可以了。如何进行复位呢?只要在单片机的RST引脚上加上高电平,就可以了,按上面所说,时间不少于5ms。为了达到这个要求,可以用很多种方法。实际上,我们在上一次实验的图中已见到过了。 复位电路工作原理如上图所示,VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下S,C放电。S松手,C又充电,在10K电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。 单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期,具体数值可以由RC电路计算出时间常数。 如上图所示,单片机复位电路是由按键复位和上电复位两部分组成。其中,STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF.而按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。

80C51单片机的上电复位POR

80C51单片机的上电复位POR(Pmver On Reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。为什么在每次单片机接通电源时,都需要加入一定的延迟时间呢?分析如下。 1 上电复位时序 在单片机及其应用电路每次上电的过程中,由于电源同路中通常存在一些容量大小不等的滤波电容,使得单片机芯片在其电源引脚VCC和VSS之间所感受到的电源电压值VDD,是从低到高逐渐上升的。该过程所持续的时间一般为1~100ms(记作 tsddrise)。上电延时taddrise的定义是电源电压从lO%VDD上升到90%VDD所需的时间,如图1所示。 在单片机电源电压上升到适合内部振荡电路运行的范围并且稳定下来之后,时钟振荡器开始了启动过程(具体包括偏置、起振、锁定和稳定几个过程)。该过程所持续的时间一般为1~50 ms(记作tOSC)。起振延时tOSC的定义是时钟振荡器输出信号的高电平达到Vih1所需的时间。从图1所示的实际测量图中也可以看得很清楚。这里的 Vih1是单片机电气特性中的一个普通参数,代表XTALl和RST引脚上的输入逻辑高电平。例如,对于常见的单片机型号AT89C5l和 AT89S5l,厂家给出的Vih1值为0.7VDD~VDD+0.5V。 从理论上讲,单片机每次上电复位所需的最短延时应该不小于treset。这里,treset等于上电延时taddrise与起振延时tOSC之和,如图1所示。从实际上讲,延迟一个treset往往还不够,不能够保障单片机有--一个良好的工作开端。 在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时

单片机延时程序

实验一单片机延时程序实验 一、实验目的与要求: 在使用4MH在外部晶体振荡器的PIC16F877A上用软件设计一个20ms的软件延时子程序。另外,还要求用MPLAB的软件模拟器及其附带的软件工具窗口stopwatch观测延时程序执行的时间。 二、实验内容: 1.硬件电路设计: 本实验中用的是软件延时,利用循环来实现延时功能。电路就用了单片机的原本电路。没有用到其他的功能模块,单片机与ICD3相连接。 2.软件设计思路: 单片机软件延时的前提和基础是每条指令的执行时间是固定的,且大部分指令的执行时间是相同的。这要求对每条指令所花费的指令周期(Tcy)做到心中有数。指令集中5条无条件跳转指令GOTO,CALL.RETURN,RETLW和RETFIE,由于它们必然引起程序跳转,造成流水线中断,因此肯定将占用2个指令周期。而其他4条有可能引起程序跳转的条件跳转指令DECFSZ,INCFSZ,BTFSC和,BTFSS的执行时间,需要占用2个指令周期,当条件为假不发生跳转时,仅占用1个指令周期。其余所有指令都只用1个指令周期。

每个指令周期Tcy的时间长度,计算方法:如果采用4MHz 的外部晶体(fosc=4 MHz),则PIC中档单片机的指令周期Tcy 为1us,这是一个整数。而采用其他频率的外部晶体时,指令周期时间将反比于外部晶体频率。 至于软件延时的结构和实现方法,其实可以采用任何指令和结构,因为只是通过执行指令耗费时间。但通常情况下有两个选择延时程序结构的原则: (1)执行指令周期数计算方便。如果含有太多复杂的条件跳转循环等结构势必会造成指令周期的计算困难,甚至可 能造成执行所造成的软件延时时间不等。 (2)不能占用太多的程序空间。试想用20000个NOP指令来实现20ms的延时,显然是可以的,但是这样做浪费了 整整一个页的程序存储器,得不偿失,而通过适当的循 环结构,重复执行某些相同的程序是比较合理的方法。 因此,软件延时程序一般采用下列方法:如果延时时间 短(微妙级别),可以连续插入几条NOP指令;如果延 时时间长(几个毫秒级别),则可以使用双嵌套循环的 方法来实现。 实验的流程图:

单片机常用复位电路

单片机复位电路设计 一、概述 影响单片机系统运行稳定性的因素可大体分为外因和内因两部分: 1、外因 射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰; 电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。 2、内因 振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定。起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。 二、复位电路的可靠性设计 1、基本复位电路 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。图1所示的RC复位电路可以实现上述基本功能,图3为其输入-输出特性。但解决不了电源毛刺(A 点)和电源缓慢下降(电池电压不足)等问题而且调整 RC 常数改变延时会令驱动能力变差。左边的电路为高电平复位有效右边为低电平 Sm为手动复位开关Ch 可避免高频谐波对电路的干扰。

图1 RC复位电路 图2所示的复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。图3所示复位电路输入输出特性图的下半部分是其特性,可与上半部比较增加放电回路的效果 图2 增加放电回路的RC复位电路 使用比较电路,不但可以解决电源毛刺造成系统不稳定,而且电源缓慢下降也能可靠复位。图4 是一个实例当 VCC x (R1/(R1+R2) ) = 0.7V时,Q1截止使系统复位。Q1的放大作用也能改善电路的负载特性,但跳变门槛电压 Vt 受 VCC 影响是该电路的突出缺点,使用稳压二极管可使 Vt 基本不受VCC影响。见图5,当VCC低于Vt(Vz+0.7V)时电路令系统复位。 图3 RC复位电路输入-输出特性

单片机复位电路

单片机在启动运行时都需要复位,复位使CPU 和系统中的其他部件都处于一个确定的工作状态,并从这个状态开始工作。在系统中,有时也会出现显示不正常,也为了调试方便,需要设计一个复位电路,复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。 在此系统中单片机的复位靠外部电路实现的,AT89C51单片机有一个复位引脚RST ,高电平有效。只要RST 保持高电平,单片机便保持复位状态。此时,ALE/PSEN 、P0、P1、P2、P3口都输出高电平。RST 变成低电平后,退出复位状态,CPU 开始正常工作。需要注意的是,复位操作不影响片内RAM 的内容。 复位电路的基本功能是系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。图1为基本RC 复位电路,其电路为高电平复位有效, SW1为手动复位开关,可以实现上述基本功能。 图1基本RC 复位电路 对于图1中的电阻10R 两端的电压R u (即复位信号)是一个时间的函数。上电复位时R u 和t 有以下函数关系,波形图如图2(a )所示。 ) 2.2.3(V u C R R 10a e cc t - ?= 按键复位时设t 在0~0t 之间时SW1合上,t 0t ≥ 时,SW1断开,则R u 和t 有以下函数关系,波形图如图2(b )所示。 ) 2.2.3()1(0)1(2 1 0110 11010 110b t t e e V R R R t t e V R R R u o t t CC o t CC R ????? ??≥-+<<-+=- --τττ 其中,C R //1011?=R τ,C R 102?=τ,Vcc 为电源电压(+5V )。

单片机复位电路设计

单片机复位电路设计 :blog.sina.. /s/blog_4b7b591401000ai0.html 一、概述 影响单片机系统运行稳定性的因素可大体分为外因和内因两部分: 1、外因 射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰; 电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。 2、内因 振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。 二、复位电路的可靠性设计 1、基本复位电路 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。图1所示的RC复位电路可以实现上述基本功能,图3为其输入-输出特性。但解决不了电源毛刺(A 点)和电源缓慢下降(电池电压不足)等问题而且调整RC 常数改变延时会令驱动

能力变差。左边的电路为高电平复位有效右边为低电平Sm为手动复位开关Ch 可避免高频谐波对电路的干扰调频FM发射话筒制作套件 图1RC复位电路 图2所示的复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。图3所示复位电路输入输出特性图的下半部分是其特性,可与上半部比较增加放电回路的效果电子元件邮购 图2增加放电回路的RC复位电路 使用比较电路,不但可以解决电源毛刺造成系统不稳定,而且电源缓慢下降也能可靠复位。图4 是一个实例当VCC x (R1/(R1+R2) ) = 0.7V时,Q1截止使系统复

单片机上电复位

80C51单片机的上电复位POR 80C51单片机的上电复位POR(Power On Reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。为什么在每次单片机接通电源时,都需要加入一定的延迟时间呢?分析如下。 1 上电复位时序 在单片机及其应用电路每次上电的过程中,由于电源回路中通常存在一些容量大小不等的滤波电容,使得单片机芯片在其电源引脚VCC和VSS之间所感受到的电源电压值VDD,是从低到高逐渐上升的。该过程所持续的时间一般为1~100ms(记作taddrise)。上电延时taddrise的定义是电源电压从10% VDD 上升到90% VDD所需的时间,如图1所示。 图1 上电延时taddrise和起振延时tosc实测结果 在单片机电源电压上升到适合内部振荡电路运行的范围并且稳定下来之后,时钟振荡器开始了启动过程(具体包括偏置、起振、锁定和稳定几个过程)。该过程所持续的时间一般为1~50 ms(记作tosc)。起振延时tosc的定义是时钟振荡器输出信号的高电平达到Vih1所需的时间。从图1所示的实际测量图中也可以看得很清楚。这里的Vih1是单片机电气特性中的一个普通参数,代表XTAL1和RST引脚上的输入逻辑高电平。例如,对于常见的单片机型号AT89C51和AT89S51,厂家给出的Vih1值为0.7VDD~VDD+0.5 V。

从理论上讲,单片机每次上电复位所需的最短延时应该不小于treset。这里,treset等于上电延时taddrise与起振延时tosc之和,如图1所示。从实际上讲,延迟一个treset往往还不够,不能够保障单片机有一个良好的工作开端。 在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时,如图2所示。 图2 复位信号释放的时机 2 上电复位电路3款 上述一系列的延时,都是利用在单片机RST引脚上外接一个RC支路的充电时间而形成的。典型复位电路如图3(a)所示,其中的阻容值是原始手册中提供的。在经历了一系列延时之后,单片机才开始按照时钟源的工作频率,进入到正常的程序运行状态。从图2所示的实测曲线中可以同时看到4条曲线:VDD、Vrst、XTAL2和ALE。在电源电压以及振荡器输出信号稳定之后,又等待了一段较长的延时才释放RST信号,使得CPU脱离复位锁定状态;而RST 信号一旦被释放,立刻在ALE引脚上就可检测到持续的脉冲信号。

MSP430复位电路(MAX809)

MSP43O单片机复位电路可靠性设计 引言 TI公司的混合信号处理器MSP430系列单片机以其处理能力强大、外围器件集成度高、功率消耗低、产品系列全面、全系列工业级等特点,作为目前MCU主流市场的产品之一,在电子应用领域中得到广泛应用,被越来越多的电子设计师所青睐。由于复位电路设计问题而导致的系统出现上电后不工作或状态不正确是很多MSP430单片机电路设计者们在设计、调试和应用中曾遇到过的问题,尽管这种情况发生的几率很低,但对于可靠性要求较高的应用场合,这个现象仍需引起电子设计人员的足够重视。 为此,本文对MSP430全系列单片机的复位系统和复位机制进行了详细深入的分析,并针对性地提出了具体的外围复位电路设计方案和有关电子元器件的详细介绍,以供同行参考和交流。 1、MSP430复位机制 1.1 MSP430复位电路 MSP430的复位电路包括一个上电复位(POR)和上电清除信号(PUC)。POR是设备复位信号,它通常在以下三种事件发生时被触发:a.上电;b.复位模式下RST/NMI脚出现低电平;c.电压监控设备(Brownout)触发。 POR时序见图1(a)所示。 当供电电压VCC缓慢上升时,POR监测器保持POR信号有效直到VCC超出VPOR水平;当供电电压VCC快速上升时,POR延时t(POR DELAY)提供了足够长的有效POR信号以确保MSP430有足够的时间进行初始化。 1.2 Brownout电路 Brownout电路是电压不足重置功能电路。它取代了POR检测和POR延时电路。Brownout电路能够检测到上电或掉电过程中的较低的供电电压值,并能在供电或掉电过程中通过触发POR信号重置芯片。图l(b)为Brownout电路的复位时序。从图中看出,当VCC超过启动电压VCC(star-t)时POR 信号有效,POR信号保持有效直到VCC电压值高于极限电压V(B_IT+)并经过一段时间的延时t(BOR);滞后电压Vhys(B_IT-)用于确保供电电压必须低于V(B_IT-)时Brownout电路才会产生下一个POR信号。 1.3 复位失效过程分析 对于没有Brownout复位电路的情况,如果MSP430的供电电源是周期性的,当电源再次上电时,供电电压VCC在上一个周期的下降期或在受到干扰时必须低于Vmin(见图1)才能确保POR信号的发生,如果VCC不能低于Vmin,将不会产生POR信号,此时,即使在RST/NMI出现了低电平信号也不会产生一个有效的POR信号,系统无法正常复位。 Brownout复位电路存在于部分MSP430系列芯片中,如MSP430F13X和MSP430F14X系列就没有Brownout电路。对于没有Brownout电路的芯片应用系统,在工作时,由于受到干扰、电网波动、

CPU与单片机的复位电路的作用及基本复位方式

在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。 无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。 基本的复位方式 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。 1、手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。一般采用的办法是在RST 端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST 端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。 图1 2、上电复位

AT89C51的上电复位电路如图2所示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1?F。上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图2的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。 图2 3、积分型上电复位 常用的上电或开关复位电路如图3所示。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。 根据实际操作的经验,下面给出这种复位电路的电容、电阻参考值。 图3中:C:=1uF,Rl=lk,R2=10k

浅谈单片机上电复位后端口的状态问题

浅谈单片机上电复位后端口的状态问题 在MSP430单片机的手册中,对于端口复位后的状态,是这样描述的:复位后,所有端口处于输入状态。 就这个问题,我们来简单说一下单片机上电复位后端口的状态问题。 首先,单片机上电后端口的状态应尽量避免处于输出状态(无论是输出低还是输出高)为什么要这样说呢?因为单片机外围电路的动作就是靠单片机端口输出低电平或者高电平来控制的。假如单片机端口一上电就处于输出高或者低电平的状态,那么很容易出现误动作。例如,有一个端口是控制继电器的,在正常状态下,单片机端口输出低电平使得继电器吸合,输出高电平断开继电器。平时我们要求继电器处于断开状态,那就要让单片机的这个端口处于输出高电平的状态,但是如果这个单片机的端口在上电复位后是处于输出低电平的状态,这时候就会出现问题了,即使我们在程序中一开始就把这个端口置为输出高电平,但是在复位期间,这个端口的状态我们是无法控制的,于是就会出现一个瞬间的低电平,虽然这个低电平持续的时间很短,有时候不足以使继电器吸合,当继电器仍会有轻微的吸合动作。这显然是我们不希望看到的。 有些单片机复位后端口默认为输入口的原因前面我们说了,单片机上电后,如果端口默认为输出口,那么不管是输出低电平还是高电平,都可能会引起误动作,甚至会产生致命后果。 而假如端口上电后默认为输入口呢?我们知道,单片机的输出控制操作一般都是根据输入信号来实现的。这样的话,就会好很多,我们可以根据输入情况做处理,尤其是对于瞬间的输入,我们可以通过软件抗干扰技术来进行过滤,这样我们就能自己掌握主动,让误操作不会发生。 单片机复位后端口处于高阻态的原因单片机复位后端口处于高阻态的原因无外乎降低功

51单片机复位电路的设计

51单片机复位电路的设计- 懵懂者的日志- 网易博客(转载) 大白菜的书馆收藏 于 2011-11-12 阅读 数:1 被转藏: 1 公众 公开 原文 来源 修改如何标记批注? 51单片机复位电路的设计 默认分类2009-10-12 10:05:16 阅读1955 评论1 字号:大中小订阅 单片机在可靠的复位之后,才会从0000H地址开始有序的执行应用程序。同时,复位电路也是容易受到外部噪声干扰的敏感部分之一。因此,复位电路应该具有两个主要的功能: 1. 必须保证系统可靠的进行复位; 2. 必须具有一定的抗干扰的能力; 一、复位电路的RC选择 复位电路应该具有上电复位和手动复位的功能。以MCS-51单片机为例,复位脉冲的高电平宽度必须大于2个机器周期,若系统选用6MHz晶振,则一个机器周期为2us,那么复位脉冲宽度最小应为4us。在实际应用系统中,考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,必须有足够的余量。图1是利用RC充电原理实现上电复位的电路设计。实践证明,上电瞬间RC电路充电,RESET引脚出现正脉冲。只要RESET端保持10ms以上的高电平,就能使单片机有效的复位。 图1 对于图1-a中的电容C两端的电压(即复位信号)是一个时间的函数:

u(t)=VCC*[1-exp(-t/RC)] 对于图1-b中的电阻R两端的电压(即复位信号)也是一个时间的函数: u(t)=VCC*exp(-t/RC) 其中的VCC为电源电压,RC为RC电路的时间常数=1K*22uF=22ms。有了这个公式,我们可以更方便的对以上电路进行透彻的分析。 图1-a中非门的最小输入高电平UIH=2.0v,当充电时间t=0.6RC时,则充电电压u(t)=0.45VCC=0.45*5V,约等于2V,其中t即为复位时间。图a中时间常数=22ms,则t=22ms*0.6=13ms。 二、复位电路的可靠性与抗干扰性分析 单片机复位电路端口的干扰主要来自电源和按钮传输线串入的噪声。这些噪声虽然不会完全导致系统复位,但有时会破坏CPU内的程序状态字的某些位的状态,对控制产生不良影响。 1.电路结构形式与抗干扰性能 以图1为例,电源噪声干扰过程示意图如图2种分别绘出了A点和B点的电压扰动波形。 有图2可以看出,图2(a)实质上是个低通滤波环节,对于脉冲宽度小于3RC的干扰有很好的抑制作用;图2(b)实质上是个高通滤波环节,对脉冲干扰没有抑制作用。由此可见,对于图1所示的两种复位电路,a的抗干扰电源噪声的能力要优于b。 2. 复位按钮传输线的影响 复位按钮一般都是安装在操作面板上,有较长的传输线,容易引起电磁感应干扰。按钮传输线应采用双绞线(具有抑制电磁感应干扰的性能),并远离交流用电设备。在印刷电路板上,单片机复位端口处并联0.01-0.1uF的高频电容,或配置使密特电路,将提高对串入噪声的抑制能力。

相关文档
相关文档 最新文档