微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx

上传人:b****8 文档编号:30616865 上传时间:2023-08-18 格式:DOCX 页数:20 大小:104.83KB
下载 相关 举报
微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx_第1页
第1页 / 共20页
微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx_第2页
第2页 / 共20页
微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx_第3页
第3页 / 共20页
微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx_第4页
第4页 / 共20页
微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx

《微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx》由会员分享,可在线阅读,更多相关《微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx(20页珍藏版)》请在冰豆网上搜索。

微机原理上机实验八+十二实验报告 8086中断实验 步进电机实验.docx

微机原理上机实验八+十二实验报告8086中断实验步进电机实验

 

微机原理上机实验报告

实验八:

8086中断实验

实验十二:

步进电机实验

 

微机原理上机实验(八)实验报告

实验八:

8086中断实验

一、实验目的

1、了解8086内部响应中断的机制;掌握中断向量的作用。

2、利用实验仪上单脉冲、74HC244电路,不使用8259,实现一个中断实例。

3、复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验内容

1、编制程序:

拨动单脉冲开关,“

”送给8086的INTR,触发中断;8086通过INTA信号,读取中断向量;8086计数中断次数,显示于F5区的数码管上

注意:

给INTR高电平信号,8086就会相应中断,所以实验开始前,保证单脉冲开关给8086低电平;中断程序中,加一个较长的延时程序,在中断结束前,有时间拨动单脉冲开关,恢复给8086低电平。

三、实验原理图

本实验,通过F4区的8个拨动开关,给74HC244设定中断向量;本实验的中断向量是08H,即IN7-IN0位数据是00001000。

同学可以自定义中断向量,实验程序中处理中断向量部分程序作相应调整

四、实验步骤

1、连线说明:

B4区:

CS244、BLE

——

C1区:

GND

B4区:

RD(IO区)

——

A3区:

INTA

A3区:

INTR

——

B2区:

单脉冲

B4区:

JP57(D0..D7)

——

A3区:

JP41

B4区:

JP52(IN0..7)

——

F4区:

JP27(1..8)

D3区:

CS、A0、A1

——

A3区:

CS1、A0、A1

D3区:

PC0、PC1

——

F5区:

KL1、KL2

D3区:

JP20、B、C

——

F5区:

A、B、C

2、运行程序

3、实验开始前,保证单脉冲开关给8086低电平;运行程序;向下拨动开关(触发中断),立即向上拨动开关,产生一个“

”,观察结果,数码管上显示的次数与拨动开关次数是否对应。

五、实验代码

EXTRN

InitKeyDisplay:

NEAR,Display8:

NEAR

_STACK

SEGMENT

STACK

DW

100DUP(?

_STACK

ENDS

_DATA

SEGMENT

WORDPUBLIC'DATA'

BUFFER

DB

8DUP(?

Counter

DB

?

ReDisplayFlag

DB

0

_DATA

ENDS

CODE

SEGMENT

START

PROC

NEAR

ASSUME

CS:

CODE,DS:

_DATA,SS:

_STACK

MOV

AX,_DATA

MOV

DS,AX

MOV

ES,AX

NOP

CALL

InitKeyDisplay

;对键盘、数码管控制器8255初始化

CALL

WriIntver

MOV

Counter,0

;中断次数

MOV

ReDisplayFlag,1

;需要显示

STI

;开中断

START1:

LEA

SI,Buffer

CALL

Display8

CMP

ReDisplayFlag,0

JZ

START1

CALL

LedDisplay

MOV

ReDisplayFlag,0

JMP

START1

WriIntver

PROC

NEAR

PUSH

ES

MOV

AX,0

MOV

ES,AX

MOV

DI,20H

LEA

AX,INT_0

STOSW

MOV

AX,CS

STOSW

POP

ES

RET

WriIntver

ENDP

LedDisplay

PROC

NEAR

MOV

AL,Counter

MOV

AH,AL

AND

AL,0FH

MOV

Buffer,AL

AND

AH,0F0H

ROR

AH,4

MOV

Buffer+1,AH

MOV

Buffer+2,10H

;高六位不需要显示

MOV

Buffer+3,10H

MOV

Buffer+4,10H

MOV

Buffer+5,10H

MOV

Buffer+6,10H

MOV

Buffer+7,10H

RET

LedDisplay

ENDP

INT_0:

PUSH

DX

PUSH

AX

MOV

AL,Counter

ADD

AL,1

DAA

MOV

Counter,AL

MOV

ReDisplayFlag,1

CALL

LedDisplay

DELAY:

PUSH

BX

PUSH

CX

PUSH

DI

PUSH

SI

MOV

CX,20

DELAY1:

LEA

SI,Buffer

CALL

Display8

loop

DELAY1

POP

SI

POP

DI

POP

CX

POP

BX

POP

AX

六、实验思考题

1.绘制本实验的详细实验电路图?

 

微机原理上机实验(十二)实验报告

实验十二:

步进电机实验

一、实验目的

1、了解步进电机的基本原理,掌握步进电机的转动编程方法

2、了解影响电机转速的因素有那些

二、实验内容

编写程序:

使用F5区的键盘控制步进电机的正反转、调节转速,连续转动或转动指定步数;将相应的数据显示在F5区的数码管上。

三、控制原理

步进电机的驱动原理是通过它每相线圈的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲来控制,所以调节脉冲的频率便可改变步进电机的转速,微控制器最适合控制步进电机。

另外,由于电机的转动惯量的存在,其转动速度还受驱动功率的影响,当脉冲的频率大于某一值(本实验为f.>100hz)时,电机便不再转动。

实验电机共有四个相位(A,B,C,D),按转动步骤可分单4拍(A->B->C->D->A),双4拍(AB->BC->CD->DA->AB)和单双8拍(A->AB->B->BC->C->CD->D->DA->A).

四、实验电路图

五、实验步骤

1、主机连线说明:

D1区:

A、B、C、D

——

D3区:

PC4、PC5、PC6、PC7

D3区:

CS、A0、A1

——

A3区:

CS1、A0、A1

D3区:

PC0、PC1

——

F5区:

KL1、KL2

D3区:

JP20(PB)、B、C

——

F5区:

A、B、C

B3区:

CS、A0

——

A3区:

CS3、A0

B3区:

INT、INTA

——

A3区:

INTR、INTA

C4区:

CS(8253)、A0、A1

——

A3区:

CS2、A0、A1

C4区:

GATE

——

C1区:

VCC

C4区:

CLK0

——

B2区:

1M

C4区:

OUT0

——

B3区:

IR0

2、调试程序,查看运行结果是否正确

六、实验代码

1、步进电机控制程序(STEP.ASM)

EXTRN

InitKeyDisplay:

NEAR,GetKeyA:

NEAR,DisPlay8:

NEAR

IO8259_0

EQU

0250H

IO8259_1

EQU

0251H

Con_8253

EQU

0263H

T0_8253

EQU

0260H

IO8255_Con

EQU

0273H

;CS3

IO8255_PC

EQU

0272H

_STACK

SEGMENT

STACK

DW

100DUP(?

_STACK

ENDS

_DATA

SEGMENT

WORDPUBLIC'DATA'

StepControl

DB

0

;下一次送给步进电机的值

buffer

DB

8DUP(0)

;显示缓冲区,8个字节

SpeedNo

DB

0

;选择哪一级速度

StepDelay

DB

0

;转动一步后,延时常数

StartStepDelay

DB

0;若选择速度过快,延时由长到短,最终使用对应延时常数

StartStepDelay1

DB

0

;StartStepDelay

bFirst

DB

0

;有没有转动过步进电机

bClockwise

DB

0;=1顺时针方向=0逆时针方向转动

bNeedDisplay

DB

0

;已转动一步,需要显示新步数

StepCount

DW

0

;需要转动的步数

StepDelayTab:

DB

250,125,83,62,50,42,36,32,28,25,22,21

_DATA

ENDS

CODE

SEGMENT

WORDPUBLIC'CODE'

START

PROC

NEAR

ASSUME

CS:

CODE,DS:

_DATA,SS:

_STACK

MOV

AX,_DATA

MOV

DS,AX

MOV

ES,AX

NOP

CALL

InitKeyDisplay

;初始化键盘、数码管控制器(8255)

MOV

bFirst,1

;有没有转动过步进电机

MOV

bClockwise,1

;顺时针方向

MOV

StepControl,33H

;下一次送给步进电机的值

MOV

SpeedNo,5

;第五级速度

CALL

Init8255

CALL

Init8253

CALL

Init8259

CALL

WriIntver

MOV

buffer,0

;显示缓冲器初始化

MOV

buffer+1,0

MOV

buffer+2,0

MOV

buffer+3,0

MOV

buffer+4,10H

MOV

AL,SpeedNo

MOV

buffer+5,AL

MOV

buffer+6,10H

MOV

buffer+7,0

STAR2:

LEA

SI,buffer

CALL

Display8

STAR3:

CALL

GetKeyA

JB

STAR5

CMP

bNeedDisplay,0

JZ

STAR3

MOV

bNeedDisplay,0

CALL

Adjust_Step

JMP

STAR2

STAR5:

CLI

;终止步进电机转动

CMP

AL,10

JNB

STAR1

MOV

AH,buffer+2

MOV

buffer+3,AH

MOV

AH,buffer+1

MOV

buffer+2,AH

MOV

AH,buffer

MOV

buffer+1,AH

MOV

buffer,AL

JMP

STAR2

STAR1:

CMP

AL,14

JNB

STAR2

LEA

SI,DriverTab

SUB

AL,10

SHL

AL,1

XOR

AH,AH

MOV

BX,AX

JMP

CS:

[SI+BX]

DriverTab:

DW

Direction

;转动方向

DW

Speed_up

;提高转速

DW

Speed_Down

;降低转速

DW

Exec

;步进电机根据方向、转速、步数开始转动

Direction:

CMP

bClockwise,0

JZ

Clockwise

MOV

bClockwise,0

MOV

buffer+7,1

AntiClockwise:

CMP

bFirst,0

JZ

AntiClockwise1

MOV

StepControl,91H

JMP

Direction1

AntiClockwise1:

MOV

AL,StepControl

ROR

AL,2

MOV

StepControl,AL

JMP

Direction1

Clockwise:

MOV

bClockwise,1

MOV

buffer+7,0

CMP

bFirst,0

JZ

Clockwise1

MOV

StepControl,33H

JMP

Direction1

Clockwise1:

MOV

AL,StepControl

ROL

AL,2

MOV

StepControl,AL

Direction1:

JMP

STAR2

Speed_up:

MOV

AL,SpeedNo

CMP

AL,11

JZ

Speed_up2

Speed_up1:

INC

AL

MOV

SpeedNo,AL

MOV

buffer+5,AL

Speed_up2:

JMP

STAR2

Speed_Down:

MOV

AL,SpeedNo

CMP

AL,0

JZ

Speed_Down1

DEC

AL

MOV

SpeedNo,AL

MOV

buffer+5,AL

Speed_Down1:

JMP

STAR2

Exec:

MOV

bFirst,0

CALL

TakeStepCount

LEA

BX,StepDelayTab

MOV

AL,SpeedNo

XLAT

MOV

StepDelay,AL

CMP

AL,50

JNB

Exec1

MOV

AL,50

Exec1:

MOV

StartStepDelay,AL

MOV

StartStepDelay1,AL

STI

JMP

STAR2

TIMER0:

PUSH

AX

PUSH

DX

DEC

StartStepDelay

JNZ

TIMER0_1

MOV

AL,StartStepDelay1

CMP

AL,StepDelay

JZ

TIMER0_2

DEC

AL

MOV

StartStepDelay1,AL

TIMER0_2:

MOV

StartStepDelay,AL

MOV

AL,StepControl

MOV

DX,IO8255_PC

OUT

DX,AL

CMP

bClockwise,0

JNZ

TIMER0_3

ROR

AL,1

JMP

TIMER0_4

TIMER0_3:

ROL

AL,1

TIMER0_4:

MOV

StepControl,AL

CMP

StepCount,0

JZ

TIMER0_1

MOV

bNeedDisplay,1

DEC

StepCount

JNZ

TIMER0_1

add

sp,8;小写部分不允许使用单步、单步进入命令

popf

cli

pushf

sub

sp,8

nop

TIMER0_1:

MOV

DX,IO8259_0

MOV

AL,20H

OUT

DX,AL

POP

DX

POP

AX

IRET

Adjust_Step

PROC

NEAR

MOV

CX,4

LEA

DI,buffer

CLD

MOV

AX,StepCount

MOV

BX,10

Adjust_Step1:

XOR

DX,DX

DIV

BX

XCHG

AX,DX

STOSB

MOV

AX,DX

LOOP

Adjust_Step1

RET

Adjust_Step

ENDP

TakeStepCount

PROC

NEAR

MOV

AL,buffer+3

;转动步数送入StepCount

MOV

BX,10

MUL

BL

ADD

AL,buffer+2

MUL

BL

ADD

AL,buffer+1

ADC

AH,0

MUL

BX

ADD

AL,buffer

ADC

AH,0

MOV

StepCount,AX

RET

TakeStepCount

ENDP

Init8255

PROC

NEAR

MOV

DX,IO8255_Con

MOV

AL,81H

OUT

DX,AL

;8255PC输出

DEC

DX

MOV

AL,0FFH

OUT

DX,AL

;0FFH->8255PC

RET

Init8255

ENDP

Init8253

PROC

NEAR

MOV

DX,Con_8253

MOV

AL,35H

OUT

DX,AL;计数器T0设置在模式2状态,BCD码计数

MOV

DX,T0_8253

MOV

AL,10H

OUT

DX,AL

MOV

AL,02H

OUT

DX,AL

;CLK0/210

RET

Init8253

ENDP

Init8259

PROC

NEAR

MOV

DX,IO8259_0

MOV

AL,13H

OUT

DX,AL

MOV

DX,IO8259_1

MOV

AL,08H

OUT

DX,AL

MOV

AL,09H

OUT

DX,AL

MOV

AL,0FEH

OUT

DX,AL

RET

Init8259

ENDP

WriIntver

PROC

NEAR

PUSH

ES

MOV

AX,0

MOV

ES,AX

MOV

DI,20H

LEA

AX,TIMER0

STOSW

MOV

AX,CS

STOSW

POP

ES

RET

WriIntver

ENDP

START

ENDP

CODE

ENDS

END

START

七、实验扩展及思考

1、怎样改变电机的转速?

通过调节键盘的按钮(C和D)可以改变电机的转速。

2、通过实验找出电机转速的上限,如何能进一步提高最大转速?

增大驱动电机的电流。

3、怎样能使电机反转?

通过调节键盘的按钮(A)可以改变电机的转动方向。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1