微机原理硬件实验报告

  • 格式:docx
  • 大小:81.01 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理课程实验报告

实验题目

简易微型计算机控制系统的设计与接口芯片的使用,8259A、8254、8255A、8251A 的联合编程。

实验目的

掌握简易微型计算机控制系统的设计和搭建的步骤和方法,理解并使用8259A、8254、8255A、8251A接口芯片进行联合编程,实现双机通讯、基本输入输出、计数\定时、中断响应的基本功能,在此基础上,达到实验设计构想。

设计思路

1. 使用两台实验装置,一台为发送机,一台为接收机,进行两机间的串行通讯。

2. 运行各自对应程序后,发送机在DOS界面下显示开始信息“START”,接收机显示程序启动、等待接受的信息“BEGUN,RECEIVING INFO”。

3. 输入控制指令“TURN”(8路LED灯轮流闪动,每次灯闪0.5s),或“BLINK”(8路LED灯一同闪动,每次灯闪0.5s),或“FORWARD”(8路LED从两边向中间闪动,每次灯闪0.5s),回车后则接收机上8路LED灯出现各自对应效果,屏幕上显示“IT’S SHOW TIME”。

4. 显示15次(1min)后,演示结束,接收机LED灯出现OVER状态(每隔一灯亮),屏幕上显示“SHOW OVER”,并将结果传回发送机,发送机屏幕上显示同样内容。

5. 按ESC键退出程序。

程序思路

分为发送机程序和接收机程序两大部分

发送机程序思路(SENDER.ASM)

1. 程序启动时显示提示信息。指令字符串、提示信息的输入、显示、存储操作采用INT 21H的DOS中断功能调用。

2. 得到指令字符串后,判断其类型后,向发送机发送指令类型,功能实现通过8251A的双机通信,S/R(发送机、接收机,下同)设置相同的波特率、数据格式(1个停止位、偶检验、字符长度8位),均允许收发数据。

3. 发送完指令类型后,开始等待接收演示结束的指令。

4. 程序结束。

综上,发送机端主要用到8255的基本输入输出、8251A的双机串行异步通信、DOS功能调用等主要功能。

接收机程序思路(RECEIVER.ASM)

接收机程序中需要用到中断处理,因此设计思路分为主程序和中断处理子程序两部分。

接收机主程序

1. 程序启动后,完成对8251A、8253、8255的初始化编程,其中,8251的方式字波特率系数64,8个数据位,1个停止位,偶校验;命令字允许接收发送数据,清错误标志。8253的通道0为方式0,先写低字节,后写高字节,二进制计数。8255的初始化中A口、B口均为方式0,基本输入输出,A口输入、B口输出,C口暂时不用;

2. 设置中断向量,包括关中断、保存原中断向量和中断屏蔽寄存器的屏蔽字等;

3. 提示程序开始后,接收指令类型,功能实现通过8251的双机串行通信;

4. 接收到指令信息后,开中断,对8253装入初值9000H,CLK为18.432MHz,方式0时,每0.5s产生一次中断;

5. 设置效果演示次数,此时主程序进入循环,当次数没有减为0是,一直处于循环;

6. 次数CX=0后,跳出WAIT1,关中断,结束提示信息和LED灯显示OVER状态;

7. RECOVER程序段用来恢复原来的中断向量和屏蔽字;

8. 程序结束,返回DOS系统

中断处理子程序

1. 寄存器内容入栈保护;

2. 判别指令类型,执行对应效果程序段,使用OUT指令将LED灯对应的二进制状态通过8255的B口输入,使其出现相应效果;

3. 演示次数计数器减1;

4. 重装8253的通道0计数初值,方式不变,以便触发下次中断;

5. 向8259发中断结束命令,清除相应ISR置位;

6. 寄存器保护内容弹栈;

7. IRET返回命令

8. 中断处理子程序结束

综上,接收机端使用到了8251、8253、8255、8259基本上全部功能,8253用来产生计数中断,8259响应中断和中断服务,8255对外设(LED灯)输出,8251与发送机的串行通信。

硬件连线图

图一:双机通讯连线图

图二:接收机LED灯显示连线图

图三:接收机计数中断连线图

程序设计

发送机程序(SENDER.ASM)

CS0 EQU 3000H ;8255片选CS0 对应的端口始地址

PA EQU CS0+00H ;8255 的A 口地址

PB EQU CS0+01H ;8255 的B 口地址

PC EQU CS0+02H ;8255 的C 口地址

CP EQU CS0+03H ;8255 的控制寄存器地址

CS1 EQU 3020H ;8251片选CS1对应的端口地址

PD EQU CS1+00H ;8251 数据寄存器

PM EQU CS1+01H ;8251 方式控制寄存器

DATA SEGMENT

SET DB "------ START------",0AH,0DH,'$' ;提示信息

OVE DB "------SHOW IS OVER------",0AH,0DH,'$' ;结束信息提示BUFF DB 20 ;指令字符串输入缓冲区

DB ?

DB 20 DUP(?)

DATA ENDS

MSTACK SEGMENT STACK

SA DW 20 DUP(?)

TOP_STAC LABEL WORD

MSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:MSTACK,ES:DATA

START:

MOV AX,MSTACK

MOV SS,AX

LEA SP,TOP_STAC

MOV AX,DATA

MOV DS,AX

;8255A的初始化编程,方式0,A口输入,B口输出;

MOV DX,CP

MOV AL,10010000B

OUT DX,AL

MOV AX,DATA ;显示提示信息

MOV DS,AX

LEA DX,SET

MOV AH,9

INT 21H

MOV DX,PM ;8251初始化编程

MOV AL,00H

OUT DX,AL

CALL DELAY

OUT DX,AL

CALL DELAY

OUT DX,AL

CALL DELAY

MOV AL,40H

OUT DX,AL

CALL DELAY

MOV AL,01111110B ;方式字,波特率系数64,8个数据位,1个停止位,偶校验

OUT DX,AL

CALL DELAY

MOV AL,00110111B ;命令字,允许接收发送数据,清错误标志

OUT DX,AL

MOV AX,DATA ;将输入的指令存入输入缓冲区

MOV DS,AX

LEA DX,BUFF

MOV AH,0AH

INT 21H

MOV BX,DX

MOV CX,0