
西门子特殊存储器(SM)标志位:
SM0.0-PLC上电运行时,该位始终为1(始终为ON)。
SM0.1-该位在首次扫描时为1,用途之一是调用初始化子程序。
SM0.1、SM0.0是这两个是西门子PLC的特殊存储器。SM0.0:上电后该位始终为1;SM0.1:该位在首次扫描时为1,然后为0,用途之一是调用初始化子程序。
特殊标志继电器(SM) 的使用方法:
特殊标志继电器用“SM”表示,特殊标志继电器区根据功能和性质不同具有位、字节、字和双字 *** 作方式。其中SMB0、SMB1为系统状态字,只能读取其中的状态数据,不能改写,可以位寻址。系统状态字中部分常用的标志位说明如下: SM0.0:始终接通;
SM0.1:首次扫描为1,以后为0,常用来对程序进行初始化;
SM0.2:当机器执行数学运算的结果为负时,该位被置1;
SM0.3:开机后进入RUN方式,该位被置1一个扫描周期;
SM0.4:该位提供一个周期为1分钟的时钟脉冲,30秒为1,30秒为0;
SM0.5:该位提供一个周期为1秒钟的时钟脉冲,0.5秒为1,0.5秒为0;
SM0.6:该位为扫描时钟脉冲,本次扫描为1,下次扫描为0;
SM1.0:当执行某些指令,其结果为0时,将改位置1;
SM1.1:当执行某些指令,其结果溢出或为非法数值时,将改位置1;
SM1.2:当执行数学运算指令,其结果为负数时,将改位置1;
SM1.3:试图除以0时,将改位置1;
S7-200中SM0.0的用法:
1、SM0.0在程序运行时始终为ON。
2、SM0.0是一个无条件的常闭触点,用来启动无条件运行的指令。 只要上电,SM0.0必然是“1”。因此程序中那些不受任何条件限制,必须要执行的指令就用它作为触发触点。PLC-家园 plczone.com
F代表本次 *** 作的寄存器,在MOVF
20H,
F
这句话里表示吧W寄存器的数据存到地址为20H的空间里.
你可以看看头文件的宏定义里,
F是等于1的,W等于0,
MOVF
20H,
F
其实是对应了MOVF
20H,
1
这句话.
只是为了让程序员写程序的时候好判断,特此在头文件里宏定义了
出现F就表示是1,如果出现W,就表示0.
MOVF
20H,
F
这句话最后的这个位置,
可以写F或W或1或0
而
ADDWF
f,d
和上面的MOVF
f,d一样,只是这个指令的说明而已.
并不能用在真正的程序里
,或者说它像一个公式
的解释,
你要用MOVF这条指令,
它的结构是MOVF
f,d这样的,
运用的时候,
MOVF不变,把小写f替换成你要 *** 作的寄存器(这里是20H),然后
后面这个小写d
是替换成上面说的
F或W或1或0
或者
这个d的位置可以省略不写.
下面说一下这几个句子的区别,
咱们先假定程序有一个地址在20h的变量TMP
ADDWF
f,d
这只是一个教科书上对这指令的解释,
告诉你f
应该填什么东西,
d应该填什么东西()
ADDWF
TMP,F
这才是程序,意思是吧W寄存器的数值和TMP相加结果存到TMP里,F在这里告诉单片机结果存到TMP里
.
*** 作数是
W寄存器和TMP变量
ADDWF
20H
,F
这和前面那句一样只是
不用TMP,直接用地址来表示变量
ADDWF
20H
,1
这和前面那句一样只是
不用TMP,直接用地址来表示变量,并且F用1表示,
=======分界线,下面的指令和上面的逻辑上不同=============
ADDWF
TMP,W
这个是指W寄存器和TMP变量相加,结果存到W里
,
W在这里表示结果存到W寄存器里
ADDWF
TMP,
1
和前面那句话一样,只是W用1来表示.
ADDWF
TMP
这个是最常用的,如果TMP这个 *** 作数后面的是W或者是0,那么它可以省略掉,跟前面的一个意思
,就是把W和TMP相加,结果存到W里.
ADDWF
20H
同上
综上所述,
这只是一个表述的问题而已.
另外指出一下你的错误
“将f寄存器内容传送至W(d=0)或者(d=1),这是函数的原型!”
这只是指令说明,没有什么函数的,不要把它看成是什么函数。汇编里没有函数的,没有类似数学的函数表达式,也没有C程序的那种函数(在汇编里类似于C函数的叫做“子程序”)
,
PIC单片机的数据手册对初学者来说不太好理解的,如果还有不懂可以在百度HI里问我,或者发站内信。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)