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