180 likes | 293 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.通过该项目的训练,提高学生的实际动手操作能力,养成学 生的工程道德观念,建立工程敬业精神和团队合作精神。
课 题 3 简单程序运行与调试
课题内容 1.调试程序1 2.调试程序2 3.调试程序3 4.调试程序4 知识要点 • 掌握程序调试方法 能力训练: 1. 程序调试能力 2. 创新能力和合作能力 技能操作 上机操作掌握机械手控制程序操作和调试
一、调试程序1 (1)将下面程序输入至仿真器中 源程序 计算值 实际值 ORG 0100H (R0) (R0) MOV 00H,#01H -- -- MOV 08H,#02H -- -- MOV 10H,#03H -- -- MOV 18H,#04H -- -- SETB RS0 -- -- SETB RS1 -- -- CLR RS0 -- -- SJMP $ -- -- END (2)单步运行(运行前先复位)上述程序,检查执行每条指令后R0寄存器的内容,说明SETB和CLR等指令的功能及R0寄存器内容变化的原因。
源程序 ORG 0100H MOV 00H,#01H 01H MOV 08H,#02H 02H MOV 10H,#03H 03H MOV 18H,#04H 04H SETB RS0 SETB RS1 CLR RS0 SJMP $ END 下一页
二、调试程序2 (1)将下面程序输入至仿真器中。 源程序 ORG 0200H MOV SP, #5FH MOV A, #01H MOV DPTR, #0203H MOV R0, #04H PUSH ACC PUSH DPH PUSH DPL PUSH 00H POP ACC POP DPH POP DPL POP 00H HK: SJMP HK END
(2)单步运行(运行前先复位)上述程序,检查执行每条指令后SP寄存器的内容,说明PUSH和POP等指令的功能;(2)单步运行(运行前先复位)上述程序,检查执行每条指令后SP寄存器的内容,说明PUSH和POP等指令的功能; (3)程序执行结束后,回到监控状态,检查累加器A、数据地址指针寄存器DPTR的内容。 堆栈用了哪些单元,其内容是什么? 第一条指令MOV SP,#5FH起什么作用?如果去掉这条指令,上述结果有什么变化? 根据上述结果总结一下堆栈有什么特点。
01H ORG 0200H MOV SP, #5FH 5FH 02H MOV A, #01H 01H 03H MOV DPTR, #0203H 02H 03H MOV R0, #04H 04H PUSH ACC PUSH DPH 04H PUSH DPL PUSH 00H 03H POP ACC 02H POP DPH 01H POP DPL POP 00H HK: SJMP HK END 04H
三、调试程3 (1)多字节加法。 设有两个两字节二进制无符号数,分别存于内部RAM从30H和40H起始的内存单元是,试编写求和程序,将其和存放于50H起始的内单元中(先存低位,后存高位) (2)根据上述要求编写源程序如下: ORG 0300H MOV A, 30H ADD A, 40H DA A MOV 50H,A MOV A, 31H ADDC A, 4 1H DA A MOV 51H,A JC VER MOV 52H, #00H SJMP HK VER: MOV 52H, #01H HK: SJMP HK END
(3)将下面两数输入至30H和40H起始的地址单元中:(3)将下面两数输入至30H和40H起始的地址单元中: 甲=9A3DH 乙=8CE1H (4)运行上述程序,检查执行完加法指令后,有关寄存 器状态添写下表。
(5)程序运行结束后,检查50H、51H、 52H单元内容。 上述程序只需把NOP指令改成DA A 指令,就可以进行十进制BCD数运算,设两十进制数分别为: 甲= 4875 乙= 7996 (6)按上述步骤运行程序,并分别检查执行完加法指令和十进制调整指令后,有关寄存器状态,添写下表。
(7)根据上输实验结果,总结一下ADD、ADDC、DA等指令对CY、AC、 OV等标志位的影响情况。
四、调试程序4 (1)数制转换程序。将片内RAM 30H单元中的 二进制数转换成压缩BCD码十进制数的形 式存放于32H、33H单元中,先存低位后存高 位。 (2)根据上述原理编写源程序如下:
源程序 计算值 实测值 ORG 0400H (A)(B) (A)(B) MOV A,30H -- -- MOV B,#64H -- -- DIV AB -- -- MOV 33H,A -- -- MOV A,#0AH -- -- XCH A,B -- -- DIV AB -- -- SWAP A -- -- ORL A,B -- -- MOV 32H,A -- -- HK: SJMP HK -- -- END
(3)输入至仿真器中 设要转换的一个字节二进制数为0EAH,在运行程序之前先根据程序分析运行结果,指出执行每条指令后累加器A与寄存器B的值是多少。 (4)将0EAH数据输入至仿真器的30H单元中,然后单步运行程序,检查并记录执行每条指令后累加器A与寄存器B的值是多少。 (5)程序执行结束后,检查结果单元32H、33H的值。 比较上述结果是否正确,如不正确,请查明原因,重复上述操作。