单片微机系统初始化状态(上电复位后)

一是上电复位,在给系统(电路)通电时马上进行复位操作;在电源上电以及在正常工作时电源电压异常或被干扰时,电源电压不稳定,对单片机工作的稳定性可能带来严重的影响。比如,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,可以按下复位按钮,内部的程序自动从头开始执行。

对于任何微机系统来说,系统上电复位是开始工作的第一步。 上电复位使整个系统进入或返回到默认的初始硬件状态,以便准备工作。

上电或复位后,让CPU保持一段时间(实际上很短的时间)处于复位状态,而不是上电或复位完成后立即工作,以防止CPU发出错误指令,执行错误的操作操作,并提高电磁兼容性。 表现。

复位电路的性能直接影响整个系统的可靠性。 很多小伙伴在实验室设计好单片机系统并调试成功后,在现场都出现了“死机”、程序“飞”等现象。 这主要是由于单片机的复位电路设计不可靠造成的。

2.单片机系统初始化状态(复位)

单片机引脚功能:

微控制器的复位由RESET引脚控制。 该引脚输入高电平超过两个机器周期后,单片机进入芯片内部复位状态,并在此状态下等待,直到RESET引脚变低。 电平确定后,检查EA引脚是高电平还是低电平。 如果为高电平,则执行芯片内部的程序代码。 如果为低电平,则执行外部程序。 如果 RST 保持高电平,则微控制器处于循环复位状态。

当51单片机复位系统时,它会将一些重要的内部寄存器设置为特定值,而内部RAM中的数据保持不变。

复位后单片机的状态:

单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,表示程序从0000H地址单元开始执行。 微控制器冷启动后,片内RAM有一个随机值。 运行期间的复位操作不会改变片内RAM区域的内容。 复位后21个特殊功能寄存器的状态是确定值,见下表。

注:表中符号×表示随机状态;

A=00H,表示累加器已清零;

PSW=00H,表示选择寄存器组0为工作寄存器组;

SP=07H,表示堆栈指针指向片内RAM字节单元07H。 根据出栈操作先加后压的规则,将最先压入的内容写入08H单元;

Po-P3=FFH,表示各端口线已写入1。 此时每个端口既可用于输入又可用于输出;

IP=×××00000B,表示各中断源优先级低;

IE=0××00000B,表示关闭所有中断;

需要指出的是,记住复位后这些特殊功能寄存器的主要状态对于理解单片机的初始状态和编写应用程序的初始化部分是非常有必要的。

3.重置情况

启动复位时一般有以下三种情况:

第一种是上电复位,系统(电路)上电后立即执行; 电源上电时以及正常工作时电源电压异常或受到干扰时,电源电压不稳定,可能会影响单片机的稳定性。 影响严重。 因此,必须在电源上电时进行复位; 必须监控正常运行期间的电源电压。 如果电源出现异常,就会进行强制复位,比如欠压复位。

第二种是手动复位,必要时可以手动操作,通常采用按钮。 例如,当单片机系统运行时,由于环境干扰导致程序跑掉时,可以按下复位按钮,内部程序会自动从头开始重新启动。

第三种是自动复位,根据程序或电路运行的需要自动进行,例如Watchdog。

单片微机系统初始化状态(上电复位后)

从电路实现的角度来看,单片机复位电路主要有四种类型:

(1)差分复位电路;

(2)积分复位电路;

(3)比较器式复位电路;

(4)看门狗式复位电路。

4、防止程序“飞走”

检测与控制系统以单片机为核心。 特别是在工业现场,系统会受到各种干扰的影响,导致程序计数指针(PC)的内容发生变化,扰乱程序的正常运行,并因偶然的重合而进入系统。 无限循环,这就是我们通常所说的程序“飞”。

当出现“飞越”情况时,系统将无法完成正常功能,导致整个系统陷入瘫痪,造成难以预料的后果。 这是非常有害的,有时甚至非常危险。 软件设计者在开发和设计软件时,必须采取措施防止程序逃逸或者一旦逃逸立即将程序恢复到指定的安全状态,使系统能够经受住不同环境下各种干扰的考验。始终保持安全稳定运行。 。

目前防止程序跑路的主要措施有:

1、设置监视跟踪定时器:利用定时中断来监视程序的运行状态。 若主程序正常运行一个周期的时间为t0,则设置定时器时间t1略大于t0,主程序运行过程中每次都要进行定时时间常数t1刷新操作。 这样,只要程序正常运行,定时器就不会产生定时中断; 当程序“跑飞”,定时常数无法刷新时,定时器就会产生中断,并使用定时中断服务程序来复位系统。

过去,传统的8051往往没有内置看门狗,需要外部看门狗。 例如,常用的看门狗芯片有Max813、5045、IMP706、DS1232等。

单片微机系统初始化状态(上电复位后)

看门狗复位电路(Watchdog):在程序运行异常时自动防止程序“飞走”而陷入死循环。

看门狗:编写一个程序P,实现如下功能:当系统正常运行、CPU正常工作时,定时复位某个计数器CTC,使计数器CTC的值不超过某个规定值t0; 当系统出现异常,CPU无法正常工作时,计数器CTC无法复位,其计数将超过t0,此时会产生复位脉冲并发送给看门狗,使CPU恢复正常工作状态。

2.设置软件陷阱。 当程序计数器指针的PC值失控,导致程序飞走进入非程序区时,只需在非程序区设置拦截措施,使程序进入陷阱,然后强制执行程序进入初始状态。

上述两种方法都有一定的缺点,一般都是结合使用。

像Watchdog这样的复位电路的可靠性主要取决于软件设计时定时向复位电路发送脉冲的程序P放在哪里。 一般将此程序P放在定时器CTC的中断服务子程序中。 然而,有时这种设计仍然会导致程序“飞起来”或无法正常工作。

主要原因是:当中断子程序P定时器初始化并打开中断后出现程序“跑飞”情况时,这种“跑飞”情况可能无法通过Watchdog复位电路来纠正。 由于定时器中断总是产生,即使程序出现异常,看门狗也能正常复位。

为了解决这个问题,提出了给定时器添加预设的方法,即初始化时压入一个地址,并在该地址处执行中断关闭和无限循环语句。 尽可能使用子程序返回指令RET来替换所有未被程序代码占用的地址。 这样,当程序飞起来时,进入陷阱的可能性就会大大增加。 一旦进入陷阱,定时器停止工作并关闭中断,以便看门狗复位电路产生复位脉冲来复位CPU。

当然,该技术不适合实时性强的控制或处理软件。

下面通过一个简单的数字时钟设计来说明单片机源程序的基本结构。

1、系统组成及功能

该系统由80C51单片机、LED数码管、按钮、发光二极管、三极管、电阻、电容等部分组成。

功能:实现时间调节、定时时间设置、输出等功能。 上电后,系统自动进入计时状态,从¡00¡时00¡点开始计时。

系统的功能选择由四个按钮SB0、SB1、SB2、SB3、SB4完成。

1. SB0 为时间校准和定时器调整功能键。 按SB 0进入调整状态。

2.SB1为功能切换键。

第一轮按SB1依次进入单向、双向、三向定时时间设置提示程序,按SB3进入各通道的定时调节状态。 当定时器到期时,二极管会亮起。 到达关机时间后熄灭; 如果不输入,继续按SB1键,依次输入时间·年位校对、·月位校对、·日位校对、·时位校对、·点位校对、·秒位校对状态。

无论进入哪种状态,按SB2都可以使调整位发生变化,增量加1,不进位。 每次预设值设置完成后,系统会将所有设置存储在RAM中,按SB1退出调整状态。

3.SB4为年月日显示转换键,可将原来的时分秒显示转换为年月日显示。

三、电路原理

1. 显示原理

它由6个共阴极数码管组成,显示时、分、秒。 P0口的8根数据线P0.0至P0.7分别连接到CD4511解码的两个ABCD口。 P2口的P2.0~P2.2分别连接电阻R10~R13和VT1~VT3的基极。 连接的。 这样,通过P0口发送存储单元的高位和低位BCD显示码,通过P2口发送扫描选通码,依次点亮LED1至LED6,将数据发送到显示在数码管上。 P0口输出的代码为BCD码,P2口输出的代码为位选择码。 这就是扫描显示的原理。

2 键盘及读取原理

键盘是人们与计算机交互的主要设备。 读取按键很容易导致故障。 可以使用软件去抖。 软件触点在关闭和打开时会抖动。 此时,接点的逻辑电平不稳定。 如果处理不当,会导致按键命令错误或重复执行,采用软件延时方法避免抖动,延时时间为20ms。

3 组合功能的实现

当按下某个键时,执行相应的功能键解释程序。 如果操作者不松开按钮,相应的功能就会重复执行,就像连续执行一样。 这里我们使用了250ms的软件延迟,当按钮没有释放时就会执行。 接下来进行相应的程序。 使用组合功能,您可以快速调整时序。

4. 程序设计思路

本系统主程序主要完成时间显示和定时输出判断功能。 年月日显示、各时间单位进位、时间设置、时间设定等功能均在中断服务程序中完成。

1.数据和代码转换。

由上可见,当从P2口输出位选码、从P0口输出段选码时,LED会显示数字。 但P0口输出的数据需要BCD码,每个存储单元存储的是二进制数,这与要显示的字符含义不一致。 可见,直接将要显示的存储单元的数据发送到P0口来驱动LED数码管显示是无法正确表达的。 要显示的数据必须在系统内部转换成BCD码线,然后将各单元数据的段选择码送入P0口,对CD4511进行译码,然后驱动数码管显示。

2.定时函数和中断服务程序的实现

时间的操作是通过定时中断子程序调整时钟单元值的进位来实现的。 计数器T0打开后开始计时。 100毫秒后,它将重新加载计时。 中断一次,一秒后第二次向上取整。 60 秒后变为 1 分钟,分钟单位将向上舍入。 60 分钟后,小时单位将向上舍入。 24 小时后,日单位将四舍五入。 这样,根据提前率,得到年、月、日、时、分、秒存储单元的值,解码后通过扫描程序送到LED显示实现时钟定时功能。 累加是通过指令INC来实现的。

进入中断服务程序后,执行PUSH PSW和PUSH A,保存程序状态寄存器PSW的内容和累加器A中的数据。这就是保护场景。 用于保护场景和恢复场景时访问关键数据的存储区域称为堆栈。 在软件的控制下,可以在片内RAM中对堆栈进行任意范围的设置,并且堆栈的数据访问与一般的RAM访问不同。 必须遵循其操作。 后进先出规则。

3 时间控制函数及比较指令

系统的另一个功能是实现执行装置的定时开关控制。 主要控制思想是:首先将执行器的打开时间和关闭时间放入RAM的某个单元中,并在定时主程序中执行几条比较指令。 如果当前的计时时间等于执行器件设定的开启时间,则执行一条CLR指令将对应的P3设置为高电平并开启; 如果当前计时时间等于执行器设定的关断时间,则执行相应的SETB P3置低电平,二极管截止。 实现该控制功能的比较指令为CJNE A、#direct、rel,传送条件为累加器A中的值与立即数不同。

五:程序初始化部分

SEC EQU 32H ;第二实时时间伪指令

最小 EQU 31H ;最小

HOUR EQU 30H ;小时

白天 EQU 35 小时; 天

MON EQU 34H ;月份

YEAR EQU 33H ;年

MIN_1 EQU 41H; 子定时器1路,开放存储单元

HOUR_1 EQU 42H ;小时

DAY_1 EQU 43 小时;

MON_1 EQU 44H;

YEAR_1 EQU 45H;

MIN_11 EQU 40H; 子定时器1通道,关闭存储单元

HOUR_11 EQU 46H ;小时

DAY_11 EQU 47H ;日

MON_11 EQU 48H ;月份

YEAR_11 EQU 49H ;年份

;************************************

组织0000H

LJMP主

组织0003H; 中断转换显示年月日,INT0(SB4键)

LJMP 展会

ORG 000BH ;计数中断T0,模式1

LJMP 时间

组织0013H

LJMP 变更; 调整时间、定时、INT1(SB0键)

;——主程序

组织0030H

主要的:

;——–初始化付款

移动年,#02

莫夫星期一,#05

MOV 日,#01

莫夫小时,#00

移动最小值,#00

MOV SEC,#00

CLR 40H; 清除计时单元1通道

CLR 41H

CLR 42H

CLR 43H

清除44H

CLR 45H

CLR 46H

CLR 47H

清除48H

CLR 49H

;———启用中断

莫夫TMOD,#01H; 计数,模式 1,T0

MOV TL0,#0B0H ;100SM计数时序

MOV TH0,#3CH;

CLR P3.0

MOV 20H,#0AH ;10次*100SM

SETB PT0;T0为最高电平

SETB TR0 ;允许计数

SETB ET0; 使能T0中断

SETB EX0; 使能 INT0 中断

SETB EX1; 使能 INT1 中断

SETB EA; 打开总中断

;——显示、定时器启动判断

环形:

莫夫R1,#30H; 记忆单元

莫夫R4,#01H; 位选通

莫夫R3,#03H; 三组显示

下一个:

MOVA,@R1;

MOV B,#10; 将存储单元转换为高低两个BCD码

迪夫AB

交换A

奥尔拉A、B

MOV P0,A; 输出

MOV P2、R4

INC R1 ;下一个单元

MOV A、R4;

RL A ;位移

MOV R4,A

LCALL DE5SM; 延迟0.5SM

DJNZ R3,下一个; 全扫描显示一处偏差

;——判断定时输出(只写一个通道)

CJNE R7,#88H,循环; 如果是8,则开启,否则,定时器关闭并且

; – – – – -打开

MOV A,年份

CJNE A,YEAR_1,LOOP_1; 年份对比,无需等待转账

MOV A,周一

CJNE A、MON_1、LOOP_1

MOV A,白天

CJNE A,DAY_1,LOOP_1

MOV A,小时

CJNE A,HOUR_1,LOOP_1

移动A,最小

CJNE A,MIN_1,LOOP_1

CPL P3.0 LJMP 循环

循环_1:

MOV A,年份

CJNE A, YEAR_11, LOOP;年份比较 MOV A, MON

CJNE A,MON_11,循环 MOV A,DAY

CJNE A,DAY_11,循环 MOV A,小时

CJNE A,HOUR_11,循环 MOV A,分钟

CJNE A,MIN_11,循环

CPL P3.0

LJMP循环

单片机

单片机中级教程原理与应用.北京航空航天大学出版社

2024-3-3 16:04:45

单片机

ISIS软件开发系统仿真PCBARES做板传统开发流程

2024-3-3 17:05:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索