昆明理工大学 汇编 实验五 输入输出程序设计

  • 格式:doc
  • 大小:557.50 KB
  • 文档页数:9

-1- 昆明理工大学信息工程与自动化学院学生实验报告

( 2011 —2012 学年 第 1 学期 )

课程名称:汇编与微机接口 开课实验室:信自楼机房445 2011 年12月 13日

年级、专业、班 计科093 学号 200910405310 姓名 孙浩川 成绩

实验项目名称 实验五:输入输出程序设计 指导教师 袁梅宇

教师评语

该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□

该同学的实验能力: A.强 □ B.中等 □ C.差 □

该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□

实验报告是否规范: A.规范□ B.基本规范□ C.不规范□

实验过程是否详细记录: A.详细□ B.一般 □ C.没有 □

教师签名:

年 月 日

一、上机目的及内容

1) 掌握输入输出指令的使用;

2) 上网查3相步进电机的工作原理;

3) 用emu8086工具运行步进电机程序;

4) 对步进电机程序进行改进,精确控制其转速;

5) 观察并记录运行结果。

二、实验原理及基本技术路线图(方框原理图或程序流程图)

-2- 三、所用仪器、材料(设备名称、型号、规格等或使用软件)

1台PC及masm5.0

四、实验方法、步骤(或:程序代码或操作过程)

; this is an example of out instruction.

; it writes values to virtual i/o port

; that controls the stepper-motor.

; c:\emu8086\devices\stepper_motor.exe is on port 7

#start=stepper_motor.exe#

name "stepper"

#make_bin#

steps_before_direction_change = 20h ; 32 (decimal)

jmp start

; ========= data ===============

; bin data for clock-wise

; half-step rotation:

datcw db 0000_0110b

db 0000_0100b

db 0000_0011b

db 0000_0010b

; bin data for counter-clock-wise

; half-step rotation:

datccw db 0000_0011b

db 0000_0001b

db 0000_0110b

db 0000_0010b

; bin data for clock-wise

; full-step rotation:

datcw_fs db 0000_0001b

db 0000_0011b

db 0000_0110b

db 0000_0000b

-3-

; bin data for counter-clock-wise

; full-step rotation:

datccw_fs db 0000_0100b

db 0000_0110b

db 0000_0011b

db 0000_0000b

start:

mov bx, offset datcw ; start from clock-wise half-step.

mov si, 0

mov cx, 0 ; step counter

next_step:

; motor sets top bit when it's ready to accept new command

wait: in al, 7

test al, 10000000b

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 ; next bin data

cmp bx, offset datccw_fs

jbe next_step

mov bx, offset datcw ; return to clock-wise half-step.

jmp next_step

-4- 五、实验过程原始记录( 测试数据、图表、计算等)

1.从7号端口读取数据到AL

2.测试电机是否准备好

-5-

3.如果没准备好就跳回第一步,继续从7号端口读取数据

4.状态初始化

-6-

5.把AL输出给7号端口,电机准备好

6.AL被置为6,即2号、1号通电,电机向右旋转一下。同时,计数器SI加1

-7-

7.比较SI是否等于4

-8-

8.若SI小于4则跳回next_step

9.此时SI=1,跳转到next_step,并说明此时电机已经准备好

10.判断此时电机已经准备好,继续循环

-9-

六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)

通过这次的上机实验,了解了汇编语言emu8006模拟器的使用方法,以及三项模拟电机程序的原理。而且在这次实验中我也更加深刻的体会到了理论与实践的比一致性,有时候我们是懂得了理论知识,但是在具体的运用之中,我们会发现很难实施,这就是理论和实践有时候的不一致性吧,但是只要我们多进行实践操作,这样很有利于我们以后的学习,提高我们的实际操作能力。

注:教师必须按照上述各项内容严格要求,认真批改和评定学生成绩。