Upload
nay
View
69
Download
4
Embed Size (px)
DESCRIPTION
辽宁机电职业技术学院. 项目三 机械手程序设计. 制作人:王洪庆 白天明. 项目内容: 1 .通过程序控制机械手动作从而完成伸长、旋转、抓件等动作 2 .了解 MCS - 51 单片机指令的基本格式和寻址方式、 MCS-51 单片 机的指令系统、汇编语言源程序的基本设计方法和调试方法 以及程序设计举例。介绍一些实用的小程序来培养学生的兴 趣并拓宽学生的知识面,结合程序设计强化学生对指令的解。. 能力目标: 课题 1 .单片机的寻址方式 课题 2 .单片机指令 课题 3 .简单程序运行与调试 - PowerPoint PPT Presentation
Citation preview
项目三机械手程序设计
辽宁机电职业技术学院
制作人:王洪庆 白天明
项目内容: 1 .通过程序控制机械手动作从而完成伸长、旋转、抓件等动作 2 .了解 MCS - 51 单片机指令的基本格式和寻址方式、 MCS-51 单
片 机的指令系统、汇编语言源程序的基本设计方法和调试方法 以及程序设计举例。介绍一些实用的小程序来培养学生的兴
趣并拓宽学生的知识面,结合程序设计强化学生对指令的解。
能力目标:课题 1.单片机的寻址方式课题 2.单片机指令课题 3.简单程序运行与调试课题 4.汇编语言程序设计课题 5.分支程序设计课题 6.循环程序设计
实战演练: 1 .通过实践掌握单片机的寻址方式、指令系统。会使用汇编语言 进行顺序结构程序、分支结构程序、循环结构程序设计和调试。 2 .通过该项目的训练,提高学生的实际动手操作能力,养成学 生的工程道德观念,建立工程敬业精神和团队合作精神。
课 题 6循环程序设计
课题内容 1. 循环程序例 1 2. 循环程序例 2 .
知识要点 掌握循环程序设计方法
能力训练: 1. 程序设计、调试能力 2. 创新能力和合作能力
技能操作 上机操作掌握机械手控制程序操作和调试
( 1 )、要求: 从片内 RAM DATA 单元开始连续存放一组无符号二进
制数,其个数存于 SHU 单元中,编一个程序,找出最大数,存放于内部 RAM MAX 单元中。
( 2)、根据上述要求编写程序入下:源程序
SHU EQU 30H MAX EQU 31H CD DQU 40H ORG 0100HMOV MAX , #00HMOV R0 , #CDMOV R2 , SHU
一、循环程序 1
LP : MOV A , @R0CJNE A , MAX , EP1SJMP EP2
EP1 : JC EP2MOV MAX , A
EP2 : INC R0DJNZ R2 , LP
HK : SJMP HKEND
( 3 )、将上述程序输入至仿真器中(相对转移指令的地址偏移量要事先算好)。
( 4 )、将下面一组五个数据送入指定内存单元中:5AH 、 3BH 、 8CH 、 9EH 、 6FH
( 5 )、在 INC R0 指令处设一个断点。为了调试程序,往往需要检查程序运行到某处的有关寄存器的状态,这时可采用断点运行程序和方法。所谓断点,就是程序运行到断点处指令地址。这时使用者可检查有关寄存器的状态。
( 6 )、用连续执行键 EXEC 执行程序,观察每次运行到断点时 R0 、 R2 累加器 A 及 MAX 单元的内容,填写下表:
1 2 3 4 5
( R0 )
计算值实际值
( R2 )
计算值实际值
( A )计算值实际值
MAX 单元
计算值实际值
二、循环程序 2
1 、要求: 将存储于内部 RAM 的多字节二进制无符号数(其首
地址存于 BADR 单元,字节数存放于 BYTE 单元)转换成紧凑格式 BCD 十进制数存储于内部 RAM 中(其首地址存于 DADR 单元),数据存放格式是先低位后高位。
2 、根据上述要求编写程序如下: BADR EQU 20H ;存储二进制首址 BYTE EQU 21H ;存储二进制字节数 DADR EQU 22H ;存储十进制首址 ORG 0300H MOV SP , #5FH ;设堆栈初值
MOV R1 , DADRMOV R2 , BYTEINC R2CLR A
BBO : MOV @R1 , A ; BCD 十进制结果INC R1 ;单元清零DJNZ R2 , BBOMOV A , BYTEMOV B , #08HMUL AB ;二进制位数送入MOV R3 , A ; R3 寄存器
BB3 : MOV R0 , BADR ;循环入口处MOV R2 , BYTE ;将二进制数循环
BB1 : MOV A , @R0 ;左移一次,使最RLC A ;高位送入( Cy)中MOV @R0 , AINC R0DJNZ R2 , BB1MOV R1 , DADR ; BCD 十进制结果MOV R2 , BYTE ;单元乘 2并加上INC R2 ;进位( Cy)LCALL BCDC2DJNZ R3 , BB3 ;循环判断
HK: SJMP HK BCDC2 : MOV A , @R1
ADDC A , @R1 DA A MOV @R1 , A INC R1 DJNZ R2 , BCDC2 RET
(3)输入至仿真器中 设要转换的一个字节二进制数为 0EAH ,在运行程序之前先根据程序分析运行结果,指出执行每条指令后累加器 A与寄存器 B的值是多少。
(4)将 0EAH 数据输入至仿真器的 30H 单元中,然后单步运行程序,检查并记录执行每条指令后累加器 A与寄存器 B的值是多少。
(5)程序执行结束后,检查结果单元 32H 、 33H 的值。比较上述结果是否正确,如不正确,请查明原因,重复上述操作。
谢谢!