实验步骤:
1. 编写实验程序,连续向发送寄存器写A到Z,并完成接受和显示。 2. 设计实验线路图,并将PCI总线扩展卡上的ADD-ON总线与仿真ISA总线进行连接,完成线路连接。
3. 运行程序,观察屏幕上的显示数据是否正确。
实验过程与分析
开始 设置通信波特率 初始化LCR,设置通信数据格式 在存在变量AA中数据加1 在TBR中写入AA 有按键按下 是 否 从RBR中读数 读取数据显示在屏幕上 否 是否到5AH 是 返回DOS 1) 寄存器选择的实现
3
16550的负责寄存器选择的地址线是三位A2A1A0,最大只能选择2=8个,但是16550的内部寄存器有10个。为解决这一矛盾,可在访问除数寄存器时,令DLAB位为“1”;访问接受数据寄存器、发送保持寄存器和中断允许寄存器时,令DLAB位置“0”。
2) 波特率除数寄存器的值设置
因为16550芯片输入的基准时钟频率为1.8432MHZ,查表知若波特率为9600b/s,则除数寄存器值为000CH,DLH中应填00H,DLL中应填0CH。.
源代码
MY16550_0 EQU 0C480H MY16550_1 EQU 0C481H MY16550_3 EQU 0C483H MY16550_4 EQU 0C484H MY16550_5 EQU 0C485H
DATA SEGMENT AA DB 40H DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA MOV DS,AX
MOV DX,MY16550_3 MOV AL,80H OUT DX,AL CALL DALLY
MOV DX,MY16550_0 MOV AL,0CH OUT DX,AL CALL DALLY
MOV DX,MY16550_1 MOV AL,00H OUT DX,AL CALL DALLY
MOV DX,MY16550_3 MOV AL,1BH OUT DX,AL
CALL DALLY
MOV DX,MY16550_4 MOV AL,03H OUT DX,AL CALL DALLY
MOV DX,MY16550_1 MOV AL,00H OUT DX,AL CALL DALLY A1: INC AA
MOV DX,MY16550_0 MOV AL,AA
OUT DX,AL CALL DALLY
A2: CALL BREAK
MOV DX,MY16550_5 IN AL,DX AND AL,01H JZ A2
MOV DX,MY16550_0 IN AL,DX MOV AH,0EH INT 10H
CALL DALLY CMP AL,5AH JNZ A1
MOV AX,4C00H INT 21H
DALLY: PUSH CX PUSH AX
MOV CX,0100H D1: MOV AX,2000H D2: DEC AX JNZ D2 LOOP D1 POP AX POP CX
RET
BREAK PROC NEAR MOV AH,06H MOV DL,0FFH INT 21H JE RETURN MOV AX,4C00H INT 21H RETURN:RET BREAK ENDP
CODE ENDS
END START 实验结果
屏幕上显示A~Z 26个字母
实验结果总结
通过这次实验我了解了16550串行接口的工作方式及应用,对通讯的相关知识有了一定的了解。此外对16550芯片中的各个接口的作用以及其中各个寄存器的作用有了比较深入的理解。对书本教材关于寄存器控制字的设置原理有了进一步的了解,不再是停留在死记硬背的层面,对控制字每一位的控制对象和设置组合方式有了具体的概念。
实验五:PCI设备中断应用实验(2012年6月3日) 实验目的及实验内容 实验目的:
1.掌握使用PCIBIOS访问中断的方法
2.掌握使用PCI中断的方法
3.掌握操作PCI设备I/O端口的方法 实验内容:
调用PCI中断应用实验的源程序,根据当前PCI设备占用微机系统的资源情况,修改源程序中的相关内容,并按照实验要求对程序进行分析与说明,画出程序流程图,最后运行该程序完成按键中断的响应。即每产生一次按键中断,向显示器输出字符“7”。 实验原理:
1.PC机系统中8259A的应用
在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
现在PC系统中包含了两片8259A中断控制器,经级联可以管理16级硬件中断,但其中部分中断源已经被系统硬件占用。两片8259A的端口地址为:主片在020H-03FH,实际使用020H和021H两个端口;从片在0A0H-0BFH范围,实际使用0A0H和0A1H两个端口。 2.中断向量表
80x86微机系统中能处理256个中断向量,其类型号为00H~0FFH,他们的中断处理方式及过程应该根据CPU的工作模式加以区分。在保护模式下,系统中有一张中断描述符表,
记录所有中断/异常处理程序的入口。在实模式下微机系统采用向量中断,无论是内部还是外部中断均对应一个相应的中断向量码。每个中断向量占用4字节,分别存放中断服务程序的IP和CS。256个中断向量被放置于内存从0开始的1KB区域中,该区域称为中断向量表。对于微机系统没有使用的中断向量,可以作为中断被用户使用。使用前,只需要将软中断处理程序的程序入口填入对应中断向量即可。而微机系统已经占用的中断向量可以根据需要对其进行修改。填写或修改中断向量的方法为: MOV [中断向量*4],IP地址 MOV [中断向量*4+2],CS地址
实验环境及实验步骤 实验环境:
PC机一台,TD-PIT实验装置一套 实验步骤:
1.利用PCI BIOS获取PCI设备 配置资源,具体操作是在TDDebug环境中,运行PCI BIOS.EXE文件(该文件保存在实验系统的G:\\TDPIT目录中)
2.根据实验内容的描述调出实验参考源程序PCI_INT.ASM(该文件保存在实验系统的G:\\TDPIT目录中)
3.根据PCI设备实际占用微机系统的资源情况,修改源程序中的相关内容,确认无误后再进行编译、连接
4.设计实验线路图,并将PCI总线扩展板上的ADD-ON总线与仿真ISA总线进行连接,完成线路连接
5.用实验排线连接仿真ISA总线中IRQ信号和KK开关单元中的KKl-(下降沿)端 6.打开实验箱电源,运行实验程序,按动KKl-键,观察微机显示屏幕是否输出字符“7”
实验过程与分析 实验分析和说明
本实验要求使用实验装置提供的中断请求信号IRQ(下降沿有效),利用KKl-的负脉冲作为中断源,在中断处理中完成字符“7”的显示。使用试验装置提供的IRQ信号,除了要操作PC的8259外,还需要操作实验用PCI总线扩展板卡上的“INTCSR’”和“IMB4”寄存器。通过操作上述寄存器,才可以实现实验用中断的初始化、清除等。 修改之后的源代码:
;引入仿真卡中寄存器,始地址重置 INTCSR_BYTE0 EQU 0CC38H INTCSR_BYTE1 EQU 0CC39H INTCSR_BYTE2 EQU 0CC3AH INTCSR_BYTE3 EQU 0CC3BH IMB4_BYTE3 EQU 0CC1FH
DATA SEGMENT CSBAK DW ? IPBAK DW ? MKBAK DB ? DATA ENDS CODE SEGMENT