最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

合工大微机原理实验报告全解

来源:动视网 责编:小OO 时间:2025-09-25 13:46:04
文档

合工大微机原理实验报告全解

《微机原理与接口技术》课程实验报告实验名称实验一8251可编程通信实验(与微机)姓名系院专业你的专业班级你的专业13-5班学号实验日期2015.5.20指导教师成绩一、实验目的和要求1、了解8251的内部结构、工作原理;了解8251与8086的接口逻辑;掌握对8251的初始化编程方法,学会使用8251实现设备之间的串行通信。二、实验内容(包括实验步骤和代码)(一)实验内容1、编制程序:实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发时钟。2、连接线路,从微机接收一批数据
推荐度:
导读《微机原理与接口技术》课程实验报告实验名称实验一8251可编程通信实验(与微机)姓名系院专业你的专业班级你的专业13-5班学号实验日期2015.5.20指导教师成绩一、实验目的和要求1、了解8251的内部结构、工作原理;了解8251与8086的接口逻辑;掌握对8251的初始化编程方法,学会使用8251实现设备之间的串行通信。二、实验内容(包括实验步骤和代码)(一)实验内容1、编制程序:实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发时钟。2、连接线路,从微机接收一批数据
《微机原理与接口技术》课程实验报告

实验名称实验一  8251可编程通信实验(与微机)

姓    名

系院专业你的专业班    级

你的专业

13-5班

学    号

  
实验日期2015.5.20指导教师    成    绩

一、实验目的和要求

1、了解8251的内部结构、工作原理;了解8251与8086的接口逻辑;掌握对8251的初始化编程方法,学会使用8251实现设备之间的串行通信。

二、实验内容(包括实验步骤和代码)

(一)实验内容

1、编制程序:实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发时钟。

2、连接线路,从微机接收一批数据,接收完毕,再将它们回送给微机。

(二)实验步骤

1、连线说明:

C4区:CS(8253)、A0、A1

——A3区:CS2、A0、A1

C4区:CLK0

——B2区:2M

C4区:GATE

——C1区的VCC

C4区:OUT0

——C3区:RxC TxC

C3区:CS(8251)、C/D

——A3区:CS4、A0

C3区:CLK

——B2区:4M

C3区:RXD、TXD

——D7区:RXD、TXD

2、运行程序

3、运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8251发送10个字节数据(输入数据之间用空格分隔),是否能接收到10个字节数据,接收到的数据是否与发送数据一致。

4、改变传输数据的数目,重复实验,观察结果。

(三)实验代码        

    .MODELTINY
;使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bps

CTL_ADDREQU0241H;控制字或状态字

DATA_ADDREQU0240H    

;读写数据

W_8253_T0EQU0260H    

;计数器0地址

W_8253_CEQU0263H;控制字

.STACK100
.DATA
Receive_BufferDB10 DUP(0);接受缓冲器

Send_BufferEQUReceive_Buffer;发送缓冲器

.CODE
START:MOVAX,@DATA
MOV    

DS,AX
MOVES,AX
NOP
CALL    

INIT_8253
CALLINIT_8251
START1:MOV    

CX,10
CALL    

Receive_Group
MOVCX,10
CALLSend_Group
JMP START1
INIT_8253PROCNEAR
MOVDX,W_8253_C
MOVAL,37H;定时器0,方式3

OUTDX,AL

MOVDX,W_8253_T0
MOVAL,26H;BCD码26(2000000/26)=16*4800

OUTDX,AL

MOVAL,0

OUT    

DX,AL

RET
INIT_8253ENDP
INIT_8251PROCNEAR
CALLRESET_8251
MOV    

DX,CTL_ADDR
MOVAL,7EH

;波特率系数为16,8个数据位

OUTDX,AL

;一个停止位,偶校验

CALLDLTIME;延时

MOV    

AL,15H           ;允许接收和发送发送数据,清错误标志

OUTDX,AL

CALL    

DLTIME
RET
INIT_8251ENDP
Reset_8251PROCNEAR
MOVDX,CTL_ADDR
MOVAL,0

OUTDX,AL

;向控制口写入"0"

CALLDLTIME;延时,等待写操作完成

OUTDX,AL

;向控制口写入"0"

CALLDLTIME;延时

OUTDX,AL

;向控制口写入"0"

CALL    

DLTIME;延时

MOV  AL,40H;向控制口写入复位字40H

OUTDX,AL

CALLDLTIME
RET
Reset_8251ENDP
;接受一组数据,CX--接受数目

Receive_GroupPROCNEAR
LEA    

DI,Receive_Buffer
Receive_Group1: CALL    

Receive_Byte
STOSB
LOOPReceive_Group1
RET
Receive_GroupENDP
;接受一个字节

Receive_BytePROCNEAR
MOVDX,CTL_ADDR
Receive_Byte1:INAL,DX;读入状态

TEST    

AL,2

JZReceive_Byte1;有数据吗?

MOVDX,DATA_ADDR    

;有

IN    

AL,DX
RET
Receive_ByteENDP
;发送一组数据,CX--发送数目

Send_GroupPROCNEAR
LEASI,Send_Buffer
Send_Group1:LODSB
CALLSendByte
LOOPSend_Group1
RET
Send_GroupENDP
;发送一个字节

SendbytePROCNEAR
PUSH    

AX
MOVDX,CTL_ADDR;读入状态

Sendbyte1:INAL,DX
TEST    

AL,1

JZSendbyte1;允许数据发送吗?

POPAX;发送

MOVDX,DATA_ADDR
OUTDX,AL

RET
Sendbyte    

ENDP
;延时

DLTIMEPROCNEAR
MOV    

CX,10
LOOP    

$
RET
DLTIMEENDP
ENDSTART
三、实验结果及其分析

(一)实验结果

由图1.1可知,使用串口助手每发送十个字节的十六进制数便可以接收到这十个字节的十六进制数。

图1.1

(二)实验扩展及思考

1、请读者思考,如何修改程序实现8251的自发自收功能?

答:将8251的TxD与RxD相连接,由TxD逐个发送字符,并用RxD逐个接收。

 

2、8251 与8250有何区别?

答:8250是异步收发器UART,8251是同步异步收发器USART,在PC机中带的串行口是8250

实验名称

实验二  8255控制交通灯实验

姓    名

系院专业你的专业班    级

你的专业

13-5班

学    号

  
实验日期2015.6.8指导教师    成    绩

一、实验目的和要求

1、了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。

2、熟悉8255内部结构和与8086的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。

二、实验内容(包括实验步骤和代码)

(一)实验内容

1、编写程序:使用8255的PA0..2、PA4..6控制LED指示灯,实现交通灯功能。

2、连接线路验证8255的功能,熟悉它的使用方法。

(二)实验步骤

1、连线说明:

D3区:CS、A0、A1

——A3区:CS1、A0、A1

D3区:JP23(PA口)

——F4区:JP18

2、观察实验结果,是否能看到模拟的交通灯控制过程。

(三)实验代码

        

.MODELTINY
COM_ADDEQU0273H
PA_ADDEQU0270H
PB_ADDEQU    

0271H
PC_ADDEQU0272H
.STACK    

100
.DATA
LED_Data    

DB10111110B;东西绿灯,南北红灯

DB10111111B;东西绿灯闪烁,南北红灯

DB10111101B;东西黄灯亮,南北红灯

DB11101011B;东西红灯,南北绿灯

DB11111011B;东西红灯,南北绿灯闪烁

DB11011011B;东西红灯,南北黄灯亮

.CODE
START:MOVAX,@DATA
MOVDS,AX
NOP
MOVDX,COM_ADD
MOVAL,80H;PA、PB、PC为基本输出模式

OUTDX,AL
MOVDX,PA_ADD;灯全熄灭

MOV    

AL,0FFH

OUTDX,AL

LEABX,LED_Data
START1:MOVAL,0

XLAT
OUTDX,AL

;东西绿灯,南北红灯

CALLDL5S
MOV    

CX,6
START2:MOV    AL,1

XLAT
OUT    

DX,AL

;东西绿灯闪烁,南北红灯

CALLDL500ms
MOV    

AL,0

XLAT
OUTDX,AL

CALLDL500ms
LOOPSTART2
MOVAL,2    

;东西黄灯亮,南北红灯

XLAT
OUT    

DX,AL

CALL    

DL3S
MOVAL,3    

;东西红灯,南北绿灯

XLAT
OUT    

DX,AL

CALLDL5S
MOV    

CX,6
START3:MOVAL,4    

;东西红灯,南北绿灯闪烁

XLAT
OUTDX,AL

CALLDL500ms
MOV    

AL,3

XLAT
OUTDX,AL

CALL    

DL500ms
LOOP    

START3
MOV    

AL,5    

;东西红灯,南北黄灯亮

XLAT
OUT    

DX,AL
CALL    

DL3S
JMPSTART1
DL500ms    

PROC    

NEAR
PUSHCX
MOVCX,60000
DL500ms1:LOOPDL500ms1
POPCX
RET
DL500msENDP
DL3S    

PROCNEAR
PUSHCX
MOV    

CX,6
DL3S1:CALLDL500ms
LOOPDL3S1
POPCX
RET
ENDP
DL5SPROCNEAR
PUSHCX
MOVCX,10
DL5S1:CALL    

DL500ms
LOOPDL5S1
POPCX
RET
ENDP
END    

START
三、实验结果及其分析

(一)实验结果

全速运行程序,实验结果如图所示。

(二)实验扩展及思考

1、如何对8255的PC口进行位操作?

答:8255控制字D7=1时,D6~D0为口模式控制,D7=0时控制字为PC口的位操作模式,如控制字=00H,PC0复位;控制字=01H,PC0置位;控制字=0EH,PC7复位;控制字=0FH,PC7置位;其中D6~D4没定义,D3~D1从000B~111B分别指定PC0~PC7脚,D0位为相应的电平高低,0为低电平,1为高电平。

实验名称

实验三  静态存贮器(16位)读写实验

姓    名

姓名系院专业你的专业班    级

你的专业

13-5班

学    号

  
实验日期2015.6.13指导教师    成    绩

一、实验目的和要求

1、了解静态存贮器的特性、扩展方法,掌握存贮器的读写时序。

2、掌握CPU对16位静态存贮器的访问方法

3、认真预习本节实验内容,尝试自行编写程序,填写实验报告。

二、实验内容(包括实验步骤和代码)

(一)实验内容

1、说明:实验仪选用常用的静态存贮器芯片62256(32K×8位),二片组成32K×16位,共K字节。实验仪具有16位数据总线D0..D15、20位地址线A0..A19、BLE(低电平有效,选择低8位存贮器芯片)、BHE(低电平有效,选择高8位存贮器芯片);BLE、BHE同时有效,对存贮器字方式读写,BLE或BHE有效,对存贮器字节方式读写。扩展16位存贮器时,不使用地址线A0。

2、编写程序:将B4区的静态存贮器3000H-30FFH单元中数据复制到6000H-60FFH的单元中,并校验,检测写入的数据是否正确。

3、连接线路验证功能,熟悉它的使用方法。

(二)实验步骤

1、连线说明:

B4(RAM)区:CS、BLE、BHE

——A3区:mCS0、BLE、BHE

B4(RAM)区:RD、WR

——A3区:MEMR、MEMW

B4(RAM)区:JP49(A0..A7)

——A3区:JP29(A1..A8)

B4(RAM)区:JP38(A8..A15)

——A3区:JP33(A9..A16)

B4(RAM)区:JP57(D0..D7)

——A3区:JP42(D0..D7)

B4(RAM)区:JP56(D8..D15)

——A3区:JP40(D8..D15)

2、通过星研软件的存贮器窗、寄存器窗等,观察运行结果。

(三)实验代码

;数据块移动(16位存贮器实验)

.MODELTINY
.STACK100
.CODE
START:MOVAX,8000H;存贮器扩展空间段地址

MOVDS,AX
MOV    

ES,AX
NOP
MOV    

CX,100H
MOVSI,3000H
MOVDI,6000H
CALLMove
MOVCX,100H
MOVSI,3000H
MOVDI,6000H
CLD
REPECMPSB
JNEERROR
TRUE:JMP    

$
ERROR:JMP$
MovePROCNEAR
CLD
CMPSI,DI
JZReturn
JNBMove1
ADDSI,CX
DECSI
ADDDI,CX
DECDI
STD
Move1:REPMOVSB
Return:    

RET
MoveENDP
ENDSTART
    
三、实验结果及其分析

(一)实验结果

3000H-30FFH单元中数据如图3.1所示。当执行完程序后,3000H-30FFH单元中数据被复制到6000H-60FF单元中,如图3.2所示。程序最终停留在 JMP $。

图3.1

图3.2

(二)实验扩展及思考

1、子程序Move中为什么比较SI、DI?

答:源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。

实验名称实验四  8259A(1)中断控制器实验

姓    名

姓名系院专业你的专业班    级

你的专业

13-5班

学    号

  
实验日期2015.6.13指导教师    成    绩

一、实验目的和要求

1、了解8259A的内部结构、工作原理;了解8259A与8086的接口逻辑;掌握对8259A的初始化编程方法,了解8086是如何响应中断、退出中断的。

二、实验内容(包括实验步骤和代码)

(一)实验内容

1、编制程序:拨动单脉冲开关,“”送给8259A的IR0,触发中断,8086计数中断次数,显示于F5区的数码管上

(二)实验步骤

1、连线说明:

B3区:CS、A0

——A3区:CS3、A0

B3区:INT、INTA

——A3区:INTR、INTA

B3区:IR0

——B2区:单脉冲

D3区:CS、A0、A1

——A3区:CS1、A0、A1

D3区:PC0、PC1

——F5区:KL1、KL2

D3区:JP20、B、C

——F5区:A、B、C

2、运行程序

3、上下拨动单脉冲开关,拨动二次,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。

(三)实验代码

    .MODELTINY
EXTRNInitKeyDisplay:NEAR, Display8:NEAR
IO8259_0EQU0250H
IO8259_1    

EQU0251H
.STACK100
.DATA
BUFFERDB8 DUP(?)
Counter    

DB    

?
ReDisplayFlagDB0
.CODE
START:MOVAX,@DATA
MOVDS,AX
MOVES,AX
NOP
CALLInitKeyDisplay;对键盘、数码管控制器8255初始化

CALLInit8259
CALL    

WriIntver
MOVCounter,0;中断次数

MOVReDisplayFlag,1;需要显示

STI;开中断

START1:LEASI,Buffer
CALLDisplay8
CMPReDisplayFlag,0
JZSTART1
CALLLedDisplay
MOV    

ReDisplayFlag,0
JMPSTART1
Init8259PROC    

NEAR
MOVDX,IO8259_0
MOV    

AL,13H
OUT    

DX,AL

MOVDX,IO8259_1
MOV    

AL,08H
OUTDX,AL

MOVAL,09H
OUT    

DX,AL

MOV    

AL,0FEH

OUT    

DX,AL

RET
Init8259    

ENDP
WriIntverPROC    

NEAR
PUSH    

ES
MOVAX,0
MOVES,AX
MOVDI,20H
LEAAX,INT_0
STOSW
MOVAX,CS
STOSW
POPES
RET
WriIntverENDP
LedDisplayPROCNEAR
MOVAL,Counter
MOV    

AH,AL
ANDAL,0FH

MOV    

Buffer,AL
ANDAH,0F0H

RORAH,4
MOVBuffer + 1,AH
MOVBuffer + 2,10H;高六位不需要显示

MOVBuffer + 3,10H
MOVBuffer + 4,10H
MOVBuffer + 5,10H
MOVBuffer + 6,10H
MOVBuffer + 7,10H
RET
LedDisplayENDP
INT_0:    

PUSHDX
PUSH    

AX
MOVAL,Counter
ADD    

AL,1

DAA
MOVCounter,AL
MOVReDisplayFlag,1
MOVDX,IO8259_0
MOV    

AL,20H
OUT    

DX,AL

POPAX
POP    

DX
IRET
ENDSTART
三、实验结果及其分析

(一)实验结果

每中断一次,便计数一次,中断77次后数码管显示如图4.1所示。

图4.1

实验名称

实验五  8253方波实验

姓    名

姓名系院专业你的专业班    级

你的专业

13-5班

学    号

  
实验日期2015.6.14指导教师    成    绩

一、实验目的和要求

1、了解8253的内部结构、工作原理;了解8253与8086的接口逻辑;熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。

二、实验内容(包括实验步骤和代码)

(一)实验内容

1、编写程序:使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。

2、连接线路,验证8253的功能,熟悉它的使用方法。

(二)实验步骤

1、连线说明:

C4区:CS、A0、A1

——A3区:CS2、A0、A1

C4区:CLK0

——B2区:2M

C4区:OUT0

——C4区:CLK1

C4区:OUT1

——F8区:Ctrl(蜂鸣器)

C4区:GATE

——C1区的VCC

    2、测试实验结果:蜂鸣器发出时有时无的声音;用逻辑笔测试蜂鸣器的输入端口,红绿灯交替点亮。 

(三)实验代码

.MODELTINY
COM_ADDREQU    

0263H
T0_ADDREQU0260H
T1_ADDREQU    

0261H
.STACK100
.CODE
START:MOVDX,COM_ADDR
MOVAL,35H
OUTDX,AL           

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

MOVDX,T0_ADDR
MOVAL,00H
OUTDX,AL
MOVAL,10H
OUTDX,AL

;CLK0/1000
MOVDX,COM_ADDR
MOVAL,77H
OUTDX,AL       

;计数器T1为模式3状态,输出方波,BCD码计数

MOV     DX,T1_ADDR
MOVAL,00H
OUTDX,AL

MOVAL,10H
OUTDX,AL

;CLK1/1000
JMP$;OUT1输出1S的方波

ENDSTART
三、实验结果及其分析

(一)实验结果

运行程序后,可以听到蜂鸣器发出声音。该实验用到了8253的两个计数器T0和T1,T0工作在模式2,为分频器,其输出口接到计数器T1的时钟信号输入端口,计数器T1工作在模式3,输出波形为方波,T1的输出端口接到蜂鸣器,这样就能听到有规律的响了。

(二)实验扩展及思考

1、8253还有其它五种工作方式,其它工作模式下,硬件如何设计?程序如何编写?

答:8253有六种工作模式(0~5),每种工作模式决定以下内容: 

(1)计数初值何时起作用:计数初值写入计数初值寄存器(CR)后,要经过一个CLK输入后,计数执行部件(CE)才开始计数。

(2)门控信号的影响:门控信号是计数允许信号。高电平允许,即GATE=1,允许对CLK计数。上升沿允许这种情况需使用计数器内部的一个边沿触发器。只要当初边沿触发器置1后,计数器才对CLK计数。GATE上升沿使边沿触发器置1,GATE下降沿使边沿触发器自动清0.模式0,2,3,4,高电平允许,模式1、5,上升沿允许。 

(3)OUT信号的状态:写入控制字后,OUT的状态。计数过程中,OUT的状态。计数终了,OUT的状态。 

(4)技术操作是否可以重复,或称计数初值是否可以自动装入:a.不可重复b自动重复c条件重复 

(5)计数器的工作模式:计数器在CLK的下降沿使计数值减1,计数值减至0时,“计数到”。写入初值0时,代表最大初值65536。

实验名称

实验六 键盘显示实验

姓    名

姓名系院专业你的专业班    级

你的专业

13-5班

学    号

  
实验日期2015.6.28指导教师    成    绩

一、实验目的和要求

1、进一步掌握8255的设计、编程方法。

2、掌握矩阵键盘的扫描方法

3、掌握动态扫描数码块的方法

二、实验内容(包括实验步骤和代码)

(一)实验内容

1、编写程序:扫描键盘,如有按键,键号显示于数码管。

2、连接线路,验证8255的功能,熟悉它的使用方法。

(二)实验步骤

1、连线说明:

D3区:CS、A0、A1

——A3区:CS1、A0、A1

D3区:PC0、PC1

——F5区:KL1、KL2

D3区:JP20(PB口)、JP16(B)、JP17(C)

——F5区:A、B、C

    2、运行程序,观察实验结果(任意按下F5区4X4键盘几个键,它上面的8个LED显示器会将按键的编码从左至右依次显示出来),可依此验证对程序的正确性。

(三)实验代码

    .MODELTINY
COM_8255EQU0273H;8255控制口

PA_8255EQU0270H
PB_8255EQU0271H
PC_8255EQU0272H
.STACK100
.DATA
bufferDB8 DUP(?);8个字节显示缓冲区

SEG_TAB    

DB0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H
DB080H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH,0FFH
.CODE
START:MOVAX,@DATA
MOVDS,AX
MOVES,AX
NOP
CLD;0->DF, 地址自动递增

MOVDX,COM_8255
MOVAL,H
OUTDX,AL

;PA、PB输出,PC输入

LEADI,buffer
MOV    

AL,10H
MOVCX,08H
REPSTOSB
CALLDIR
MAIN3:LEADI,buffer
MAIN2:CALLkeyi
STOSB
CALLDIR
CMPDI,offset buffer+8
JNZMAIN2
JMPMAIN3
DIRPROCNEAR
PUSHAX
PUSHBX
PUSHDX
LEASI,buffer;置显示缓冲器初值

MOVAH,0FEH
LEABX,SEG_TAB
LD0:MOVDX,PA_8255
LODSB
XLAT;取显示数据

OUTDX,AL

;段数据->8255 PA口

INCDX;扫描模式->8255 PB口

MOVAL,AH

OUTDX,AL

CALLDL1;延迟1ms

MOVDX,PB_8255
MOVAL,0FFH

OUTDX,AL

TESTAH,80H
JZLD1
ROLAH,01H
JMPLD0
LD1:POPDX
POPBX
POPAX
RET
DIRENDP
DL1PROCNEAR;延迟子程序

PUSHCX
MOVCX,500
LOOP$
POPCX
RET
DL1ENDP
KEYIPROCNEAR
PUSHBX
PUSHDX
LK:CALLAllKey    

;调用判有无闭合键子程序

JNZLK1
CALLDIR
CALLDIR;调用显示子程序,延迟6ms

JMPLK
LK1:CALLDIR
CALLDIR
CALLAllKey    

;调用判有无闭合键子程序

JNZLK2
CALLDIR
JMPLK
LK2:MOVBL,0FEH    

;R2
MOVBH,0;R4
LK4:MOVDX,PB_8255
MOVAL,BL
OUTDX,AL

INCDX
INAL,DX
TESTAL,01H
JNZLONE
XORAL,AL

;0行有键闭合

JMPLKP
LONE:TESTAL,02H
JNZNEXT
MOVAL,08H;1行有键闭合

LKP:ADD    

BH,AL
LK3:CALLDIR;判断释放否

CALLAllKey
JNZLK3
MOVAL,BH;键号->AL

POPDX
POPBX
RET
NEXT:INCBH;列计数器加1

TESTBL,80H
JZKND;判是否已扫到最后一列

ROLBL,01H
JMPLK4
KND:JMPLK
KEYIENDP
AllKeyPROCNEAR
MOVDX,PB_8255
XORAL,AL

OUTDX,AL

;全"0"->扫描口

INCDX
INAL,DX;读键状态

NOTAL
ANDAL,03H;取低二位

RET
AllKeyENDP
ENDSTART
三、实验结果及其分析

(一)实验结果

运行程序,通过键盘输入76543210或13217277使之显示在数码管上,如图6.1、图6.2所示。8255工作在方式0,C口为输入口,用来采集信号。PB口为输出口,向键盘送入扫描信号。实验主程序中键盘扫描程序在执行时首先向PB口输入全低电平,然后通过C口采集KL0和KL1来粗判有无按键按下,若有按键按下,则进入细判程序来判断哪个按键按下,然后将键值送入缓冲器中并在LED灯上显示出相应的键值。键盘的细判程序中是向PB口中分行来输入低电平,然后通过分别测试KL0和KL1来具体判断是那个键按下。

图6.1

图6.2

(二)实验扩展及思考

1、显示程序中延时函数起什么作用

答:数码管的显示是不断刷新的,延时函数能使数码管显示的时间长一点,这样方能被人眼识别出来。
实验名称实验七 8259A(2)中断(优先级)实验

姓    名

姓名系院专业你的专业班    级

你的专业

13-5班

学    号

  
实验日期2015.6.28指导教师    成    绩

一、实验目的和要求

1、了解8259A的内部结构、工作原理;了解8259A与8086的接口逻辑;掌握对8259A的初始化编程方法,了解8086是如何响应中断、退出中断的;体会8259A的中断优先级处理方法。

二、实验内容(包括实验步骤和代码)

(一)实验内容

1、编制程序:拨动单脉冲开关,“”送给8259A的IR0,“” 送给8259A的IR7,F5区的最左边数码管对应IR7中断:没有触发中断或中断处理完毕,显示“0”,正在响应中断,显示“1”;F5区的最右边数码管对应IR0中断:没有触发中断或中断处理完毕,显示“0”,正在响应中断,显示“1”,如果IR0中断IR7,显示“2”

(二)实验步骤

1、连线说明:

B3区:CS、A0

——A3区:CS3、A0

B3区:INT、INTA

——A3区:INTR、INTA

B3区:IR0

——B2区:单脉冲

B3区:IR7

——B2区:单脉冲

D3区:CS、A0、A1

——A3区:CS1、A0、A1

D3区:PC0、PC1

——F5区:KL1、KL2

D3区:JP20、B、C

——F5区:A、B、C

2、运行程序

3、拨动单脉冲开关,“”送给8259A的IR0,“” 送给8259A的IR7,F5区的最左边数码管对应IR7中断:没有触发中断或中断处理完毕,显示“0”,正在响应中断,显示“1”;F5区的最右边数码管对应IR0中断:没有触发中断或中断处理完毕,显示“0”,正在响应中断,显示“1”,如果IR0中断IR7,显示“2”。

(三)实验代码

    .MODELTINY
EXTRNInitKeyDisplay:NEAR, Display8:NEAR
IO8259_0EQU0250H
IO8259_1    

EQU0251H
.STACK100
.DATA
BUFFERDB8 DUP(?)
IRQ0_INTDB0
IRQ7_INTDB0
.CODE
START:MOVAX,@DATA
MOVDS,AX
MOVES,AX
NOP
CALLInitKeyDisplay;对键盘、数码管扫描控制器8255初始化

MOVIRQ0_INT,00H
MOVIRQ7_INT,00H
CALLInit8259
CALL    

WriIntver
CALLLedDisplay
STI;开中断

START1:LEASI,Buffer
CALLDisplay8
JMPSTART1
LedDisplayPROCNEAR
PUSHAX
MOVAL,IRQ0_INT
ORAL,IRQ0_INT
JZLedDisplay1
ADDAL,IRQ7_INT;如果CPU正在处理IR7,显示2

LedDisplay1:MOVBuffer,    AL

;显示1或2,IR0在中断

MOVBuffer + 1,10H
MOVBuffer + 2,10H
MOVBuffer + 3,10H
MOVBuffer + 4,10H
MOVBuffer + 5,10H
MOVBuffer + 6,10H
MOVAL,IRQ7_INT
MOVBuffer + 7,AL

;显示1,IR7在中断

POPAX
RET
LedDisplayENDP
Init8259PROC    

NEAR
MOVDX,IO8259_0
MOV    

AL,13H
OUT    

DX,AL

MOVDX,IO8259_1
MOV    

AL,08H
OUTDX,AL

MOVAL,09H
OUT    

DX,AL

MOV    

AL,7EH

OUT    

DX,AL

RET
Init8259    

ENDP
DELAYPROCNEAR
PUSHSI
PUSHCX
PUSHAX
MOVCX,100
A3:    

LEASI,BUFFER
CALLDISPLAY8
LOOPA3
POPAX
POPCX
POPSI
RET
DELAYENDP
IRQ0:    

PUSHDX
PUSH    

AX
INC    

IRQ0_INT;显示1,IR0在中断

CALLLedDisplay
STI
CALLDELAY
DECIRQ0_INT;显示0,IR0中断处理完毕

CALLLedDisplay
MOVDX,IO8259_0
MOV    

AL,20H
OUT    

DX,AL

POPAX
POP    

DX
IRET
IRQ7:    

PUSHDX
PUSH    

AX
INC    

IRQ7_INT;显示1,IR7在中断

CALLLedDisplay
STI
CALLDELAY
DECIRQ7_INT;显示0,IR7中断处理完毕

CALLLedDisplay
MOVDX,IO8259_0
MOV    

AL,20H
OUT    

DX,AL

POPAX
POP    

DX
IRET
WriIntverPROC    

NEAR
PUSH    

ES
MOVAX,0
MOVES,AX
MOVDI,20H
LEAAX,IRQ0
STOSW
MOVAX,CS
STOSW
MOVDI,20H+7*4
LEAAX,IRQ7
STOSW
MOVAX,CS
STOSW
POPES
RET
WriIntverENDP
ENDSTART
三、实验结果及其分析

(一)实验结果

F5区的最左边数码管对应IR7中断:没有触发中断或中断处理完毕,显示“0”(如图7.1),正在响应中断,显示“1”(如图7.2);F5区的最右边数码管对应IR0中断:没有触发中断或中断处理完毕,显示“0”(如图7.1),正在响应中断,显示“1”(如图7.3),如果IR0中断IR7,显示“2”(如图7.4)。

图7.1

图7.2

图7.3

图7.4

文档

合工大微机原理实验报告全解

《微机原理与接口技术》课程实验报告实验名称实验一8251可编程通信实验(与微机)姓名系院专业你的专业班级你的专业13-5班学号实验日期2015.5.20指导教师成绩一、实验目的和要求1、了解8251的内部结构、工作原理;了解8251与8086的接口逻辑;掌握对8251的初始化编程方法,学会使用8251实现设备之间的串行通信。二、实验内容(包括实验步骤和代码)(一)实验内容1、编制程序:实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发时钟。2、连接线路,从微机接收一批数据
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top