资源描述
接口技术 实验报告
专业班级 姓名 学 号
实验九、8255A+8253+8259控制步进电机
一、实验目的
进一步掌握8253、8259、8255的工作原理,熟悉它们的使用方法,根据被控对象的要求组合使用步进电机的工作原理和控制方法。
二、实验设备
EL教学实验装置一个、计算机一套。
三、实验内容
将实验装置上的脉冲发生器所产生的脉冲信号作为定时/计数器8253的计数脉冲,使8253工作于周期计数方式(方式2),使其产生的脉冲输出信号作为中断控制器8259芯片的中断源。
中断控制器8259响应中断后,调用中断服务程序(8255驱动步进电动机)完成8255芯片对步进电机的控制。
四、实验原理
本实验由8253、8255、8259三个芯片及步进电机组成,各芯片的工作原理参看前各部分实验。
五、实验步骤
1、实验连线
8255CS~CS0,8255A口接步进电机A、B、C、D,为了观察步进电机的通电情况,将A、B、C、D插孔与发光二极管相连
8253CS~CS1,CLK2~8253CLK0,out0~8259IR0;
8259CS~CS2,INT~INT(INT在8086小板上),INTA~INTA(在8086小板上)
2、根据程序框图编程实验程序,并对编写好的程序进行汇编、连接,然后全速或单步运行程序。
3、全速运行后观察步进电机的旋转情况以及发光二极管的变化。
六、实验程序
code segment
assume cs:code
org 100h
p8259: cli
mov ax,0 ;中断程序的段地址、偏移地址填写
mov ds,ax
mov ax,offset int8259
mov bx,200h
mov ds:[bx],ax
mov bx,202h
mov ax,100h
mov ds:[bx],ax
for8259: mov al,13h ;8259初始化定义
mov dx,04c0h
out dx,al
mov al,80h
mov dx,04c2h
out dx,al
mov al,01h
out dx,al
mov al,0feh
out dx,al
mov si,0
i8255: mov dx,04a6h ;8255初始化定义
mov al,80h
out dx,al
mov bl,33h ;设置初置
p8253: mov dx,04b6h
mov al,34h ;通道0,方式2
out dx,al
mov dx,04b0h
mov al,0
out dx,al
mov al,96h
out dx,al
sti
jmp $
int8259: cli
mov al,bl ;中断程序
mov dx,04a0h
out dx,al
rol bl,1
mov al,20h
mov dx,04c0h
out dx,al
sti
iret
code ends
end p8259
七、思考题
1、分析程序并写出程序注释。
code segment
assume cs:code
org 100h
p8259: cli
mov ax,0 ;中断程序的段地址、偏移地址填写
mov ds,ax
mov ax,offset int8259 ;编写中断向量表
mov bx,200h
mov ds:[bx],ax
mov bx,202h
mov ax,100h
mov ds:[bx],ax
for8259: mov al,13h ;8259初始化定义设置ICW1,本片单独使用,且下面设置ICW4
mov dx,04c0h
out dx,al
mov al,80h ;设置OCW2,采用优先级循环方式,且IR0优先级
最低
mov dx,04c2h
out dx,al
mov al,01h ;设置ICW2,采用非循环方式
out dx,al
mov al,0feh
out dx,al
mov si,0
i8255: mov dx,04a6h ;8255初始化定义
mov al,80h ;采用方式0,A,B,C口均作输出
out dx,al
mov bl,33h ;设置初置
p8253: mov dx,04b6h
mov al,34h ;通道0,方式2
out dx,al
mov dx,04b0h
mov al,0 ;向8253输入数据
out dx,al
mov al,96h
out dx,al
sti
jmp $
int8259: cli
mov al,bl ;中断程序
mov dx,04a0h ;向8255输入数据实现步进电机转动
out dx,al
rol bl,1 ;控制步进电机转动方向
mov al,20h ;设置OCW2,L2到L0有效,清除当前中断服务器的IR0位
mov dx,04c0h
out dx,al
sti
iret
code ends
end p8259
2、如何在电动机工作状态下通过设置一个状态控制开关实现步进电机的反向转动?
硬件上:将8255的B口的PB0与一个开关相连,通过拨动开关控制步进电机的转动方向。
软件上做如下修改:
code segment
assume cs:code
org 100h
p8259: cli
mov ax,0 ;中断程序的段地址、偏移地址填写
mov ds,ax
mov ax,offset int8259
mov bx,200h
mov ds:[bx],ax
mov bx,202h
mov ax,100h
mov ds:[bx],ax
for8259: mov al,13h ;8259初始化定义
mov dx,04c0h
out dx,al
mov al,80h
mov dx,04c2h
out dx,al
mov al,01h
out dx,al
mov al,0feh
out dx,al
mov si,0
i8255: mov dx,04a6h ;8255初始化定义
mov al,82h ;由B口送入判断信号
out dx,al
mov bl,33h ;设置初置
p8253: mov dx,04b6h
mov al,34h ;通道0,方式2
out dx,al
mov dx,04b0h
mov al,0
out dx,al
mov al,96h
out dx,al
sti
jmp $
int8259: cli
mov al,bl ;中断程序
mov dx,04a0h
out dx,al
mov dx,04A2h ;从B口读入判断信号
in al,dx ;送al寄存器
xor al,00h ;进行判断,若输入为
jz R1 ;若al为0跳转R1
ror bl, 1
jmp R2
R1: rol bl,1
R2: mov al,20h
mov dx,04c0h
out dx,al
sti
iret
code ends
end p8259
展开阅读全文