汇编--输入输出程序设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编--输入输出程序设计

一、实验目的和内容 1. 掌握输入输出指令的使用; 2. 上网查3相步进电机的工作原理; 3. 用emu8086工具运行步进电机程序; 4. 对步进电机程序进行改进,精确控制其转速。 二、实验原理及基本技术路线图(方框原理图) 步进电机的工作原理: 三、所用仪器、材料(设备名称、型号、规格等) 1. 操作系统平台:Windows 7 2. 汇编环境:emu8086 四、实验方法、步骤 1. 打开emu8086汇编开发环境; 2. 打开emu8086例子程序中的步进电机的源程序: D:\emu8086\examples\stepper_motor.asm 3. 运行该程序,观察运行情况,并结合步进电机的工作原理,阅读并理解程序的执行逻辑,读懂程序中的注释; 4. 尝试修改该程序,以精确控制步进电机的转速; 5. 运行修改后的程序,观察运行结果,并分析; 6. 记录实验过程,并完成实验报告。 五、实验过程原始记录(数据、图表、计算等) 1. 打开步进电机的控制程序: 2. 运行调试该程序,观察结果: 3. 阅读该程序,并添加注释(下面为了保存原版程序,打开程序的一个副本进行修改): 添加注释后的源代码如下: ; 这是一个输出控制的例子 ; 它向虚拟的I/O端口输出值 ; 以控制步进电机 ; d:\emu8086\devices\stepper_motor.exe 在7号端口 #start=stepper_motor.exe# name stepper #make_bin# steps_before_direction_change = 20h ; 十进制的32 jmp start ; ========= 数据 =============== ; 二进制的数据用以控制步进电机 ; 顺时针以半步循环方式(半个步距角)转动: datcw db 0000_0110b ;BC--C--AB--B--BC db 0000_0100b db 0000_0011b db 0000_0010b ; 二进制的数据用以控制步进电机 ; 逆时针以半步循环方式(半个步距角)转动: datccw db 0000_0011b ;AB--A--BC--B--AB db 0000_0001b db 0000_0110b db 0000_0010b ; 二进制的数据用以控制步进电机 ; 顺时针以整步循环方式(一个步距角)转动: datcw_fs db 0000_0001b ;A--AB--BC--0--A db 0000_0011b db 0000_0110b db 0000_0000b ; 二进制的数据用以控制步进电机 ; 逆时针以整步循环方式(一个步距角)转动: datccw_fs db 0000_0100b ;C--BC--AB--0--C db 0000_0110b db 0000_0011b db 0000_0000b start: mov bx, offset datcw ; 开始以顺时针半步循环方式执行 mov si, 0 mov cx, 0 ; 初始化计数器 next_step: ; 获取步进电机控制信号最高位, 若为1, 则表示就绪 wait: in al, 7 test al, jz wait mov al, [bx][si] out 7, al inc si cmp si, 4 jb next_step mov si, 0 inc cx cmp cx, steps_before_direction_change jb next_step mov cx, 0 add bx, 4 ; 下一组控制数据 cmp bx, offset datccw_fs jbe next_step mov bx, offset datcw ; 返回顺时针半步循环方式执行 jmp next_step 修改说明:在原程序的OUT 7, AL一句后面加入如上图所示的代码,试图通过调用DOS系统中的INT 15H的86H号功能,即延时功能来控制步进电机每一步转动的时间,这里为了观察方便,设置每一秒转动一步(半步或整步)。 5. 运行调试修改后的程序,观察运行结果: (1)当程序运行起来之后,在程序进入延时程序时,暂停: (2)当然在运行调试之前首先要把emu8086的调试的延时设为零(如下图)。如下图所示,此时延时程序即将完成,可以看到:当前步进电机正在以半步

文档评论(0)

cuotian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档