三菱plc8个灯循环右移
时间: 2023-12-29 09:04:44 浏览: 76
以下是两种实现三菱PLC 8个灯循环右移的方法:
方法一:利用定时器和比较指令实现流水灯或跑马灯的效果
```plc
LD K0 ; 启动按钮
OUT Y0 ; 控制8个LED灯的输出
LD K1 ; 停止按钮
OUT Y1 ; 控制停止
MOV #500, D0 ; 设置定时器初值为500ms
MOV #4000, D1 ; 设置定时器上限为4s
MOV #0, D2 ; 设置计数器初值为0
START:
CMP D2, D1 ; 判断计数器是否达到上限
JEQ END
CMP D2, #0 ; 判断计数器是否为0
JEQ FIRST_LED
CMP D2, #500 ; 判断计数器是否为500ms
JEQ SECOND_LED
CMP D2, #1000 ; 判断计数器是否为1000ms
JEQ THIRD_LED
CMP D2, #1500 ; 判断计数器是否为1500ms
JEQ FOURTH_LED
CMP D2, #2000 ; 判断计数器是否为2000ms
JEQ FIFTH_LED
CMP D2, #2500 ; 判断计数器是否为2500ms
JEQ SIXTH_LED
CMP D2, #3000 ; 判断计数器是否为3000ms
JEQ SEVENTH_LED
CMP D2, #3500 ; 判断计数器是否为3500ms
JEQ EIGHTH_LED
ADD #1, D2 ; 计数器加1
MOV D0, D100 ; 将定时器初值赋值给D100
MOV #0, D101 ; 将计数器清零
TIM #1s ; 启动定时器
JMP START
FIRST_LED:
OUT Y2 ; 亮第一个LED灯
JMP START
SECOND_LED:
OUT Y3 ; 亮第二个LED灯
JMP START
THIRD_LED:
OUT Y4 ; 亮第三个LED灯
JMP START
FOURTH_LED:
OUT Y5 ; 亮第四个LED灯
JMP START
FIFTH_LED:
OUT Y6 ; 亮第五个LED灯
JMP START
SIXTH_LED:
OUT Y7 ; 亮第六个LED灯
JMP START
SEVENTH_LED:
OUT Y8 ; 亮第七个LED灯
JMP START
EIGHTH_LED:
OUT Y9 ; 亮第八个LED灯
JMP START
END:
```
方法二:循环移位法
```plc
LD K0 ; 启动按钮
OUT Y0 ; 控制8个LED灯的输出
LD K1 ; 停止按钮
OUT Y1 ; 控制停止
MOV #0, D0 ; 设置循环移位初值为0
START:
CMP D0, #8 ; 判断循环移位是否达到8次
JEQ END
MOV Y9, M8000 ; 将第8个LED灯的状态保存到M8000
MOV Y8, Y9 ; 将第7个LED灯的状态赋值给第8个LED灯
MOV Y7, Y8 ; 将第6个LED灯的状态赋值给第7个LED灯
MOV Y6, Y7 ; 将第5个LED灯的状态赋值给第6个LED灯
MOV Y5, Y6 ; 将第4个LED灯的状态赋值给第5个LED灯
MOV Y4, Y5 ; 将第3个LED灯的状态赋值给第4个LED灯
MOV Y3, Y4 ; 将第2个LED灯的状态赋值给第3个LED灯
MOV Y2, Y3 ; 将第1个LED灯的状态赋值给第2个LED灯
MOV M8000, Y2 ; 将保存的第8个LED灯的状态赋值给第1个LED灯
ADD #1, D0 ; 循环移位次数加1
JMP START
END:
```