MCU复位后,RAM和ROM需要初始化,这些操作是软件执行还是硬...
楼上刷分党吗?首先你说mcu复位后到0000H地址开始之前,0000H指的是程序计数器的值,也是其指向ROM的地址,程序计数器开始工作,MCU才会执行ROM内的指令。
你指的应该是在程序计数器开始计数之前,所以这段时间内MCU是不会执行任何指令的,不执行指令也就谈不上软件操作。
RAM、ROM的初始化其实是RP(RAM的地址指针)和PC(程序计数器)的初始化,MCU复位结束的同时,这些早就完成了。
MCU的上电和MCU的复位是不同概念,MCU的复位有许多种,你指的这个复位其实是诸多不同功能的复位顺序完成后的一个系统状态,可以理解为一个MCU可以开始正常工作的使能信号,这时的MCU到程序开始执行只有很短的时间,基本是微秒或毫秒级的(除部分专用MCU有其他操作外)从上电到你说的这个过程,都是面向硬件工程师的,程序计数器工作后,才是写软件的人能看到的时间。
想从硬件结构方面学习请找微电子集成电路方向的文献,软件的话基本是本单片机的书就可以
mcu 进入复位模式后 怎样复位
这就看你的要求是什么了,如果只是要求从头开始重新执行程序,就转到0000H处。
但是,不能实现硬件复位的那些功能,例如,内部寄存器不能清0。
从这个意义上说,并不算是软件复位,因为,它没有这个功能。
如果是 AT89S51倒是可以,启动看门狗,当需要软件复位时,进入死循环,由看门狗来实现软件复位。
最后问一句,你用AT89C51是仿真吗?如果是实物,那你可用不了。
这都什么年代了,还用这种老掉牙的东西,首先,烧录程序就烧不了,那需要专用的编程器,可是早就没有人卖了。
那你问这个问题就毫无意义了。
你能确定,真是AT89C51吗,确实没有看错?
如何快速掌握一款新的MCU
任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。
对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址方式基本上是类似的。
因此,对于任何一款MCU,主要应从如下的几个方面来理解和掌握:* MCU的特点:要了解一款MCU,首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定时方式、所提供的外围功能模块(Peripheral Circuit)、中断源、工作电压及功耗等等。
* 了解这些MCU Features后,接下来第一步就是将所选MCU的功能与实际项目开发的要求的功能进行对比,明确那些资源是目前所需要的,那些是本项目所用不到的。
对于项目中需要用到的而所选MCU不提供的功能,则需要认真理解MCU的相关资料,以求用间接的方法来实现,例如,所开发的项目需要与PC机COM口进行通讯,而所选的MCU不提供UART口,则可以考虑用外部中断的方式来实现; * 对于项目开发需要用到的资源,则需要对其Manua*进行认真的理解和阅读,而对于不需要的功能模块则可以忽略或浏览即可。
对于MCU学习来讲,应用才是关键,也是最主要的目的。
* 明确了MCU的相关功能后,接下来就可以开始编程了。
对于初学者或初次使用此款MCU的设计者来说,可能会遇到很多对MCU的功能描述不明确的地方,对于此类问题,可以通过两种方法来解决,一种是编写特别的验证程序来理解资料所述的功能;另一种则可以暂时忽略,程序设计中则按照自己目前的理解来编写,留到调试时去修改和完善。
前一种方法适用于时间较宽松的项目和初学者,而后一种方法则适合于具有一定MCU开发经验的人或项目进度较紧迫的情况; * 指令系统千万不要特别花时间去理解。
指令系统只是一种逻辑描述的符号,只有在编程时根据自己的逻辑和程序的逻辑要求来查看相关的指令即可,而且随着编程的进行,对指令系统也会越来越熟练,甚至可以不自觉地记忆下来; MCU的基本功能: 对于绝大多数MCU,下列功能是最普遍也是最基本的,针对不同的MCU,其描述的方式可能会有区别,但本质上是基本相同的: * Timer(定时器):Timer的种类虽然比较多,但可归纳为两大类:一类是固定时间间隔的Timer,即其定时的时间是由系统设定的,用户程序不可控制,系统只提供几种固定的时间间隔给用户程序进行选择,如32Hz,16Hz,8Hz等,此类Timer在4位MCU中比较常见,因此可以用来实现时钟、计时等相关的功能;另一类则是Programmable Timer(可编程定时器),顾名思义,该类Timer的定时时间是可以由用户的程序来控制的,控制的方式包括:时钟源的选择、分频数(Prescale)选择及预制数的设定等,有的MCU三者都同时具备,而有的则可能是其中的一种或两种。
此类Timer应用非常灵活,实际的使用也千变万化,其中最常见的一种应用就是用其实现PWM输出(具体的应用,后续会有特别的介绍)。
由于时钟源可以自由选择,因此,此类Timer一般均与Event Counter(事件计数器)合在一起; * IO口:任何MCU都具有一定数量的IO口,没有IO口,MCU就失去了与外部沟通的渠道。
根据IO口的可配置情况,可以分为如下几种类型: ** 纯输入或纯输出口:此类IO口有MCU硬件设计决定,只能是输入或输出,不可用软件来进行实时的设定; ** 直接读写IO口:如MCS-51的IO口就属于此类IO口。
当执行读IO口指令时,就是输入口;当执行写IO口指令则自动为输出口; ** 程序编程设定输入输出方向的:此类IO口的输入或输出由程序根据实际的需要来进行设定,应用比较灵活,可以实现一些总线级的应用,如I2C总线,各种LCD、LED Driver的控制总线等; ** 对于IO口的使用,重要的一点必须牢记的是:对于输入口,必须有明确的电平信号,确保不能浮空(可以通过增加上拉或下拉电阻来实现);而对于输出口,其输出的状态电平必须考虑其外部的连接情况,应保证在Standby或静态状态下不存在拉电流或灌电流。
* 外部中断:外部中断也是绝大多数MCU所具有的基本功能,一般用于信号的实时触发,数据采样和状态的检测,中断的方式由上升沿、下降沿触发和电平触发几种。
外部中断一般通过输入口来实现,若为IO口,则只有设为输入时其中断功能才会开启;若为输出口,则外部中断功能将自动关闭(ATMEL的ATiny系列存在一些例外,输出口时也能触发中断功能)。
外部中断的应用如下: ** 外部触发信号的检测:一种是基于实时性的要求,比如可控硅的控制,突发性信号的检测等;而另一种情况则是省电的需要; ** 信号频率的测量;为了保证信号不被遗漏,外部中断是最理想的选择; ** 数据的解码:在遥控应用领域,为了降低设计的成本,经常需要采用软件的方式来对各种编码数据进行解码,如Manchester和PWM编码的解码; ** 按键的检测和系统的唤醒:对于进入Sleep状态的MCU,一般需要通过外部中断来进行唤醒,最基本的形式则是按键,通过按键的动作来产生电平的变化; * 通讯接口:MCU所提供的通讯接口一般包括SPI接口,UART,I2C接口等,...
看门狗复位指令怎么用?
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog) 看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段 进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位. 看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
所以在使用有看门狗的芯片时要注意清看门狗。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。
那么定时时间到后就会使单片机复位。
常用的WDT芯片如MAX813 ,5045, IMP 813等,价格4~10元不等. 软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。
我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。
对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。
在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。
而T1的中断正常与否我们再由T0定时中断子程序来监视。
这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。
51 系列有专门的看门狗定时器,对系统频率进行分频计数,定时器溢出时,将引起复位.看门狗可设定溢出率,也可单独用来作为定时器使用. 凌阳61的看门狗比较单一,一个是时间单一,第二是功能在实际的使用中只需在循环当中加入清狗的指令就OK了。
C8051Fxxx单片机内部也有一个21位的使用系统时钟的定时器,该定时器检测对其控制 寄存器的两次特定写操作的时间间隔。
如果这个时间间隔超过了编程的极限值,将产生一个WDT复位。
-------------------------------------------------------------------------------- 看门狗使用注意:大多数51 系列单片机都有看门狗,当看门狗没有被定时清零时,将引起复位。
这可防止程序跑飞。
设计者必须清楚看门狗的溢出时间以决定在合适的时候,清看门狗。
清看门狗也不能太过频繁否则会造成资源浪费。
程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器置数,即可预防溢出中断而引起的误复位。
看门狗运用:看门狗是恢复系统的正常运行及有效的监视管理器(具有锁定光驱,锁定任何指定程序的作用,可用在家庭中防止小孩无节制地玩游戏、上网、看录像)等具有很好的应用价值. 系统软件"看门狗"的设计思路: 1.看门狗定时器T0的设置。
在初始化程序块中设置T0的工作方式,并开启中断和计数功能。
系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的16次方)-1=65 535,T0输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
2.计算主控程序循环一次的耗时。
考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。
系统设置"看门狗"定时器T0定时30 ms(T0的初值为65 536-30 000=35 536)。
主控程序的每次循环都将刷新T0的初值。
如程序进入"死循环"而T0的初值在30 ms内未被刷新,这时"看门狗"定时器T0将溢出并申请中断。
3.设计T0溢出所对应的中断服务程序。
此子程序只须一条指令,即在T0对...
...我用的PL2303。
ISP下载软件一直提示:请给MCU上电。
不要说小白,任谁都是长期晒黑滴。
你别着急,人忙无智,也许问题很简单。
如果你的电路板上有大的电解电容器,断电以后,等长一点时间再上电烧录程序,目的是等电容器储存的电荷放掉。
不然单片机不认为是冷启动。
这样还不行,检查复位电路、晶振电路、烧写程序的连接电路,这些再没问题,换单片机吧。
导航mcu是什么?
Micro Control Unit,中文名称是微控制单元,ARM,DSP这类的芯片的总称。
释义:导航上出现“mcu acc immediately”,可能是启动前或熄火后,将钥匙转至“ACC”档位时,系统通知你“即刻采用微控ACC给导航仪供电”的意思。
简介:MCU也有人叫CPU是车载机的控制核心,在贴片前内部已烧录了程序,在维修时首先要掌握 MCU 的基本工作条件,才能准确判断故障。
需要条件:在内部程序正常情况下,其主要条件有四个 1.MCU 供电、2 .外接晶振、3 .复位电压、4 .ACC 信号,四个基本条件缺一不可。
如何检测单片机是上电复位还是看门狗复位
展开全部 这要看是什么型号的单片机,AT89S51和STC单片机,都有一个上电标志位POF,在PCON寄存器中,冷启动标志位为POF=1。
而看门狗复位对POF没有影响。
利用POF就可以判断了,开机先读PCON寄存器,当POF=1,就是冷启动,然后置0,POF=0。
如果读PCON,当POF=0,就说明是软件复位,即看门狗复位。
...
用单片机控制继电器从而控制电磁阀,单片机复位。
用单片机控制继电器,在用继电器控制电磁阀,单片机复位后继电器断电。
这个是可以的,这个控制要求符合电器的控制规范。
控制方法:单片机控制继电器,继电器控制电磁阀。
继电器的作用就是用来隔离单片机内部输出触点的,这跟PLC输出控制继电器是一个道理。