当前位置:网站首页 > 技术博客 > 正文

如何利用左移右移指令实现流水灯plc

好的,我可以为你解答这个问题。

下面是在 51 单片机上使用汇编语言

实现

按键控制

流水灯 左移 右移

的代码:

 ; 定义端口、变量等 ORG 0H MOV P1, #0H ; 设置 P1 端口初始值为 0 MOV P2, #0H ; 设置 P2 端口初始值为 0 MOV A, #0H ; 定义 A 寄存器初始值为 0 MOV B, #0H ; 定义 B 寄存器初始值为 0 MOV C, #0H ; 定义 C 寄存器初始值为 0 MOV D, #0H ; 定义 D 寄存器初始值为 0  ; 程序 入口 START: MOV A, P3 ; 读取 P3 端口的值 ANL A, #0FH ; 屏蔽高 4 位,只保留低 4 位 CJNE A, #01H, LEFT ; 如果值为 1,跳转到 LEFT 标签 CJNE A, #02H, RIGHT ; 如果值为 2,跳转到 RIGHT 标签 SJMP START ; 否则一直循环  ; 循环 左移 流水灯 LEFT: MOV R7, #08H ; 定义循环次数为 8 次 MOV A, #01H ; 定义 流水灯 初始值为 00000001B LEFT_LOOP: MOV P1, A ; 将 流水灯 的值输出到 P1 端口 RL A ; 左移 一位 DJNZ R7, LEFT_LOOP ; 循环 8 次 SJMP START ; 跳转到 程序 入口  ; 循环 右移 流水灯 RIGHT: MOV R7, #08H ; 定义循环次数为 8 次 MOV A, #80H ; 定义 流水灯 初始值为 B RIGHT_LOOP: MOV P1, A ; 将 流水灯 的值输出到 P1 端口 RR A ; 右移 一位 DJNZ R7, RIGHT_LOOP ; 循环 8 次 SJMP START ; 跳转到 程序 入口 

以上代码

实现

了从 P3 端口读取按键值,如果按键为 1,则循环

左移 流水灯

;如果按键为 2,则循环

右移 流水灯

版权声明


相关文章:

  • blp模型规定了4种安全级别2025-03-14 20:01:08
  • 二叉树的遍历图2025-03-14 20:01:08
  • java中assert断言语句有哪些2025-03-14 20:01:08
  • unittest suite2025-03-14 20:01:08
  • 经典古代武侠小说2025-03-14 20:01:08
  • cname域名解析原理2025-03-14 20:01:08
  • 在线api测试2025-03-14 20:01:08
  • 接口设计怎么写2025-03-14 20:01:08
  • unicode编码转换工具下载2025-03-14 20:01:08
  • centos7远程桌面连接2025-03-14 20:01:08