版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微 机 接 口 实 验 报 告所在系: 信息工程系班 级: 09结计算机科学与技术学 号: PB实验一 简单I/O口扩展实验一、 实验目的1、 熟悉74LS273,74LS244的应用接口方法。2、 掌握用锁存器、三态门扩展简单并行输入、输出口的方法。二、 实验内容1、 由键盘输入字符,然后通过74LS273将其ASCII码锁存输出,并通过LED显示出来。2、 逻辑电平开关的状态输入74LS244,经过PCI总线读入并以16进制显示在屏幕上。3、 逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利用LED显示电路作为输出的状态显示。三、 实验原理介绍本实验用到两部分电路:
2、开关量输入输出电路,简单I/O口扩展电路。四、 实验步骤1、 实验接线:(表示相互连接)CS0CS244,CS1CS273,平推开关的输出K1K8IN0IN7(对应连接)0007发光二极管的输入LED1LED8。2、 编辑程序,用debug调试程序,单步运行。3、 调试通过后,全速运行程序,观看实验结果。4、 编写实验报告。五、 实验提示 74LS244或74LS273的片选信号可以改变,例如连接CS2,此时应同时修改程序中相应的地址。六、 实验结果程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如:K2置于L位置,则对应的LED2应该点亮。七、 程序框图(如图1)实验程序:
3、实验 1; * cs0cs273,D0D7依次接LED1LED8*; IOPORT EQU 0A800H LS273 EQU IOPORT+0A0H CODE SEGMENT ASSUME CS:CODE START: MOV AH,2 ;回车符 MOV DL,0DH INT 21H MOV AH,1 ;等待键盘输入 INT 21H CMP AL,27 ;判断是否为ESC键 JE EXIT ;若是则退出 MOV DX,LS273 ;若不是,从2A8H输出其ASCII码 OUT DX,AL JMP START ;转start EXIT: MOV AH,4CH ;返回INT 21H CODE EN
4、DS END START实验结果:从键盘输入数字09可以通过LED显示相应的二进制代码(亮灯为0,熄灯为1)例如从键盘输入数字3,灯亮情况led4led1对应0011;即led4led1从到左表示0011,led4、led3低位,led2、led1高位。实验 2 ;*cs0cs244,IN0IN7依次接k1k8 *; IOPORT EQU 0A800H LS244 EQU IOPORT+0A0H CODE SEGMENT ASSUME CS:CODE START: MOV DX,LS244 ;从2A0输入一数据 IN AL,DX PUSH AX MOV CL,4H ;转换为16进制显示 SHR
5、 AL,CL CMP AL,09 JA HEX1 ADD AL,30H JMP NN HEX1: ADD AL,37H NN: MOV DL,AL MOV AH,02 INT 21H POP AX AND AL,0FH CMP AL,09 JA HEX2 ADD AL,30H JMP MM HEX2: ADD AL,37H MM: MOV DL,AL MOV AH,02H INT 21H MOV DL,0DH ;显示回车符 INT 21H MOV DL,0AH ;显示换行符 INT 21H MOV AH,06 ;是否有键按下 MOV DL,0FFH INT 21H JNZ EXIT JE ST
6、ART ;若无,则转start EXIT: MOV AH,4CH ;返回 INT 21H CODE ENDS END START实验结果:通过调动平推开关k0k7,在电脑屏幕上以16进制显示 ,led1led4表示低四位,led5led8表示高四位。与e273.asm相似,例如:1100 0000(11表示开关下推,0表示上推),屏幕上显示3;实验 3;* cs0cs273,D0D7依次接LED1LED8 cs1cs244,IN0IN7依次接k1k8 *;IO_BASEADDR EQU 0A400H ;IO基地址,用于访问PCI9052寄存器 IOPORT EQU 0A800H LS273 E
7、QU IOPORT+0A0H CS244 EQU IOPORT+0B0H CODE SEGMENT ASSUME CS:CODE START: MOV DX,CS244 IN AX,DX ;从244读入逻辑开关状态 MOV DX,LS273 OUT DX,AX ;从273输出读到的数据 MOV DL,0FFH ;判断是否有按键 MOV AH,06H INT 21H JZ START ;若无,则继续读入数据并同时输出 EXIT: MOV AH,4CH ;返回 INT 21H CODE ENDS END START实验结果:从74ls244读入数据(按k0-k7),通过74ls373输出(led1
8、-led8灯表示)调动平开关高电平熄灯,低电平亮灯,即上推熄灯,下推亮灯。 实验图1实验二 存储器读写实验一、 实验目的1、 掌握PC机外存扩展的方法。2、 熟悉6264芯片的接口方法。3、 通过对硬件电路的分析学习了解总线的工作时序二、 实验内容向02000020FFH单元循环存入字符A-Z。然后再读出来,并在计算机屏幕上显示出来。三、 实验原理介绍本实验用到存储器电路,见硬件说明。四、 实验步骤1、 实验连线 本实验无需接线。五、 实验提示1、 由于PCI是32位总线结构,其分配的地址空间可能是4G内存范围的任意地方,是用传统的实模式程序只能访问1M以内的地址空间,所以需要采取特殊的处理方
9、法,使程序突破1M的限制,该方法的具体细节参看存“存储器读写实验说明转载”的介绍。这里指的纯DOS环境是指微机启动时按F8键进入的DOS环境,WINDOWS重启进入MSDOS方式由于THS卡的资源被重新规划过,所以访问不了,也就不能正常实验。2、 由于THS卡使用PCI总线,所以分配的内存地址每台微机可能都不同,编程时需要了解当前的微机使用那段地址,并进行设置。获取方法请参看汇编程序使用方法的介绍。3、 在纯DOS环境下,有些微机的BIOS设置中有使用即插即用操作系统的选项,致使在纯DOS环境下(WINDOWS环境下不会出现此问题)PCI总线无法获得系统资源,页就无法做实验。这时需要将此选项修
10、改为使用即插即用。4、 在纯DOS环境下,有些微机的BIOS将不会给THS卡分配系统资源,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验。这时需要将此选项修改为不使用即插即用操作系统。5、 6264、62256等是计算机系统扩展中经常用到的随机存储器芯片(PAM),主要作数据存储器扩展。本实验所进行的内存置数在程序中经常用到。计算机系统运行中会频繁地进行内存与外设或者内存与内存之间的数据传输,所以本实验虽然简单但对理解系统程序的运行很关键,望学习和实验时认真对待。六、程序流程图如下图 实验程序: Memrw.ASM 存储器读写实验程序 ;3
11、86以上微机适用 纯dos下才能使用 tasm4.1或以上编译 存储器读写 DATA SEGMENT MEM_DATA EQU 0DFH ;THS 卡中设备的mem地址 MEM_OFFSET EQU MEM_DATA+2000H MESG DB 0DH,0AH,write data to memory!,0DH,0AH,$ MESG1 DB 0DH,0AH,read data from memory!,0DH,0AH,$ MSG1 DB 0DH,0AH,THS pci card memory operate!,$ GDT_DEF DW 00H,00H,00H,00H ;全局描述符表GDT,第一
12、段空 DW 0FFFFH ;全局描述符表GDT,第二段,段界限低16位 DW 00H ;基地址低16位 DB 00H,92H ;基地址中间8位,段属性 DB 8FH,00H ;段界限的高4位(包括段属性的高4位),基地址的高8位 GDT_ADDR DW 00H ;存放GDT的长度(以字节为单位的长度-1) DW 00H,00H ;存放GDT的线性基地址 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:DATA,ES:DATA START:.386P CALL OPENA20 ;打开a20地址线 MOV AX,DATA MOV DS,AX CAL
13、L SET4GB ;进入保护模式重设段界限为4GB后返回实模式 MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG1 MOV AH,09H INT 21H MOV DX,OFFSET MESG MOV AH,09H INT 21H MOV AX,0 MOV DS,AX MOV ESI,MEM_OFFSET ;add esi,100h MOV CX,80H MOV DH,40H MOV DL,40H LOOP1: INC DL INC DH MOV ESI,DX INC ESI INC ESI MOV BX,DX MOV AH,02H INT 21H MOV DL,B
14、H MOV AH,02H INT 21H MOV DX,BX CMP DL,5AH JNZ LOOP2 MOV DL,40H MOV DH,40H LOOP2: LOOP LOOP1 ;向THS卡的存储空间反复写256个A-ZMOV AX,DATA MOV DS,AX MOV DX,OFFSET MESG1 MOV AH,09H INT 21HMOV AX,0 MOV DS,AX MOV ESI,MEM_OFFSETMOV CX,80H LOOP3: MOV DX,ESI PUSH DX MOV AH,02H INT 21H POP DX MOV DL,DH MOV AH,02H INT 21
15、H INC ESI INC ESI LOOP LOOP3 ;从THS卡的存储空间读256个字节内容并显示CALL CLOSEA20 MOV AX,4C00H INT 21HSET4GB PROC ;进入保护模式从设段界限为4GB后返回实模式 CLI PUSH DS PUSH ES MOV WORD PTR GDT_ADDR0, (2*8-1) ; /GDT的长度存入GDT_Addr中 MOV EAX,DS ; /计算GDT描述符表的线性基地址31-0 SHL EAX,4 ; /段地址eax=ds16 XOR EBX,EBX ; /ebx清零 MOV BX,OFFSET GDT_DEF ; /b
16、x=GDT的偏移地址 ADD EAX,EBX ; /GDT的线性基地址=eax+ebx MOV DWORD PTR GDT_ADDR2,EAX ; /GDT的线性基地址存入GDT_Addr中 LGDT QWORD PTR GDT_ADDR MOV BX,8 ; /设置数据段描述符的选择字 MOV EAX,CR0 OR AL,1 MOV CR0,EAX JMP FLUSH1 ;使保护模式下代码段的选择子装入CS,进入保护模式 FLUSH1: MOV DS,BX ; /DS装载具有4GB界限的数据段描述符 MOV ES,BX ; /ES装载具有4GB界限的数据段描述符 AND AL,0FEH MO
17、V CR0,EAX JMP FLUSH2 ;清指令预取队列,使实模式下代码段的段值装入CS,进入实模式; /返回实方式FLUSH2: POP ES POP DS STI RET SET4GB ENDPOPENA20 PROC ;打开a20地址线 PUSH AX IN AL,92H OR AL,B OUT 92H,AL POP AX RET OPENA20 ENDPDELAY PROC ;关闭a20地址线 PUSH CX MOV CX,1000H LOOPX: LOOP LOOPX POP CX RET DELAY ENDPCLOSEA20 PROC ;关闭a20地址线 PUSH AX IN A
18、L,92H AND AL,B OUT 92H,AL POP AX RET CLOSEA20 ENDP CODE ENDS END START 实验结果:向THS卡存储空间反复写256各AZ,然后显示读提示信息,最后再从THS卡存储空间读入256个AZ,并在屏幕上显示读入数据。实验五 七段数码管实验一、实验目的掌握数码管显示数字的原理,加深对8255的理解和应用。二、实验内容、静态显示:将条线全部取下,将和相连,。编程从键盘输入一位十进制数字(),在七段数码管上显示出来。、动态显示:将,其他的接线同静态显示方式一样。编程在两个数码管上动态显示“”、动态显示选作:实验连线和实验动态显示一样,编程在
19、两个数码管上循环显示00-99。三、编程提示、实验箱上的七段数码管为共阴型段码,采用同相驱动,输入端加高电平,选中的数码管亮,位码输入端低电平选中。、七段数码管的字型代码表如下表四、程序框图(如图5)实验程序1、静态显示;* 键盘输入数据(0-9)控制LED数码管显示 led jump调线帽全部取下来。;* ;*CS0-8255CS,PB0PB7依次接led-A led-dp led1 接地;*DATA SEGMENT IOPORT EQU 0A800H IO8255B EQU IOPORT+0A2H IO8255CON EQU IOPORT+0A6H LED DB 3FH,06H,5BH,4
20、FH,66H,6DH,7DH,07H,7FH,6FH MESG1 DB 0DH,0AH,Input a num (0-9),other key is exit:,0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,IO8255CON ;使8255的B口为输出方式 MOV AX,90H OUT DX,AL SSS: MOV DX,OFFSET MESG1 ;显示提示信息 MOV AH,09H INT 21H MOV AH,01 ;从键盘接收字符 INT 21H CM
21、P AL,0 ;是否小于0 JL EXIT ;若是则退出 CMP AL,9 ;是否大于9 JG EXIT ;若是则退出 SUB AL,30H ;将所得字符的ASCII码减30H MOV BX,OFFSET LED ;bx为数码表的起始地址 XLAT ;求出相应的段码 MOV DX,IO8255B ;从8255的A口输出 OUT DX,AL JMP SSS ;转SSS EXIT: MOV AH,4CH ;返回 INT 21H CODE ENDS END START实验结果:先把跳线冒拔掉,再从键盘输入09的任意数字,LED数码管显示相应的数字,如:键盘输入9,led数码管显示数字9。2、动态显示
22、;* LED数码管实验 动态显示“56” ;*;* led jump调线帽全部取下来,CS0-8255CS,PB0PB7依次接led-Aled-dp led2PA0,LED1PA1;* DATA SEGMENT IOPORT EQU 0A400H IO8255A EQU IOPORT+0A0H IO8255B EQU IOPORT+0A2H IO8255CON EQU IOPORT+0A6H LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码 BUFFER1 DB 5,6 ;存放要显示的个位和十位 BZ DW ? ;位码 DATA ENDS C
23、ODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,IO8255CON ;将8255设为B,A口输出 MOV AL,80H OUT DX,AL MOV DI,OFFSET BUFFER1 ;设di为显示缓冲区 LOOP2: MOV BH,02 LLL: MOV BYTE PTR BZ,BH PUSH DI DEC DI ADD DI, BZ MOV BL,DI ;bl为要显示的数 POP DI MOV BH,0 MOV SI,OFFSET LED ;置led数码表偏移地址为SI ADD SI,BX ;求出
24、对应的led数码 MOV AL,BYTE PTR SI MOV DX,IO8255B ;自8255B的口输出 OUT DX,AL MOV AL,BYTE PTR BZ ;使相应的数码管亮 MOV DX,IO8255A OUT DX,AL PUSH AX MOV AX,05 DELAY1: MOV CX,60000 DELAY: LOOP DELAY ;延时 DEC AX JNZ DELAY1 POP AX MOV BH,BYTE PTR BZ SHR BH,1 JNZ LLL MOV DX,0FFH MOV AH,06 INT 21H JE LOOP2 ;有键按下则退出 MOV DX,IO82
25、55B MOV AL,0 ;关掉数码管显示 OUT DX,AL MOV AH,4CH ;返回 INT 21H CODE ENDS END START实验结果:在LED数码管上面动态显示数字56,也要把跳线冒全部拔下。3、动态显示;* LED数码管实验 动态循环显示“00-99 led jump调线帽全部取下来。 *;* CS0-8255CS,PB0PB7依次接led-Aled-dp led2PA0,LED1PA1 *; DATA SEGMENT IOPORT EQU 0A800H IO8255A EQU IOPORT+0A0H IO8255B EQU IOPORT+0A2H IO8255CON
26、 EQU IOPORT+0A6H LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码 BUFFER1 DB 0,0 ;存放要显示的十位和个位 BZ DW ? ;位码 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,IO8255CON ;将8255设为A,B口输出 MOV AL,80H OUT DX,AL MOV DI,OFFSET BUFFER1 ;设di为显示缓冲区 LOOP1: MOV CX,0100H ;循环次数 LOOP2
27、: MOV BH,02 LLL: MOV BYTE PTR BZ,BH PUSH DI DEC DI ADD DI, BZ MOV BL,DI ;bl为要显示的数 POP DI MOV BH,0 MOV SI,OFFSET LED ;置led数码表偏移地址为SI ADD SI,BX ;求出对应的led数码 MOV AL,BYTE PTR SI MOV DX,IO8255B ;自8255B的口输出 OUT DX,AL MOV AL,BYTE PTR BZ ;使相应的数码管亮 MOV DX,IO8255A OUT DX,AL PUSH CX PUSH AX MOV AX,05 DELAY1: MO
28、V CX,0F000H DELAY: LOOP DELAY ;延时 DEC AX JNZ DELAY1 POP AX POP CX MOV BH,BYTE PTR BZ SHR BH,1 JNZ LLL LOOP LOOP2 ;循环延时 MOV AX,WORD PTR DI CMP AH,09 JNZ SET CMP AL,09 JNZ SET MOV AX,0000 MOV DI,AL MOV DI+1,AH JMP LOOP1 SET: MOV AH,01 INT 16H JNE EXIT ;有键按下则转exit MOV AX,WORD PTR DI INC AL AAA MOV DI,A
29、L ;al为十位 MOV DI+1,AH ;ah中为个位 JMP LOOP1 EXIT: MOV DX,IO8255B MOV AL,0 ;关掉数码管显示 OUT DX,AL MOV AH,4CH ;返回 INT 21H CODE ENDS END START实验图5实验结果:执行程序后在LED数码管动态循环显示0099,也要全部拔掉跳线冒。实验六 竞赛抢答器实验一、实验目的、了解微机化竞赛抢答器的基本原理、进一步学习使用并行接口二、实验内容用拨动开关 代表竞赛抢答按键,当某个拨动开关置位时表示某组抢答按键按下,七段数码管上将其组号示出来。线路连接为:将跳线帽全部取下,将和相连,到依次接到到上
30、。三、编程提示设置8255为为口输入,口输出。读取口数据,若为表示无人抢答,若不为则有人抢答。根据读取数据可判断其组号,从键盘上按空格键开始下一轮抢答,按其它键程序退出。四、程序框图(如图6)实验程序;*以空格为开始抢答,先按下的则显示。led jump调线帽全部取下来。*; DATA SEGMENT IOPORT EQU 0A800H IO8255A EQU IOPORT+0A0H IO8255B EQU IOPORT+0A2H IO8255CON EQU IOPORT+0A6H LED DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,00H ;数码表 DATA END
31、S CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,IO8255CON ;设8255为A口输入,B口输出 MOV AX,90H OUT DX,AL MOV BX,OFFSET LED ;使BX指向段码管首址 SSS: MOV DX,IO8255A IN AL,DX ;从8255的A口输入数据 OR AL,AL ;比较是否为0 JE BLACK ;若为0,则表明无键按下,转灯灭 MOV CL,0FFH ;cl作计数器,初值为-1 RR: SHR AL,1 INC CL JNC RR MOV AL,CL XLAT MOV DX,IO8255B OUT DX,AL MOV DL,7 ;响铃 ASCII码为07 MOV AH,2 INT 21H WAI: MOV AH,1 INT 21H CMP AL,20H ;是否为空格 JNE EEE ;不是,转eee JMP SSS BLACK: MOV AL,0 ;是,关灭灯 MOV DX,IO8255B OUT DX,A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论