看门狗指令
看门狗程序

在程序初始化中向看门狗寄存器(WDTRST地址是0A6H)中先写入01EH,再写入0E1H。
即可激活看门狗。
汇编格式
Org 0000
Ljmp begin
Begin:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
;在程序初始化中激活看门狗。
……
……
For:
……
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
;喂狗指令
……
Ljmp for
c格式
在C语言中要增加一个声明语句。
在AT89X51.h声明文件中增加一行 sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E;
WDTRST=0xE1;//初始化看门狗。
While (1)
{
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
}
}
注意事项:
1. 89S51的看门狗必须由程序激活后才开始工作。
所以必须保证CPU有可靠的上电复位。
否则看门狗也无法工作。
2.看门狗使用的是CPU的晶振。
在晶振停振的时候看门狗也无效。
3. 89S51只有14位计数器。
在16383个机器周期内必须至少喂狗一次。
而且这个时间是固定的,无法更改。
当晶振为12M时每16个毫秒需喂狗一次。
三菱FX系列可编程控制器的应用指令简介

上一页 下一页 返回
5. 1FX系列可编程控制器的应用指 令概况
第5章三菱FX系列可编程控制器的 应用指令简介
5. 1FX系列可编程控制器的应用指令概况 5. 2程序流程控制指令 5. 3数据传送指令和比较指令 5. 4四则运算指令和逻辑运算指令 5. 5循环移位指令 5. 6数据处理指令 5. 7高速处理指令
第5章三菱FX系列可编程控制器的 应用指令简介
上一页 下一页 返回
5. 2程序流程控制指令
5. 2. 3与中断有关的指令
与中断有关的3条应用指令是:中断返回指令IRET,编号为 FNC03;中断允许指令EI编号为FNC04;中断禁止指令DI,编 号为FNCOS。以上3条指令均无操作数,分别占用一个程序 步。
中断程序以中断事件号为开始标记,以中断返回指 令IRET作为结束标记,每个中断程序都要有IRET语句。中
断程序放在主程序结束指令FEND之后。主程序中允许中断 的程序段以允许中断指令EI作为开始标志,以禁止中断指令 DI作为结束标志,如图5-10所示。
上一页 下一页 返回
5. 2程序流程控制指令
中断指令的使用说明如下。 ① PLC按先来先处理的原则处理中断事件,若多个中断事
件同时出现,则先处理编号小的中断事件,编号小的中断事 件优先级别高。 ②中断事件是否有效,由特殊辅助继电器控制。当M8050一 M8058为“ON”时,禁止执行相应的中断。当M5089为“ON” 时,则禁止所有计数器中断。 ③无须中断禁止时,可只用EI指令,不必用DI指令。 ④执行一个中断服务程序时,如果在中断服务程序中有EI 和DI,可实现二级中断嵌套,否则禁止其他中断。
软件看门狗是利用单片机片内闲置的定时器

第21卷第2期 吉林大学学报(信息科学版) V o l121 N o12 2003年5月 JOU RNAL O F J I L I N UN I V ER S IT Y(I N FORM A T I ON SC IEN CE ED IT I ON) M ay2003文章编号:167125896(2003)022*******单片机应用系统中的看门狗技术α胡 屏1,柏 军2(11哈尔滨工业大学威海分校信息与控制工程系,山东威海 264209;21哈尔滨工业大学威海分校计算机科学与工程系,山东威海 264209)摘要:分析研究了单片机应用系统中软件看门狗、单 双时限和强制复位看门狗等几种常见的看门狗技术及具体的实现方法,从提高看门狗工作可靠性的角度,分析了各种看门狗方案的优缺点,给出了基本的硬件电路和软件控制策略,指出了在设计和应用过程中需注意的一些问题。
关键词:单片机;看门狗;抗干扰;X5045看门狗定时器中图分类号:T P39 文献标识码:A引 言随着单片机技术的发展和制造工艺的日益成熟,单片机的应用领域不断拓宽,但由于单片机自身的抗干扰能力较差,尤其是在一些条件比较恶劣,噪声大的场合,常会出现单片机因受外界干扰而导致死机的现象,造成系统不能正常工作。
设置看门狗是防止单片机死机、提高单片机系统抗干扰性的一种重要途径,笔者研究分析了几种较为实用的看门狗技术,供读者参考。
1 软件看门狗软件看门狗是利用单片机片内闲置的定时器 计数器单元作为看门狗,在单片机程序中适当地插入“喂狗”指令,当程序运行出现异常或进入死循环时,利用软件将程序计数器PC赋予初始值,强制性地使程序重新开始运行。
具体实现方法如下。
1)首先在初始化程序中设置好定时器 计数器的方式控制寄存器(TM OD)和定时时间的初值,并开中断。
2)根据定时器的定时时间,在主程序中按一定的间隔插入复位定时器的指令,即插入“喂狗”指令,两条“喂狗”指令间的时间间隔(可由系统时钟和指令周期计算出来)应小于定时时间,否则看门狗将发生误动作。
第5章 S7-200系列PLC的基本指令及程序设计-2

●计数器的当前值≠0时,其状态位为0;而它 的当前值=0时,状态位置 1,且停止计数。 ●当装载输入端 LD=1时,减计数器复位:
当前值=设定值,状态位=0。
计数器的应用 举例--计数范围的扩展
【例5-4-1】: 做一个计数器,当计数到200000时, 使Q0.0 = 1。 控制程序如下:
2
手动复位 初始化
●跳转/标号指令必须成对使用,且只能用在同一程 序块中。 ●跳转/标号指令中, n 的范围: 0~255。 ●执行跳转指令后,跳过程序段中各个元件(除定 时器外)的状态不变,保持跳转前的状态。
●跳过程序段中若有定时器:
a.1ms、10ms的定时器,系统会对它们周期 刷新,故会继续计时. b. 对于100ms的定时器,只有执行指令时其 当前值和状态位才会被刷新,因此跳过程序 段中的定时器指令因不执行而停止刷新,会 使定时器计时失准.
跳转、标号指令应用
【例5-3-5】
有一个机械手, 用工作方式开关
选择手动、单步
、自动工作方式
,主程序如下:
6. 子程序
● 在结构化程序设计时,采用子程序可以
优化程序结构,减少扫描时间;
● 与子程序相关的操作有: ※ ※ ※ 建立子程序 子程序调用 子程序返回
1)创建子程序
用命令“编辑” 程序” “插入” “子
第五章 S7-200PLC 基本指令及程序设计-2
河南延龙机电设备有限公司
§5-3 PLC的梯形图程序设计方法
1. 梯形图程序设计的方法 梯形图程序的基本 形式:
X开:开启条件 X关:关断条件 Fk 的自锁触点。
Fk
尽可能是短信号.
线圈Fk: 逻辑运算的中间(或最终)结果;
1)梯形图程序的设计方法:
S7200PLC西门子指令中英文全称对照

指令(英文全称意思) :指令含义1 、LD ( Lode 装载) :动合触点2、LDN ( Lode Not 不装载) : 动断触点3、A ( And 与动合) : 用于动合触点串联4、AN ( And Not 与动断) :用于动断触点串联5、O ( Or 或动合) :用于动合触点并联6、ON ( Or Not 或动断) : 用于动断触点并联7、= ( Out 输出) :用于线圈输出8、OLD ( Or Lode): 块或9、ALD ( And Lode): 块与10、LPS ( Logic Push ) :逻辑入栈11、LRD ( Logic Read ) :逻辑读栈12、LPP ( Logic Pop ) :逻辑出栈13、NOT ( not 并非) :非14、NOP ( No Operation Performed ) : 无操作15、AENO ( And ENO ) : 指令盒输出端ENO相与16、S ( Set 放置) : 置117、R ( Reset 重置,清零) :清零18、P ( uP 上升) :正跳变19、N ( dowN 下降) :负跳变20、TON ( On_Delay Timer ) :通电延时21、TONR ( Retentive On_Delay Timer ) : 有记忆通电延时型22、TOF ( Off_ Delay Timer ) :断电延时型23、CTU ( Count Up ) : 递增计数器24、CTD ( Count Down ) : 递减计数器25、CTDU ( Count Up/ Count Down ) :增减计数器26、ADD ( add 加) : 加注意//ADD_I (_ I 表示整数) ADD_DI( DI表示双字节整数)ADD-R(R 表示实数)它们都是加运算只是数的大小不同!!后面有很多这样的我就略写了!27、SUB ( Subtract 减去,减少) :减28、MUL ( Multiply ) : 乘29、DIV ( Divide ) : 除30、SQRT ( Square root ) : 求平方根31、LN ( Napierian Logarithm 自然对数) : 求自然对数32、EXP ( Exponential 指数的) :求指数33、INC_B ( Increment 增加) :增134、DEC_B ( Decrement 减少) :减135、WAND_B ( Word and 与命令) :逻辑与//其中_B代表数据类型还有W(字节)、DW双字后面几个都是这样的。
西门子应用指令

(1)数量及编号
高速计数器在程序中使用时得地址编号用HCn来表示(在非程序中 有时用HSCn),HC表编程元件名称为高速计数器,n为编号。
HCn除了表示高速计数器得编号之外,还代表两方面得含义:高速计 数器位和高速计数器当前值。编程时,从所用得指令可以看出就是 位还就是当前值。
不同型号得PLC主机,高速计数器得数量对应如表5、7所示。
大家有疑问的,可以询问和交
10
5、1、5 子程序指令
1. 建立子程序 2. 2、 子程序调用 3、 带参数得子程序调用
1、 建立子程序
可用编程软件Edit菜单中得Insert选项,选择 Subroutine,以建立或插入一个新得子程序,同 时在指令树窗口可以看到新建得子程序图标,默 认得程序名就是SBR_n,编号n从0开始按递增 顺序生成,可以在图标上直接更改子程序得程序 名。在指令树窗口双击子程序得图标就可对她 进行编辑。
返回本节
5、2、3 通信
通信指令包括: XMT,自由口发送指令 RCV,自由口接收指令 NETR,网络读指令 NETW,网络写指令 GPA,获取口地址指令
5、2、4 高速计数
1、 高速计数器介绍 2、 高速计数指令 3、 高速计数器得使用方法 4、 应用实例
1、 高速计数器介绍
(1)数量及编号 (2)中断事件类型 (3)工作模式及输入点
2、 写实时时钟
TODW,写实时时钟指令。用来设定实时时钟。 当使能输入有效时,系统将包含当前时间和日期, 一个8字节得缓冲区将装入时钟。
时钟缓冲区得格式如表5、2所示。
•表5、2 时钟缓冲区
程序实例
控制要求:
编写一段程序,可实现读、写实时时钟,并以BCD码显示分钟。时钟 缓冲区从VB100开始。
单片机看门狗(Watchdog)的工作原理及其应用

单片机看门狗(Watchdog)的工作原理及其应用2010年05月16日星期日 23:00在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。
程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。
所以,出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。
看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行。
这个时候,看门狗电路就会由于得不到单片机送来的信号。
便在它和单片机复位引脚相连的引脚上送出一个复位信号。
使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
看门狗,又叫 watchdog timer,是一个定时器电路。
一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU 正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零。
如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,是MCU复位,防止MCU死机。
看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
所以,在使用有看门狗的芯片时要注意清看门狗。
单片机汇编语言实现看门狗

CS=0; if(bRegion==0) //write the page addr else WriteByte(cAddress); WriteByte(cData); SCK=0; // CS=1; } uchar ReadEpm(uchar cAddress,bit bRegion) /* 读入一个字节,cAddress 为读入地址,bRegion 为页 */ { uchar cData; while((ReadReg()&0x01)==1);//the device is busy CS=0; if(bRegion==0) else WriteByte(cAddress); cData=ReadByte(); CS=1; return cData; } main() { WriteReg(0x00);//set the watchdog time as 1.4s CS=1; CS=0; } //reset the watchdog
SCK=0; SCK=1; ucData<<=1; } } uchar ReadReg() { uchar ucData; CS=0; WriteByte(RDSR); ucData=ReadByte(); CS=1; return ucData; } uchar WriteReg(uchar ucData) { uchar ucTemp; ucTemp=ReadReg(); if((ucTemp&0x01)==1) //the device is busy return 0; CS=0; WriteByte(WREN);//when write the WREN, the cs must have a high level CS=1; CS=0; WriteByte(WRSR); WriteByte(ucData); CS=1; return 1; } void WriteEpm(uchar cData,uchar cAddress,bit bRegion) /* 写入一个字节,cData 为写入的数,cAddress 为写入地址,bRegion 为页 */ { while((ReadReg()&0x01)==1); //the device is busy CS=0; WriteByte(WREN); //when write the wren , the cs must have a high level CS=1; //write register //read register
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
警戒时钟的定时时间为300毫秒,每次扫描它都被自动复位一次,正常工作时,如果扫描周期小于300毫秒,警戒时钟不起作用。
如果强烈的外部干扰使可编程控制器偏离正常的程序执行路线, 警戒时钟不再被周期性的复位,定时时间到, 可编程控制器将停止运行。
若程序扫描的时间超过300毫秒,为了防止在正常的情况下警戒时钟动作,可将警戒时钟刷新指令(WDR)插入到程序中适当的地方,使警戒时钟复位。
这样,可以增加一次扫描时间。
指令格式如图4-65所示。
LD M2.5 // M2.5接通时 WDR //重新触发WDR , 允许扩展扫描时间
工作原理:当使能输入有效时,警戒时钟复位。
可以增加一次扫描时间。
若使能输入无效,警戒时钟定时时间到,程序将终止当前指令的执行,重新启动,返回到第一条指令重新执行。
注意:如果使用循环指令阻止扫描完成或严重延迟扫描完成,下列程序只有在扫描循环完成后才能执行::通信(自由口方式除外), I/O 更新(立即I/O 除外),强制更新,SM 更新,运行时间诊断,中断程序中的STOP 指令。
10毫秒和100毫秒计时器对于超过25秒的扫描不能正确地累计时间。
注意:如果预计扫描时间将超过500毫秒,或者预计会发生大量中断活动,可能阻止返回主程序扫描超过500毫秒,应使用WDR 指令,重新触发看门狗计时器。
图4-65 WDR 指令格式。