微机原理与接口综合实验
一直被占用,因此CPU利用率低。
可编程的硬件定时器直接对系统时钟脉冲或某一固定频率的时钟脉冲进行计数,计数值则由编程决定。当计数到预定的脉冲数时,产生中断信号,得到所需的延时时间或定时间隔。由于计数的初始值由编程决定,因而在不改动硬件的情况下,只通过程序变化即可满足不同的定时和计数要求,因此使用很方便。 五、硬件连接图
实验设计 5
微机原理与接口综合实验
六、 程序设计 1、程序流程图
开始 8255初始化 实验设计 设初始延时值 输出一拍脉冲(A) 延时 输出下一个脉冲(B) 延时 输出下个脉冲(C) 延时 输出下一个脉冲(D) 否 是否提速 是 是否最快 延时值减小
6
微机原理与接口综合实验
2、程序代码:
;**************************************************************************************
;本程序能实现步进电机的正反转与加速,具体过程如下: ;正转加速一段时间,然后停止5秒,然后反向加速一段时间,然后再正转,如此循环往复.
;能实现正-停-反,也能实现正-反-停.
;**************************************************************************************
MODE EQU 080H ;8255方式控制字 CTL EQU 8000H ;8255端口A地址 CONTRL EQU 8003H ;8255控制寄存器地址 A EQU 01H B EQU 02H C EQU 04H D EQU 08H
QS EQU 300 ;步进电机转过的圈数
DATA SEGMENT
DLY_C DW 0 ;DLY_C用以控制延时的长短以实现步进电机的加速
实验设计
7
微机原理与接口综合实验
SOURCE DB A,A+B,B,B+C,C,C+D,D,D+A ;步序表,使电机的工作方式为单/双8拍 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA ;初始化数据段 MOV DS,AX
;************************************************************************************** ;初始化8255,使8255的A口输出.
;**************************************************************************************
MOV DX,CONTRL ;8255的控制寄存器地址送DX
MOV AL,MODE ;8255的A口输出,故初始化控制字为80H OUT DX,AL ;将控制字从8255输出以配置8255的工作方式 MOV DX,CTL ;将A口地址送DX MOV AL,0 ;将0送AL
OUT DX,AL ;8255的端口写0以实现初始化
实验设计
8
微机原理与接口综合实验
MOV DLY_C,300H ;延时初始值
MOV CX,QS ;将步进电机的圈数300送CX
;**************************************************************************************
;以下程序段实现的功能是让电机正向加速,速度达到最大值后匀速转动. ;**************************************************************************************
ZZ:MOV BX,0 ;将0送BX,让电机的初始步为A NEXT1:MOV DX,CTL ;将8255的A口地址送DX MOV AL,SOURCE[BX] ;将电机的步序送AL
OUT DX,AL ;将步序表中的第一个步序通过A口输出 CALL DELAY ;调用延时子程序,用来控制电机转速 INC BX ;BX加1,为取下一个步序做准备 CMP BX,7
JBE NEXT1 ;判断电机是否已经走完8拍 PUSH CX ;保存CX的值,因为下面还要用到CX MOV CX,DLY_C ;将DLY_C的值送CX
DEC CX ;CX(即DLY_C)减1以实现加速
CMP CX,100H ;CX与100H比较,判断电机转速是否已经达到最大值
实验设计
9