三菱PLC步进程序S1 S2怎么使用!

三菱PLC步进程序S1 S2怎么使用!,第1张

步进程序中,S**的使用并没多大的限制,编号并不是按顺序走的,而是按所编的程序走,使用起来和M**辅助中继区别不大(当然有区别啦)。

如:SET

S3,那么STL

S3将导通,并执行这个STL

S3内的程序,达到或完成程序内的SET

S90条件后,

跳到STL

S90执行该段程序。

注:S**是有常开常闭触点的,用与不用自己根据程序决散仔定,步进触点指令与STL指令是有区别的,如果STL

S3步进指令换是LD

S3,那么冲散汪程序状态掘源不是跳转到下一步进状态,而变为同时执行了。

完全一样的题目呀侍握,真幸运,看我的吧(我的是8052的,没关系的):

汇编程序:

S1   EQU 30H

S2 漏芦  EQU 31H

ORG 0000H

AJMP MAIN

ORG 001BH

AJMP INTT1

ORG 0100H

MAIN:  ANL TMOD,#0FH

ORL TMOD,#10H

MOV TH1,#3CH

MOV TL1,#0B0H

SETB EA

SETB ET1

SETB TR1

MOV DPTR,#TABLE

MOV S1,#00H

MOV S2,#00H

LP:   MOV A,S2

MOVC A,@A+DPTR

MOV P1,A

AJMP LP

INTT1: PUSH ACC

INC S1

MOV A,S1

CJNE A,#20,NEXTT1

MOV S1,#00H

INC S2

ANL S2,#07H

NEXTT1: POP ACC

RETI

TABLE: DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,00H

C语言程序:

#include<reg52.h>

unsigned 老搜庆char s1=0,s2=0

unsigned char code table[]=

{

0x05,0x0A,0x50,0xA0,0x55,0xAA,0xFF,0x00

}

void main()

{

TMOD=(TMOD&0X0F)|0X10

TH1=0X3C

TL1=0XB0

EA=1

ET1=1

TR1=1

while(1)

{

P1=table[s2]

}

}

void t1(void) interrupt 3 using 0

{

s1++

if(s1==20)

{

s1=0

s2++

s2=s2&0x07

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12553167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存