❶ 单片机的硬件复位和软件复位有什么区别
嘿嘿 还是俺来帮你解答吧
1 单片机的硬件复位和门狗复位都是对单片机的复位引脚 加一个复位电平产生的 此时单片机
将进行复位操作 pc=0000h p0=p1=p2=p3=0ffh sp=07h 其它特殊寄存器将被清零。
复位结束后 单片机重新开始运行。
2 软件复位;
一般为了防止程序跑飞 可以在程序存储器中没有指令的地方 全部写入 LJMP 0000H指令
一旦单片机运行跑飞 进入LJMP 0000H指令区 将还返回单片机的第一条指令 重新运行单片机的正常程序.
软件复位时,P0 P1 P2 P3 和特殊寄存器的内容都不会再改变.这点与硬件复位不同.
呵呵 满意就给加分吧
❷ 51单片机如何实现软件复位系统(C语言),谢谢
单片机实现软件复位(软复位)的方法及讨论
单片机实现软件复位(软复位)的方法及讨论
(天堂雨林博客blog.sina.com.cn/acer收集整理)
单片机软复位有什么好的方法?如从机收到复位命令(软件命令),程序怎么使机器复位?虽然要使软件始终处于可控状态,最好不要用"复位",因为复位是纯硬件过程,软件是不可控的.但是我们还是要讨论方法,一般流传的方法如下:
1、放狗;
2、((void(code *)(void))0x0000)();
3、用单片机一个引脚控制点一下RSTRST;
4、用单片机一个引脚控制重新加电;
5、用单片机自带的软件复位指令或内狗指令;
6、goto大法;
天堂雨林博客对以上方法的意见:
方法1:“放狗”是单片机软复位的最好办法,也基本上是唯一的一个办法。但并不是所有单片机都具备看门狗的功能,也不是一个万全之策。
办法2:这不是复位,只是把程序转到地址0去执行,不如用一个JMP更直接。目前可能极少数单片机或者用户已经自行添加Boot load时用户程序的程序开始地址并不为0x0000,所以需要查找这些特定单片机的启动地址。
在keil C51下面可以这样实现:
void soft_reset(void)
{
((void (code *) (void)) 0x0000) ();
}
在需要软件复位的地方使用语句:
soft_reset();
一般可实现软件复位。
办法3:用软件实现的硬复位。需要牺牲一个单片机引脚,且增加了单片机外部电路构造的复杂性,很不可取。
办法4:类似办法3,同样需要牺牲一个单片机引脚,且增加了单片机外部电路构造的复杂性,很不可取。但不能把它单单地当成是复位,应该叫上电复位。
办法5:Atmel 89C不带内狗,S的有内狗,只是一条指令就行。如STC的单片机有软件复位指令,即ISP_CONTR,地址在0E7H 单元(即str ISP_CONTR=0xE7),MOV ISP_CONTR,#00100000B(C语言为ISP_CONTR=0x20),内狗也是一条指令MOV WDT_CONTR,#00111100B!
STC 51系列单片机Datasheet中指出:传统的8051 单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦。现STC 新推出的增强型8051 根据客户要求增加了ISP_CONTR 特殊功能寄存器,实现了此功能。用户只需简单的控制ISP_CONTR 特殊功能寄存器的其中两位 SWBS / SWRST 就可以系统复位了。
办法6:程序从头(上电复位处)开始运行,且只有一个循环这种情况,当然可以用goto,如在main()的开头设一个start:,在程序的唯一循环中设定一个条件,然后goto命令。但需要注意,如果是在中断例程里,那么中断挂号寄存器仍置位,同级中断不能执行。所以必须先使中断挂号寄存器清零,EA = 0。只有RETI指令可以使中断挂号寄存器清零。51单片机有两级中断优先级,所以需要执行两次RETI指令。这用汇编是很简单的事,而C则比较难以实现。但是,goto命令尽量不要用,因为goto会到处乱窜,而且goto不能跑到函数外面去执行一个命令。
最后总结如下:最好使用办法5最为简洁方便,使用办法2实现也不失为一种好方法
❸ AVR单片机中晶振校准如何实现怎么测晶振是否校准
AVR本身功能只能校准片内RC吧,外部晶振本身就是一个基准,正常情况下偏差是很小的,可以通过两端的电容微调。要完全校准只能通过一个外部基准时钟来测出偏差值并记录下来,再在软件里根据偏差来调整
另外一般时钟晶振偏差会小很多,32.768K或它的倍频。
❹ 单片机怎么进行软件复位STC89C52
就从复位口引出一个按键和原来的复位开关并联就可以了。
用其它IO做需要软件配合,不通用。
❺ 单片机调试的方法和步骤是什么
首先,了解硬件接口以及功能,以便于配置IO端口;
第二,根据硬件设计以及功能需要,编写单片机程序;
第三,编译程序,把程序烧写到单片机中,或者链接debug调试器,在线对单片机进行仿真;
第四,在线仿真可以支持单步调试和断点调试,测试单片机的软件功能;
第五,如果出现问题,首先分析是软件逻辑的问题,还是硬件方面的问题,以便于对症下药;
最后,将软件写入单片机的flash中,将单片机加密,防止其他人窃取单片机内部代码。
❻ 请问pic单片机怎么软件强行复位。请教
(1)两边都是输入的话,那就是没人去置高低电平,呈现三态里的高阻态。(2)如果左侧单片机I/O是高或低电平,那右侧是就相应的电平;如果左侧单片机I/O是输入或空接,那高阻态电平不确定你不就是用光耦嘛,使用上拉或下拉的方法使光耦输入有一个确定电平就行了。即如你图所示,光耦二极管输入上方接上拉限流电阻到高电平,光耦二极管输入下方接地,你的单片机I/O接到光耦的二极管输入端(上拉电阻下方)即可。
❼ 温度传感器PT100应用电路
温度传感器PT100是一种稳定性和线性都比较好的铂丝热电阻传感器,可以工作在200℃ 至 650℃ 的范围。本电路选择其工作在 -19℃ 至 500℃ 范围。
整个电路分为两部分,一是传感器前置放大电路,一是单片机 A/D 转换和显示,控制,软件非线性校正等部分。
前置放大部分原理图如下: { pt100.date }
工作原理:
传感器的接入非常简单,从系统的 5V 供电端仅仅通过一支 3K92 的电阻就连接到 PT100 了。这种接法通常会引起严重的非线性问题,但是 由于有了单片机的软件校正作为后盾,因此就简化了传感器的接入方式。
按照 PT100 的参数,其在 0℃ 到 500℃ 的区间内,电阻值为 100 至 280.9Ω,我们按照其串联分压的揭发,使用公式:Vcc/(PT100+3K92)* PT100 = 输出电压(mV),可以计算出其在整百℃时的输出电压。
❽ 软件如何校正 单片机的电压表
实际测量最有效的办法,如果你的电路足够稳定