伟德国际victor1946
计算机原理及应用
实验指导书
(适用于机械设计制造及其自动化专业)
机械工程学院机电控制
二〇〇八年八月
目 录
第一章 系统概述…………………………………………………..3
第二章 系统组成和结构…………………………………………..6
第三章 系统安装与使用………………………………………7
第四章 键盘监控使用简介……………………………………8
第五章 8086K实验系统与PC机联机操作…………………..11
实验一 二进制码转换为BCD码实验………………………15
实验二 分支程序设计…………………………………………18
实验三 简单I/O口扩展实验……………………………………21
实验四 交通灯控制实验…….…………………………………23
实验五 步进电机综合控制实验….……………………………27
参考文献……………………………………………………………35
第一章 系统概述
为了更好地满足微机原理与接口的教学与实验,启东计算机总厂有限公司成功开发了DICE-8086K超强型实验系统。8086K实验系统软、硬件配置完善,实验内容丰富,可进行四十多个实验项目。实验电路采用分模块、开放性设计,使实验电路配置灵活,所有实验程序全部调试通过,用户可直接运用。
⒈1 系统主要特点
⒈ 采用主频为14.77MHZ的8088CPU为主CPU,并以最小工作方式构成系统。
⒉ 配有二片61C256静态RAM构成系统的64K基本内存,地址范围为00000H-0FFFFH,其中00000H-00FFFH监控占用。另配一片W27C512(64K)EP1存放监控程序, 地址范围F0000H-FFFFF。
还配有一片W27C512 EP2存放实验程序,为实验系统独立运行时下载实验程序提供方便。
⒊ 自带键盘、显示器,能独立运行,为实验程序调试带来方便。
⒋ 配备Windows仿真调试软件,支持机器码、汇编、C等三种语言的开发和调试。
⒌ 提供标准RS232异步通讯口, 以连接IBM-PC机。
⒍ 配有各种微机常用I/O接口芯片,定时/计数接口芯片8253、A/D转换接口芯片0809、D/A转换接口芯片0832、中断控制器8259、键盘显示接口8279、并行I/O接口芯片8255、通讯接口芯片8250、8251、485和DMA控制器8237等。
⒎ 配备键盘、数码显示、发光二极管显示、开关量、LED16×16、LCD12864、温度压力、步进电机、直流电机、扬声器等输入输出设备。
⒏ 带有脉冲发生器、计数器电路、单脉冲发生器等常用电路。
⒐ 可以单步、断点、全速调试各实验程序。
⒑ 内置开关电源,为实验提供+5V/3A、±l2V/0.5A直流稳压电源。
⒒ 使用环境:环境温度0~+40℃,无明显潮湿,无明显振动碰撞。
⒓ 配备USB接口的电子实验演示装置,通过编制程序,对模拟控制对象进行实时控制。
⒈2 系统资源分配
8088有1兆存储空间,系统提供用户使用的空间为00000H-0FFFFH, 用于存放、调试实验程序。具体分配如下:
⑴存贮器地址分配
⑵I/O地址分配
监控占用00004H-0000FH作为单步(T)、断点(INT3)、无条件暂停(NM1)中断矢量区, 用户也可以更改这些矢量, 指向用户的处理, 但失去了相应的单步、断点、暂停等监控功能。
F0000H-FFFFFH监控程序区系统占用。
系统配置
系统内含串行通讯和键盘显示监控的全部软硬件设施,典型配置如下:
⑴主机板+PC机
⑵主机板
二种配置的使用特点如下:
配置一:主机板和 PC机通过RS232串行口相连。这种配置形式可以充分利用
IBM PC机的软硬件资源, 实现源程序的编辑、汇编和链接和调试。实验程序源文件(·ASM)、执行文件(·EXE)都在随机光盘上,你可以利用PC机的键盘显示等输入输出设备完成各种软硬件实验。
配置二:为最经济型配置,它不需要和IBM PC机联机,自成一体,通过一组键盘命令完成所有软硬件实验,每个实验程序固化在实验监控中。这种配置为没有PC机的用户带来极大方便。
第二章 系统组成和结构
8086K实验系统由8088控制单元、实验单元、电子实验演示装置、开关电源和8086K集成调试软件组成。8088控制单元由8088CPU、CPLD(1032)、监控EP1(27512)、内存RAM1,2和键盘显示电路组成。实验单元采用一体化、分模块设计,结构合理清晰。电子实验演示装置由单片机、USB接口和16个I/O扩展接口(IN0~15,OUT0~15)组成。
2.1 系统接口定义
(1)CZ1:MAIN-COM :通讯接口;
(2)CZ4:打印接口;
(3)JX0,JX17为系统提供的数据总线接口;
(4)CZ7:系统提供的扩展接口;
(5)JX12、JX14:液晶显示接口。
2.2 系统硬件组成
(1)LED发光二极管指示电路:实验台上包括16只发光二极管及相应驱动电路。见图2-6,Ll-L16为相应发光二极管驱动信号输入端, 该输入端为低电平“0”时发光二极管亮。
(2)逻辑电平开关电路:见图2-7。实验台上有8只开关Kl-K8,与之相对应的K1-K8各引线孔为逻辑电平输出端。开关向上拨相应插孔输出高电平“l”, 向下拨相应插孔输出低电平“0”。
(3)单脉冲电路
(4)分频电路:该电路由一片74LS393组成。T0-T7为分频输出插孔。该计数器在加电时由RESET信号清零。当脉冲输入为8.0MHZ时,T0-T7输出脉冲频率依次为4.0MHZ,2.0MHZ,1.0MHZ,500KHZ,250KHZ,125KHZ,62500HZ,31250HZ。
(5)脉冲发生电路:实验台上提供8MHZ的脉冲源,实验台上标有8MHZ的插孔,即为脉冲的输出端。
(6)485接口电路:
(7)通讯接口电路
(8)数码管显示电路
(9)键盘电路
第三章 系统安装与使用
1、把系统开关设置为出厂模式。
(1)SW3、SW4、SW5:为键盘/显示选择开关,开关置ON(出厂模式),键盘/显示控制选择系统配置的8155接口芯片,反之由用户选择自定义的I/O接口芯片控制,在本机实验中,除8279实验外,键盘/显示为出厂模式。
(2)KB6:通讯选择开关,KB6->SYS-C为系统通讯(出厂模式),KB6->EXT-C为扩展通讯。
2、将随机配送的串行通讯线,一端与实验仪的RS232D型插座CZ1相连,另一端与PC机COM1或COM2串行口相连。
3、接通实验系统电源,+5V LED指示灯应正常发光,实验仪数码管应显示闪动P.,说明实验仪初始化成功,处于待命状态。(否则应及时关闭电源,待修正常后使用)
4、打开PC机电源,执行8086K的集成调试软件,关于该软件的详细说明请参阅《第五章8086K实验系统与PC机联机操作》。
第四章 键盘监控使用简介
⒋1 引言
本章详细叙述键盘监控程序的功能和操作方法。
系统一经接通电源,数码管上显示监控提示符“P.”。
⒋2 键盘显示
⑴ 系统配备6位LED显示器,左边4位显示地址,右边2位显示该地址内容。
⑵ 系统具有24个注塑键盘,左边l6个是数字键,右边8个是功能键。
在键盘监控状态下用户可以通过一组键命令完成下列操作
· 读写寄存器内容
· 读写存储器内容
· EPROM传送
· 断点设置/清除
· 通过单步、断点、连续等功能来调试运行实验程序。
⒋3 功能键操作说明一缆
⒋4 总操作过程
8088十六位微机实验系统上电总清以后, 显示器上显示监控提示符“P.”,各寄存器的初始化值如下:
SP=0683H,CS=0000H,DS=0000H,SS=0000H,ES=0000H,IP=l000H,FL=0000H
注意:·所有命令均在提示符“P.”状态输入。
·在键盘监控状态,段地址缺省值为0000H。
⒋5 监控程序命令及操作
⑴ 存贮器单元内容显示修改
操作:××××ME即在提示符“P.”下,先输入四位存贮单元地址, 再按ME键,显示器左边4位显示地址,右边2位显示该单元的内容。此时
·按NX键使地址加1再显示。
·按LS键使地址减l再显示。
·键入十六进制数据,则将改写现行地址单元的内容。
·按MON键则返回监控,显示提示符“P.”。
⑵ 寄存器内容显示修改
操作:×RG即在“P.”提示符下,先输入寄存器代号, 再按RG键,显示器右边4位显示寄存器中内容,左1、2位显示寄存器名。此时:
·按NX键,则依次循环显示下一个寄存器中的内容。
·按LS键,则依次显示上一个寄存器中的内容。
·输入十六进制数字, 则该寄存器中的内容被修改。
·按MON键则返回监控,显示提示符“P.”。
⑶ EPROM传送
操作:在提示符“P.”状态下,按SCAL键,开始EPROM传送,把EPROM中1000H~FFFFH内容传送到相应的内存中,传送时数码管 显示闪动的“——”,传送完毕返回监控,显示提示符“P.”。
⑷ 单步运行
操作:有三种状态都可以进入单步操作(段地址固定为0000H)
·在监控提示符“P.”状态下,按STEP键,从默认的起始地址IP=1000H单元开始单步运行一条指令语句。
·在存贮器单元读写状态(即左边4位显示存贮器地址,右边2位显示存贮器单元内容)下,从当前存贮器地址开始单步运行一条指令语句。
·先输入四位起始地址,再按STEP键,则从输入的起始地址开始运行一条指令语句。每运行一条语句,显示器显示下一条指令语句的地址及其内容。
⑸ 连续运行
操作:有三种状态可以进入连续运行
·在监控提示符“P.”状态下,按EXEC键,从默认起始地址CS=0000H,IP=1000H开始连续运行用户程序。
·在存贮器读写状态下,按EXEC键,从现行存贮器地址开始(CS=0000H)连续运行用户程序。
·先输入4位起始地址,再按EXEC键,则从输入的起始地址开始连续运行用户程序(CS=0000H)。
要想从运行用户程序返回监控, 可以按主机RST键, 则重新进入监控状态,初始化部分寄存器。
⑻ 断点运行(默认段地址CS=0000H)
操作:××××F1,××××EXEC即在提示符“P.”状态下,输入4位断点地址,按F1键,再输入4位起始地址,按EXEC键,程序从起始地址开始运行,显示器显示“「”执行符。当程序运行到断点地址处会自动停下来,并显示断点地址和内容,同时保护所有寄存器的值。
第五章 8086K实验系统与PC机联机操作
5.1 DICE-8086k软件概述
⑴ 该软件适用于DICE-8086K、DICE-8086KA、598K等实验仪。
⑵ 该软件运行环境:该软件适宜在安装Windows95/98/2000/XP操作系统的PC机上运行。
5.2 DICE-8086k软件安装
运行随机光盘上“DICE-8086k.EXE“安装文件,根据提示完成软件安装,然后双击桌面上‘DICE-8086k’快捷图标,即可运行DICE-8086k软件。
5.3 DICE-8086k软件启动和联机
5.3.1 启动和联机
双击桌面上‘DICE-8086k’快捷图标,即可运行DICE-8086k软件,屏幕显示DICE-8086k软件的工作窗口,底边状态栏由“下位机没有连接…”变成“连接上下位机”,说明联机成功,否则会弹出对话框提示:“下位机没有连接…”,此时单击“OK”,实验系统和PC机处于脱机状态,然后用户根据连接硬件实际情况来设定COMl或COM2,设定方法如下:依次单击菜单栏:“设置(X)、通讯口设置(Z)、COM1或COM2”确定、波特率设为9600、然后点击‘保存设置退出’,状态设定后,系统会自动检测连接。如果此时确定端口和波特率设置正确,但系统仍然没有连接,可按以下两种方法解决:(1)单击工具栏上的“重新连接”按钮,即可联机;(2)复位实验系统,使得数码管上显示监控提示符“P.”, 然后关闭DICE-8086k软件,重新运行,故障即可排除。
5.3.2 联机失败原因及解决办法
⑴ 实验系统与PC机没有连接;
⑵ 实验系统电源没有打开;
⑶ 串口实际位置与软件设置不一致;
⑷ 通讯开关位置不正确, 检查实验系统各状态设置开关是否确认为出厂模式;
⑸ 软件有病毒;
⑹ 实验系统或PC机处于非正常状态。
对于⑴⑵⑷⑸的错误,只要在硬件上检查一下,或用杀毒软件清毒一下即可:如文件已被破坏或需软件升级,可到本厂网站下载。对于第⑶种错误,重复5.3.1操作,对第⑹种错误,联机之前先按一下实验系统RST复位按钮,使实验系统处于P态, 否则说明实验系统不正常,应送当地销售部门或返厂维修。如PC机工作失常也会引起联机失败, 可关闭DICE-8086k软件,重新运行或调换PC机试一下。
5.4 DICE-8086k软件主窗口
① 顶部为菜单栏和工具栏, 提供调试全部命令和功能。
② 中间部分为工作窗口区,提供软件调试、寄存器、标志位、存储器、汇编代码对照、编译信息显示等窗口。
③ 底部为状态栏,提示软件联机状态等信息。
5.5 菜单栏和工具栏命令简介
工具栏使用:只要移动鼠标,指向工具栏中选定的图标,即会提示该图标所执行的命令。
5.5.1 文件菜单栏
● 新建文件
单击菜单栏“文件”或工具栏“新建”图标,即会建立一个新的源程序编辑窗口,编辑窗口显示Editor,此时可在此编辑、输入源程序。
●F3打开文件
单击菜单栏“文件”或工具栏“打开”图标,弹出“打开文件”的对话框,然后选择要装入的源文件,单击“确定”即可装入源文件。
● 关闭
单击菜单栏“文件”下的“关闭”即可关闭源程序编辑窗口。
● 保存
单击菜单栏“文件”下的“保存”或按CTRL+S,即可保存文件。
●N建立新文件
分别单击“F文件”、“建立新文件”即可创建新文件,再选择“换名存盘”填入所存文件名即可。
● 另存为
单击菜单栏“文件”下的“另存为”,可弹出另存为对话框,在此可选择新的文件名和保存文件夹,单击“保存”完成保存操作。
● 退出
依次单击“文件”、“退出”或单击菜单栏上的最后一个门形按钮“关闭按钮”即可退出DICE-8086k软件调试环境。
5.5.2 编辑菜单栏
剪贴CTRL+X |
删除程序中选定的正文,同时将它复制到剪贴板中 |
复制CTRL+C |
保留选定的正文,同时将它复制到剪贴板中 |
粘贴CTRL|+V |
将剪贴板中内容复制在光标处 |
删除DEL |
删除选中的正文 |
全选CTRL+A |
选中源程序编辑窗口中所有的正文 |
ALT+BackSpace |
可恢复上几次误操作 |
5.5.3 调试菜单栏
● 编译装载F9
打开源文件,依次单击¨调试”\“编译装载F9”或工具栏上的编译装载图标,几秒钟后便会弹出‘编译成功’对话框,单击“OK”,再等待几秒钟后又会弹出‘装载成功’对话框,单击“OK”即编译装载完毕。,如编译出错,会提示错误信息,待修改源文件正确后,重新编译装载即可。
● 连续运行
单击菜单栏“调试”下的“连续运行”或单击工具栏的连续运行图标,即可快速连续运行程序。
● 程序单步
单击菜单栏“调试”下的“程序单步”或单击工具栏的程序单步图标,即可单步运行程序。
● 重新连接
可单击菜单栏中“重新连接“,也可单击工具栏的”重新连接“图标,即可重新连接上下位机。
● 复位
菜单栏中“复位”无效,可单击工具栏的“复位”图标,即可复位软件,寄存器置初值,指令指针返回到程序首地址。
5.5.4 设置
● 单击“设置”下的“通讯口设置”或工具栏上的“通讯口设置”即可打开“通讯设置”对话框,在此可设置端口和波特率。
5.5.5 窗口
在此菜单可设置窗口的排列顺序,可打开相应的工作窗口。具体详见中文菜单
实验一 二进制码转换为BCD码
一、实验目的
1、掌握数码转换基本方法,加深对数码的理解。
2、用于十进制BCD码显示。
二、实验内容
将AX的内容转换为十进制BCD码。
三、实验程序框图
四、实验步骤
联机模式:
(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S2.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
⑵复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。
脱机模式:
⑴在P.态,按SCAL键,输入2CE0,按EXEC键。
⑵复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。
五、实验程序清单
;将AX拆为5个BCD码,并存入Result开始的5个单元
data segment AT 0 ;S2.ASM,BIN-->BCD
ORG 4000H
Result db 5 dup(?)
data ends
code segment
assume cs:code, ds:data
ORG 2CE0H
start proc near
mov ax, data
mov ds, ax
mov dx,0000h
mov ax, 65535
mov cx, 10000
div cx
mov Result, al ; 除以 10000, 得wan位数
mov ax,dx
mov dx,0000h
mov cx, 1000
div cx
mov Result+1, al ; 除以 1000, 得qian位数
mov ax,dx
mov dx,0000h
mov cx, 100
div cx
mov Result+2, al ; 除以 100, 得bai位数
mov ax,dx
mov dx,0000h
mov cx, 10
div cx
mov Result+3, al ; 除以 10, 得shi位数
mov Result+4, dl ; 得ge位数
jmp $
code ends
end start
实验二 多分支程序
一、实验目的
掌握程序散转的方法,实现程序的多分支转移。
二、实验内容
编制程序,根据送入的数据转移运行。
三、实验程序框图
四、实验步骤
联机模式:
(1)在4000H单元写入00,01,……09中任一个数,按下MON键,返回P状态。
(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S9.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(3数码管应根据4000H单元中内容作不同的循环显示。
脱机模式:
1、在P.态下,按SCAL键。
2、在4000H单元分别写入00,01,……09,在P.态下,输入2F40,按EXEC键,数码管应根据4000H单元中内容作不同的循环显示。
五、实验程序清单
CODE SEGMENT ;S9.ASM
ASSUME CS:CODE ;this is a program of 9 way jmp
ORG 2F40H ;[4000H]=0,1,2,3....9; disp:0,1,2,3....0
START: JMP START0
ADDR DW DP0,DP1,DP2,DP3,DP4,DP5,DP6,DP7,DP8,DP9
START0: MOV SI,4000H
MOV AL, [SI]
SUB AH,AH
SHL AL,1
MOV BX,OFFSET ADDR
ADD BX,Ax
JMP [BX]
DP0: mov bl,0c0h ;DISP "0"
jmp disp
DP1: mov bl,0f9h ;DISP "1"
jmp disp
DP2: mov bl,0a4h ;DISP "2"
jmp disp
DP3: mov bl,0b0h ;DISP "3"
jmp disp
DP4: mov bl,99h ;DISP "4"
jmp disp
DP5: mov bl,92h ;DISP "5"
jmp disp
DP6: mov bl,82h ;DISP "6"
jmp disp
DP7: mov bl,0f8h ;DISP "7"
jmp disp
DP8: mov bl,80h ;DISP "8"
jmp disp
DP9: mov bl,90h ;DISP "9"
jmp disp
;----------------------------------------
disp: mov ah,0DFh
disp0: mov dx,0ff22h
mov al,bl
OUT DX,AL
mov dx,0ff21h
mov al,ah
OUT DX,AL
CALL DLY
ror ah,01h
jmp disp0
DLY: mov cx,0001h
dly1: push cx
mov cx,0ffffh
disp1: loop disp1
pop cx
oop dly1
ret
CODE NDS
END START
实验三 简单I/O口扩展实验
一、实验目的
1、学习微机系统中扩展简单I/O口的方法。
2、学习数据输入输出程序的编制方法。
二、实验内容
利用74LS244作为输入口,读取开关状态,并将此状态通过74LS273再驱动发光二极管显示出来。
三、实验接线图
四、实验程序框图
五、实验步骤
l、按图6-l2接线,Y0~Y7接KI~K8,Q0~Q7接L1~L8,CS1接8000孔,CS2接9000孔,JX7→JX17。
2、运行实验程序,在系统处于命令提示符“P.”状态下,按SCAL键,输入19D0, 按EXEC键。
3、按动K1~K8,观察Ll~L8是否对应点亮。
六、实验程序清单
CODE SEGMENT ;IO.ASM
ASSUME CS:CODE
ORG 19D0H
START: MOV DX,8000H
IN AL,DX
MOV DX,9000H
OUT DX,AL
JMP START
CODE ENDS
END START
实验四 交通灯控制实验
一、实验目的
a、掌握可编程I/O接口芯片8255A并行接口的基本工作原理及使用。
b、熟悉对8255初始化编程和输入、输出软件的设计方法。
c、用8255做输出口,控制12个发光二极管亮灭,模拟交通灯管理。
二、实验内容
用8255做输出口,控制十二个发光管亮灭,模拟交通灯管理。
三、实验接线图
四、编程指南
⑴ 通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯, 以模拟交通路灯的管理。
⑵ 要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口l、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延时一段时间后,l、3路口的绿灯熄灭,而l、3路口的黄灯开始闪烁,闪烁若干次以后,l、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到l、3路口方向,之后,重复上述过程。
⑶ 程序中设定好8255A的工作模式及三个端口均工作在方式0,并处于输出状态。
⑷ 各发光二极管共阳极,使其点亮应使8255A相应端口的位清0。
五、实验程序框图
六、实验步骤
⒈ 在系统显示监控提示符“P.”时,按SCAL键。
⒉ 按图6-4连好实验线路
8255A PC0-L3 PC1-L7 PC2-L11 PC3-L15
PC4-L2 PC5-L6 PC6-L10 PC7-L14
PB4-L1 PB5-L5 PB6-L9 PB7-L13
⒊ 在“P.”态时,输入11E0后,按EXEC键;系统显示执行符“┌”,同时Ll-Ll5发光二极管模拟交通灯显示。
七、实验程序清单
CODE SEGMENT ;H8255-2.ASM
ASSUME CS:CODE
IOCONPT EQU 0FF2BH
IOAPT EQU 0FF28H
IOBPT EQU 0FF29H
IOCPT EQU 0FF2AH
ORG 11e0H
START: MOV AL,82H
MOV DX,IOCONPT
OUT DX,AL
MOV DX,IOBPT
IN AL,DX
MOV BYTE PTR DS:[0601H],AL
MOV DX,IOCONPT
MOV AL,80H
OUT DX,AL
MOV DX,IOBPT
MOV AL,DS:[0601H]
OR AL,0F0H
OUT DX,AL
MOV DX,IOCPT
MOV AL,0F0H
OUT DX,AL
CALL DELAY1
IOLED0: MOV AL,10100101B
MOV DX,IOCPT
OUT DX,AL
CALL DELAY1
ALL DELAY1
OR AL,0F0H
OUT DX,AL
MOV CX,8H
IOLED1: MOV DX,IOBPT
MOV AL,DS:[0601H]
AND AL,10101111B
OUT DX,AL
CALL DELAY2
OR AL,01010000B
OUT DX,AL
CALL DELAY2
LOOP IOLED1
MOV DX,IOCPT
MOV AL,0F0H
OUT DX,AL
CALL DELAY2
MOV AL,01011010B
OUT DX,AL
CALL DELAY1
CALL DELAY1
OR AL,0F0H
OUT DX,AL
MOV CX,8H
IOLED2: MOV DX,IOBPT
MOV AL,DS:[0601H]
AND AL,01011111B
OUT DX,AL
CALL DELAY2
OR AL,10100000B
OUT DX,AL
CALL DELAY2
LOOP IOLED2
MOV DX,IOCPT
MOV AL,0F0H
OUT DX,AL
CALL DELAY2
JMP IOLED0
DELAY1: PUSH AX
PUSH CX
MOV CX,0030H
DELY2: CALL DELAY2
LOOP DELY2
POP CX
POP AX
RET
DELAY2: PUSH CX
MOV CX,8000H
DELA1: LOOP DELA1
POP CX
RET
CODE ENDS
END START
实验五 步进电机综合控制实验
一、实验目的
1、了解步进电机控制的基本原理。
2、掌握步进电机转动编程方法。
二、实验内容
l、用8255的PA0~PA3输出脉冲信号,驱动步进电机转动,通过键盘设定来控制步进电机正转、反转、停止。
2、实验预备知识,步进电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,用微电脑控制步进电机最适合。
三、实验接线图
四、实验步骤
1、 在系统处于命令提示符“P.”态下,按SCAL键。
2、按图6-9连好实验线路图,8255的PA0~PA3依次连到HA-HD插孔。
3、运行实验程序。
在系统处于命令提示符“P.”态下,输入1630,按EXEC键,显示BJ┈,按“1”键正转;按“2”键反转;按“3”停止。
3、观察步进电机转动情况。
五、实验程序清单
CODE SEGMENT ;BJ.ASM
ASSUME CS:CODE
IOCONPT EQU 0FF2BH
IOBPT EQU 0FF29H
IOAPT EQU 0FF28H
PA EQU 0FF21H ;字位口
PB EQU 0FF22H ;字形口
PC EQU 0FF23H ;键入口
ORG 1630H
START: JMP START0
BUF DB ?,?,?,?,?,?
KZ DB ?
ltime db ?
lkey db ?
data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F1H
START0: CALL BUF1
MOV AL,88H
MOV DX,IOCONPT
OUT DX,AL
redikey: call dispkey
cmp KZ,01h
JZ ZZ
cmp KZ,02h
JZ FZ
cmp KZ,03h
JZ STX
JMP REDIKEY
STX: JMP ST
ZZ: CALL BUFZ
ZZ1: MOV DX,IOAPT
MOV AL,03H
MOV DX,IOAPT
OUT DX,AL
CALL DELPZ
MOV AL,06H
MOV DX,IOAPT
OUT DX,AL
CALL DELPZ
MOV AL,0CH
MOV DX,IOAPT
OUT DX,AL
CALL DELPZ
MOV AL,09H
MOV DX,IOAPT
OUT DX,AL
CALL DELPZ
MOV AL,03H
MOV DX,IOAPT
OUT DX,AL
CALL DELPZ
MOV AL,06H
MOV DX,IOAPT
OUT DX,AL
CALL DELPZ
MOV AL,0CH
MOV DX,IOAPT
OUT DX,AL
CALL DELPZ
MOV AL,09H
MOV DX,IOAPT
OUT DX,AL
CALL DELPZ
JMP ZZ1
;-------------------------
FZ: CALL BUFF
FZ1: MOV DX,IOAPT
MOV AL,0CH
OUT DX,AL
CALL DELPF
MOV AL,06H
MOV DX,IOAPT
OUT DX,AL
CALL DELPF
MOV DX,IOAPT
MOV AL,03H
OUT DX,AL
CALL DELPF
MOV AL,09H
MOV DX,IOAPT
OUT DX,AL
CALL DELPF
MOV AL,0CH
MOV DX,IOAPT
OUT DX,AL
CALL DELPF
MOV AL,06H
MOV DX,IOAPT
OUT DX,AL
CALL DELPF
MOV AL,03H
MOV DX,IOAPT
OUT DX,AL
CALL DELPF
MOV AL,09H
MOV DX,IOAPT
OUT DX,AL
CALL DELPF
JMP FZ1
;-----------------
ST: CALL BUFS
MOV DX,IOAPT
MOV AL,00H
OUT DX,AL
ST1: call dispkey
cmp KZ,01h
JZ ZZMON
cmp KZ,02h
JZ FZMON
JMP ST1
delpZ: mov cx,09h
con1: push cx
CALL dispkey
pop cx
cmp KZ,02h
JZ FZMON
cmp KZ,03h
JZ STMON
loop con1
RET
delpF: mov cx,09h
con2: push cx
CALL dispkey
pop cx
cmp KZ,01h
JZ ZZMON
cmp KZ,03h
JZ STMON
loop con2
RET
ZZMON: POP CX
JMP ZZ
FZMON: POP CX
JMP FZ
STMON: POP CX
JMP ST
;-------------------------
dispkey: call disp
call key
mov ah,al ;newkey
mov bl,ltime ;ltime
mov bh,lkey ;lkey
mov al,01h
mov dx,0ff21h
out dx,al
cmp ah,bh
mov bh,ah ;bh=new key
mov ah,bl ;al=time
jz disk4
mov bl,88h
mov ah,88h
disk4: dec ah
cmp ah,82h
jz disk6
cmp ah,0eh
jz disk6
cmp ah,00h
jz disk5
mov ah,20h
dec bl
jmp disk7
disk5: mov ah,0fh
disk6: mov bl,ah
mov ah,bh
disk7: mov ltime,bl
mov lkey,bh
mov KZ,bh
mov al,ah
ret
key: mov al,0ffh
mov dx,0ff22h
out dx,al
mov bl,00h
mov ah,0feh
mov cx,08h
key1: mov al,ah
mov dx,0ff21h
out dx,al
rol al,01h
mov ah,al
nop
nop
nop
nop
nop
nop
mov dx,0ff23h
in al,dx
not al
nop
nop
and al,0fh
jnz key2
inc bl
loop key1
jmp nkey
key2: test al,01h
je key3
mov al,00h
jmp key6
key3: test al,02h
je key4
mov al,08h
jmp key6
key4: test al,04h
je key5
mov al,10h
jmp key6
key5: test al,08h
je nkey
mov al,18h
key6: add al,bl
cmp al,10h
jnc fkey
mov bl,al
mov bh,0h
mov si,offset data2
mov al,[bx+si]
ret
nkey: mov al,20h
fkey: ret
data2: db 07h,04h,08h,05h,09h,06h,0ah,0bh
DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh
DISP: MOV AL,0FFH ;00H
MOV DX,PA
OUT DX,AL
MOV CL,0DFH ;20H ;显示子程序 ,5ms
MOV BX,OFFSET BUF
DIS1: MOV AL,[BX]
MOV AH,00H
PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX
MOV AL,[BX]
POP BX
MOV DX,PB
OUT DX,AL
MOV AL,CL
MOV DX,PA
OUT DX,AL
PUSH CX
DIS2 : MOV CX,0a0H
LOOP $
POP CX
CMP CL,0FEH
JZ LX1
INC BX
ROR CL,1
JMP DIS1
LX1: MOV AL,0FFH
MOV DX,PB
OUT DX,AL
RET
BUF1: MOV BUF,0BH
MOV BUF+1,019H
MOV BUF+2,17H
MOV BUF+3,17H
MOV BUF+4,17H
MOV BUF+5,17H
RET
BUFZ: MOV BUF,0BH
MOV BUF+1,19H
MOV BUF+2,17H
MOV BUF+3,17H
MOV BUF+4,17H
MOV BUF+5,0FH
RET
BUFF: MOV BUF,0BH
MOV BUF+1,19H
MOV BUF+2,17H
MOV BUF+3,17H
MOV BUF+4,17H
MOV BUF+5,18H
RET
BUFS: MOV BUF,0BH
MOV BUF+1,19H
MOV BUF+2,17H
MOV BUF+3,17H
MOV BUF+4,17H
MOV BUF+5,05H
RET
CODE ENDS
END START
主要参考文献
1、《DICE 系列598k单片机微机实验系统指导书》 启东计算机总厂随机资料
2、《IBM-PC汇编语言程序设计》 沈美明等编著 清华大学出版社
3、《80X86汇编语言程序设计教程》 杨季文等编著 清华大学出版社
4、《微型计算机技术及应用》 戴梅萼等编著 清华大学出版社