文章导航 
            
            
            
          
          大三上微机原理课程实验报告
 
1.8259中断控制实验 
1.1实验目的 
1.掌握8259中断控制器的工作原理;
2.学习8259的应用编程方法;
3.掌握8259级联方式的使用方法。
1.2实验设备 
PC机一台,TD-PITE实验装置- -套。
1.3实验内容及步骤 
1.中断控制器8259简介  
在Intel 386EX芯片中集成有中断控制单元(ICU) ,该单元包含有两个级联中断控制器,一个
为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。从片的INT连接到主片的IR2信号上构成两片8259的级联。
在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,
主片8259的IR4供系统串口使用。8259的内部连接及外部管脚引出如图2-3-1所示。
 
表2-3-1列出了中断控制单元的寄存器相关信息。
 
 
 
初始化命令字1寄存器(ICW1) 说明见图2-3-2所示。
 
 
初始化命令字2寄存器(ICW2)说明见图2-3-3所示。
 
初始化命令字3寄存器(ICW3) 说明,主片见图2-3-4,从片见图2-3-5。
 
初始化命令字4寄存器(ICW4) 说明见图2-3-6。
 
操作命令字1寄存器(OCW1) 说明见图2-3-7。
 
 
操作命令字2寄存器(OCW2) 说明如图2-3-8所示。
 
操作命令字3寄存器(OCW3) 说明如图2-3-9所示。
 
查询状态字(POLL) 说明如图2-3-10 所示。
 
在对8259进行编程时,首先必须进行初始化。一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。8259有--个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。在初始化主片8259时,写入初始化命令字的顺序是: ICW1、 ICW2、ICW3、 然后是ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。
系统启动时,主片8259已被初始化,且4号中断源(IR4) 提供给与PC联机的串口通信使用,其它中断源被屏蔽。
2.8259单中断实验  
实验接线图如图2-3-1 1所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏.上输出一个字符“7”
 
实验步骤 
(1)按图2-3-11 连接实验线路;
(2)编写实验程序,经编译、链接无误后装入系统;
(3)运行程序,重复按单次脉冲开关KK1 +,显示屏会显示字符“7” 以说明响应了中断。
源程序: 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 ;========================================================= ; 文件名: INT1.ASM ; 功能描述: 8259中断实验,中断源为主片8259的IRQ7 ;           每产生一次中断输出显示一个字符6 ;========================================================= SSTACK	SEGMENT STACK 		DW 32 DUP(?) SSTACK	ENDS CODE   	SEGMENT 	   	ASSUME CS:CODE START: 	PUSH DS 		MOV AX, 0000H 		MOV DS, AX 		MOV AX, OFFSET MIR7		;取中断入口地址 		MOV SI, 003CH			;中断矢量地址 		MOV [SI], AX			;填IRQ7的偏移矢量 		MOV AX, CS				;段地址 		MOV SI, 003EH 		MOV [SI], AX			;填IRQ7的段地址矢量 		CLI 		POP DS 		;初始化主片8259 		MOV AL, 11H 		OUT 20H, AL				;ICW1 		MOV AL, 08H 		OUT 21H, AL				;ICW2 		MOV AL, 04H 		OUT 21H, AL				;ICW3 		MOV AL, 01H 		OUT 21H, AL				;ICW4 		;初始化从片8259   	    ;MOV AL,11H         ;OUT 0A0H,AL         ;MOV AL,30H         ;OUT 0A1H,AL         ;MOV AL,02H         ;OUT 0A1H,AL         ;MOV AL,01H         ;OUT 0A1H,AL         ;MOV AL,0FFH         ;OUT 0A1H,AL 						 		MOV AL, 6FH				;OCW1 		OUT 21H, AL 		STI AA1:	NOP 		JMP AA1 		 MIR7:	STI 		CALL DELAY 		MOV AX, 0136H 		INT 10H					;显示字符 		MOV AX, 0120H 		INT 10H 		MOV AL, 20H 		OUT 20H, AL				;中断结束命令 		IRET 		 DELAY:	PUSH CX 		MOV CX, 0F00H AA0:	PUSH AX 		POP  AX 		LOOP AA0 		POP CX 		RET 		 CODE	ENDS 		END  START 
 
结果拍照 
 
按动一次按钮显示一个6
PS:将“7”改为了“6”。
3.8259级联实验  
实验接线图如图2-3-12所示,KK1 +连接到主片8259的IR7. 上, KK2+连接到从片8259的IR1上,当按一-次KK1 +时,显示屏上显示字符“M7”,按- -次KK2+时,显示字符“S1”。编写程序。
 
实验步骤 
(1)按图2-3-12 连接实验线路;
(2)输入程序,编译、链接无误后装入系统;
(3)运行程序,按动KK1+或KK2+,观察实验结果,验证实验程序的正确性;
(4)若同时按下FKK1 +和KK2+,观察实验结果,解释实验现象。.
源代码 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 ;========================================================= ; 文件名: INTcas1.ASM ; 功能描述: 8259级联中断实验,中断源为主片8259的IR7, ;           从片8259的IR1。从片8259通过主片8259的IR2 ;           进行级联。 ;           主片每产生一次中断输出显示一个字符M7,从片 ;           每产生一次中断输出显示一个字符S1。 ;========================================================= SSTACK	SEGMENT STACK 		DW 32 DUP(?) SSTACK	ENDS CODE   	SEGMENT 	   	ASSUME CS:CODE START: 	PUSH DS 		MOV AX, 0000H 		MOV DS, AX 		MOV AX, OFFSET MIR7		;取中断入口地址 		MOV SI, 003CH			;中断矢量地址 		MOV [SI], AX			;填IRQ7的偏移矢量 		MOV AX, CS				;段地址 		MOV SI, 003EH 		MOV [SI], AX			;填IRQ7的段地址矢量 		 		MOV AX, OFFSET SIR1 		MOV SI, 00C4H 		MOV [SI], AX 		MOV AX, CS 		MOV SI, 00C6H 		MOV [SI], AX 		 		CLI 		POP DS 		;初始化主片8259 		MOV AL, 11H 		OUT 20H, AL				;ICW1 		MOV AL, 08H 		OUT 21H, AL				;ICW2 		MOV AL, 04H 		OUT 21H, AL				;ICW3 		MOV AL, 01H 		OUT 21H, AL				;ICW4 		;初始化从片8259   	    MOV AL, 11H         OUT 0A0H, AL			;ICW1         MOV AL, 30H         OUT 0A1H, AL			;ICW2         MOV AL, 02H				         OUT 0A1H, AL			;ICW3         MOV AL, 01H         OUT 0A1H, AL			;ICW4         MOV AL, 0FDH         OUT 0A1H,AL				;OCW1 = 1111 1101 		 		MOV AL, 6BH 		OUT 21H, AL				;主8259 OCW1 		STI AA1:	NOP 		JMP AA1 		 MIR7:	CALL DELAY 		MOV AX, 014DH 		INT 10H					;M 		MOV AX, 0137H 		INT 10H					;显示字符7 		MOV AX, 0120H 		INT 10H 		MOV AL, 20H 		OUT 20H, AL				;中断结束命令 		IRET SIR1:	CALL DELAY 		MOV AX, 0153H 		INT 10H					;S 		MOV AX, 0131H 		INT 10H					;显示字符1 		MOV AX, 0120H 		INT 10H 		MOV AL, 20H 		OUT 0A0H, AL 		OUT 20H, AL 		IRET 		 DELAY:	PUSH CX 		MOV CX, 0F00H AA0:	PUSH AX 		POP  AX 		LOOP AA0 		POP CX 		RET 		 CODE	ENDS 		END  START 
 
结果拍照 
 
(1) 重复按单次脉冲开关KK1+,显示屏会显示字符“M7”
(2) 当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”
(3) 同时按下KK1+和KK2+,程序仅响应主片的中断。这是由于程序中写的控制字ICW4=0A1H,对应的嵌套模式处为0,选择全嵌套模式。全嵌套模式下当接受到同级的中断请求时,不会响应从片的中断请求。
2.8254定时/计数器应用实验 
2.1实验目的 
1.掌握8254的工作方式及应用编程;
2.掌握8254典型应用电路的接法。
2.2实验设备 
PC机一台,TD-PITE 实验装置一套,示波器一台。
2.3实验内容 
1.计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动'KK 1+’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M'。
2.定时应用实验。编写程序,应用8254的定时功能,产生一个1ms 的方波。
2.4实验原理 
8254是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253具有更优良的性能。8254具有以下基本功能:
(1)有3个独立的16位计数器;
(2)每个计数器可按二进制或十进制(BCD) 计数;
(3)每个计数器可编程工作于6种不同工作方式; .
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);
8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容; 
 
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:n=fclki/ fouti.其中fclki是输入时钟脉冲的频率,fouti是输出波形的频率。图2-5-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下述:
(1)方式0:计数到0结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率发生器方式。
(4)方式3:方波发生器。
(5)方式4:软件触发选通方式。
(6)方式5:硬件触发选通方式。
 
8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用-一个地址,由标识位来区分。控制字格式如表2-5-1所示。
 
2.5实验步骤 
1.计数应用实验 
编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1 +作为CLK0时钟,OUTO连接MIR7,每当KK1 +按动5次后产生中断请求,在屏幕上显示字符“M”。
实验步骤: 
(1)实验接线如图2-5-2所示;
(2)编写实验程序,经编译、链接无误后装入系统;
(3)运行程序,按动KK1+产生单次脉冲,观察实验现象;
(4)改变计数值,验证8254的计数功能。
 
 
源代码 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ;========================================================= ; 文件名: A82541.ASM ; 功能描述: 通过对计数器0进行计数,计数初值为4, ;           当计数满后,产生正跳变触发中断,中断 ;           程序显示M(每按5次输出一个M) ;========================================================= A8254    EQU  06C0H B8254    EQU  06C2H C8254    EQU  06C4H CON8254  EQU  06C6H SSTACK	SEGMENT STACK 		DW 32 DUP(?) SSTACK	ENDS CODE	SEGMENT 		ASSUME CS:CODE, SS:SSTACK START:	PUSH DS 		MOV AX, 0000H 		MOV DS, AX 		MOV AX, OFFSET IRQ7		;取中断入口地址 		MOV SI, 003CH			;中断矢量地址 		MOV [SI], AX			;填IRQ7的偏移矢量 		MOV AX, CS				;段地址 		MOV SI, 003EH 		MOV [SI], AX			;填IRQ7的段地址矢量 		CLI 		POP DS 		;初始化主片8259 		MOV AL, 11H 		OUT 20H, AL				;ICW1 		MOV AL, 08H 		OUT 21H, AL				;ICW2 		MOV AL, 04H 		OUT 21H, AL				;ICW3 		MOV AL, 01H 		OUT 21H, AL				;ICW4 		 		MOV AL, 6FH				;OCW1 		OUT 21H, AL 		 		;8254 		MOV DX, CON8254 		MOV AL, 10H				;计数器0,方式0 		OUT DX, AL 		 		MOV DX, A8254 		MOV AL, 04H 		OUT DX, AL 		 		STI AA1:	NOP 		JMP AA1 		 IRQ7:	MOV DX, A8254 		MOV AL, 04H 		OUT DX, AL 		MOV AX, 014DH 		INT 10H					;显示字符M 		MOV AX, 0120H 		INT 10H		 		MOV AL, 20H 		OUT 20H, AL				;中断结束命令 		IRET 		 CODE	ENDS 		END  START 
 
结果拍照 
 
按动一次按钮显示一个M。
2.定时应用实验 
编写程序,将8254的计数器0设置为方式3,用信号源1MHz作为CLK0时钟, OUT0为波形输出1ms方波。
实验步骤: 
(1)接线图如图2-5-3所示;
(2)根据实验内容,编写实验程序,经编译、链接无误后装入系统;
(3)运行实验程序,用示波器测试OUTO输出,验证程序功能。
 
按照图接线,将实验程序编译、链接、装入系统,运行程序,OUT0输出方波。根据8254工作原理绘制波形图如图:
8254方波
3.8255并行接口实验 
3.1实验目的 
1.学习并掌握8255的工作方式及其应用;
2.掌握8255典型应用电路的接法。
3.2实验设备 
PC机一台,TD-PITE实验装置一套。
3.3实验内容 
1.基本输入输出实验。编写程序,使8255 的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。
2.流水灯显示实验。编写程序,使8255的A口和B口均为输出,数据灯D7D0由左向右,每次仅亮-一个灯,循环显示,D15 D8与D7~D0正相反,由右向左,每次仅点亮-一个灯,循环显示。
3.4实验原理 
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255 可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图2-6-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-6-2所示。.
 
3.5实验步骤 
1.基本输入输出实验 
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至- -组数据灯上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述:
(1)实验接线图如图2-6-3所示,按图连接实验线路图;
(2)编写实验程序,经编译、连接无误后装入系统;
(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
 
源程序 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ;========================================================= ; 文件名: A82551.ASM ; 功能描述: A口为输入,B口为输出,将读入的数据输出显示 ;           IOY1 ;========================================================= SSTACK	SEGMENT STACK 		DW 32 DUP(?) SSTACK	ENDS CODE	SEGMENT 		ASSUME CS:CODE, SS:SSTACK START:	MOV DX, 0646H 		MOV AL, 90H 		OUT DX, AL 		 AA1:	MOV DX, 0640H 		IN  AL, DX 		 		CALL DELAY 		MOV DX, 0642H 		OUT DX, AL 		JMP AA1 		 DELAY:	PUSH CX 		MOV CX, 0F00H AA2:	PUSH AX 		POP  AX 		LOOP AA2 		POP  CX 		RET 		 CODE	ENDS 		END  START 
 
结果拍照 
 
流水灯按照开关的开闭被选择点亮。
2.流水灯显示实验 
使8255的A口和B口均为输出,数据灯D7D0由左向右,每次仅亮一个灯,循环显示,D15 D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图2-6-5所示。实验步骤如下所述:
(1)按图2-6-5连接实验线路图;
(2)编写实验程序,经编译、链接无误后装入系统;
(3)运行程序,观察LED灯的显示,验证程序功能;
(4)自己改变流水灯的方式,编写程序。.
 
源程序: 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ;========================================================= ; 文件名: A82552.ASM ; 功能描述: A口为输出,B口为输出,流水灯显示 ;========================================================= SSTACK	SEGMENT STACK 		DW 32 DUP(?) SSTACK	ENDS CODE	SEGMENT 		ASSUME CS:CODE START:	MOV DX, 0646H 		MOV AL, 80H 		OUT DX, AL 		MOV BX, 8001H AA1:	MOV DX, 0640H 		MOV AL, BH 		OUT DX, AL 		ROR BH, 1 		 		MOV DX, 0642H 		MOV AL, BL 		OUT DX, AL 		ROL BL, 1  		 		CALL DELAY 		CALL DELAY 		JMP AA1 		 DELAY:	PUSH CX 		MOV CX, 0F000H AA2:	PUSH AX 		POP  AX 		LOOP AA2 		POP  CX 		RET 		 CODE	ENDS 		END  START 
 
结果拍照 
 
 
 
流水灯依次被点亮。