实训任务 1:SUM、BON 指令编程:
- 一竞赛场所选手通过特约嘉宾和在场观众打分,并通过屏幕显示。
- 4 位特约嘉宾,每位嘉宾面前按钮为 10 分。
- 12 组观众,每组面前按钮为 3 分。
实训任务 2:DECO 指令编程:
- 用 DECO 指令实现步进电机正反转及调速控制(3 种可调速度)。
实训目标
- 掌握功能指令的编程方法。
- 提高程序设计能力。
- 培养团队合作精神。
实训流程
- 了解实训任务要求,进行任务分析。
- 设计程序流程图。
- 编写程序代码。
- 调试程序,发现并解决错误。
- 完成程序设计任务。
实训代码
; 实训任务 1:SUM、BON 指令编程
LD A, 0 ; 清除累加器
CALL GET_SPECIAL_GUEST_SCORE ; 获取特约嘉宾得分
ADD A, L ; 将特约嘉宾得分加到累加器中
CALL GET_AUDIENCE_SCORE ; 获取观众得分
ADD A, L ; 将观众得分加到累加器中
CALL DISPLAY_SCORE ; 显示得分
; 实训任务 2:DECO 指令编程
LD D, <<DECO_START_MOTOR>> ; 设置 DECO 起始地址
LD E, <<DECO_STOP_MOTOR>> ; 设置 DECO 停止地址
LD C, 0 ; 设置转向模式为正转
CALL DECO_CONTROL ; 控制步进电机正转
; 获取特约嘉宾得分
GET_SPECIAL_GUEST_SCORE:
CALL DELAY
LD B, 0 ; 设置按钮索引
LD HL, <<SPECIAL_GUEST_SCORE_ADDRESS>> ; 设置特约嘉宾得分地址
GET_SPECIAL_GUEST_SCORE_LOOP:
LD A, (HL) ; 获取按钮状态
CP 0 ; 判断按钮是否按下
JR Z, GET_SPECIAL_GUEST_SCORE_LOOP ; 按钮未按下,继续循环
INC B ; 按钮按下,按钮索引加 1
INC HL ; 分数地址加 1
LD (HL), B ; 将按钮索引写入分数地址
JR GET_SPECIAL_GUEST_SCORE_LOOP ; 继续循环
GET_SPECIAL_GUEST_SCORE_EXIT:
RET
; 获取观众得分
GET_AUDIENCE_SCORE:
CALL DELAY
LD B, 0 ; 设置按钮索引
LD HL, <<AUDIENCE_SCORE_ADDRESS>> ; 设置观众得分地址
GET_AUDIENCE_SCORE_LOOP:
LD A, (HL) ; 获取按钮状态
CP 0 ; 判断按钮是否按下
JR Z, GET_AUDIENCE_SCORE_LOOP ; 按钮未按下,继续循环
INC B ; 按钮按下,按钮索引加 1
INC HL ; 分数地址加 1
LD (HL), B ; 将按钮索引写入分数地址
JR GET_AUDIENCE_SCORE_LOOP ; 继续循环
GET_AUDIENCE_SCORE_EXIT:
RET
; 显示得分
DISPLAY_SCORE:
LD A, L ; 将得分加载到累加器
CALL DELAY
CALL DISPLAY_SCORE_ROUTINE ; 显示得分
; 控制步进电机正转
DECO_CONTROL:
LD BC, <<DECO_CONTROL_REGISTER>> ; 设置 DECO 控制寄存器
LD DE, <<DECO_CONTROL_VALUE>> ; 设置 DECO 控制值
OUT (C), E ; 输出 DECO 控制值
DEC C ; 将转向模式设置为正转
CALL DELAY
RET
; 控制步进电机反转
DECO_CONTROL_REVERSE:
LD BC, <<DECO_CONTROL_REGISTER>> ; 设置 DECO 控制寄存器
LD DE, <<DECO_CONTROL_VALUE>> ; 设置 DECO 控制值
OUT (C), E ; 输出 DECO 控制值
INC C ; 将转向模式设置为反转
CALL DELAY
RET
; 控制步进电机调速
DECO_CONTROL_SPEED:
LD BC, <<DECO_CONTROL_REGISTER>> ; 设置 DECO 控制寄存器
LD DE, <<DECO_CONTROL_VALUE>> ; 设置 DECO 控制值
OUT (C), E ; 输出 DECO 控制值
CALL DELAY
RET
本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!
添加新评论