《微型计算机接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《微型计算机接口技术实验报告.docx(14页珍藏版)》请在三一办公上搜索。
1、微型计算机接口技术实验报告实验1:基本IO 口扩展实验一. 实验目的了解TTL芯片扩展简单I/O 口的方法,掌握数据输入输出程序编制的方法。二. 实验内容说明74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电 平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。74LS273是一种8D触发器,当CLR为高电平且CLK端电平正跳变时,D0 D7端数据被锁存到8D触发器中。本实验利用74LS244作为输入口,读取开关状态,并将此状态通过74LS273 驱动发光二极管显示出来。三. 实验原理图DI16D214D312D49D57D65D733产1Y1Al1Y2A21Y3
2、A31Y4A42Y1Bl2Y2B22Y3B32Y4B42G1G74LS244与74LS273扩展I/O 口原理图四. 实验步骤1.编写源程序源程序为:MY_STACK SEGMENT PARA STACK DB 100 DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA DATAIO_9054base_address DB 4 DUP(0);PCI 卡 9054 芯片 I/O 基地址暂存空间IO_base_address DB 4 DUP(0);PCI 卡 I/O 基地址暂存空间pcicardnotfind DB 0DH,0AH,pci card not find
3、or address/interrupt error !,0DH,0AH,$GOODDB 0DH,0AH,The Program is Executing !,0DH,0AH,$LS244LS273RALBDW00000HDW00020HDB?DB?DELAY_SET EQU 0FFFH;延时常数MY_DATA ENDsMY_CODE SEGMENT PARA CODEMY_PROCPROC FARASSUME CS:MY_CODE,DS:MY_DATA, SS:MY_STACKMAIN:,386 ;386模式编译MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_ST
4、ACKMOVSS,AXCALL FINDPCI;自动查找PCI卡资源及IO 口基址MOVCX,word ptr IO_base_address;MOVCX,0E800H;直接加入(E800:本机PCI卡IO 口基址)ADDLS244,CX;PCI卡IO基址+偏移ADDLS273,CXMOVRA,7FHMOVLB,0FEHREAD1:MOVDX,LS244INAL,DX;读取开关状态CMPAL,55HJEREAD2;如果是55右移CMPAL,0AAHJEREAD3;如果是AA左移NOTALJMP READ4;取反READ2:CALL RIGHTJMPREAD4READ3:CALLLEFTREAD
5、4:MOVDX,LS273OUTDX,ALCALLDELAYCALLBREAKJMPREAD1MY_PROCENDp;RIGHTPROCNEARMOVAL,RA;送LED显示ROR AL,1MOV RA,ALRETRIGHTENDPLEFT PROC NEARMOV AL,LBROL AL,1MOV LB,ALRETLEFT ENDP;“ ;* ;/*按任意键退出*/“ ;* ;BREAK PROC NEAR;按任意键退出PUSHFPUSH AXPUSH DXMOVAH,06HMOVDL,0FFHINT21HJERETURNMOV AX,4C00HINT21HRETURN:POP DXPOP
6、AXPOPFRETBREAK ENDP“ *;/*延时程序*/“ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个;DELAYPROCPUSHFPUSHPUSHMOVNEARDXCXDX,DELAY_SET;延时程序D1:MOVCX,-1D2:DECJNZD2CXDECJNZD1POP CXPOP DXPOPFRETDXDELAYENDp“ * ;/*找卡子程序*/“ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个
7、个个个个个个个个个个个个个个个个;FUNCTION CODEIO_port_addrej EQU 0CF8H;32位配置地址端口IO_port_dataEQU 0CFCH;32位配置数据端口IO_PLX_IDEQU 200810B5H;PCI卡设备及厂商IDBADR0=10H;基地址寄存器0BADR1=14H;基地址寄存器1BADR2=18H;基地址寄存器2BADR3=1CH;基地址寄存器3FINDPCIPROC NEAR;查找PCI卡资源并显示PUSHADPUSHFDMOVEBX,080000000HFINDPCI_next:ADDEBX,100HCMP EBX,081000000HJNZf
8、indpci_continueMOV DX,offset pcicardnotfind;显示未找到PCI卡提示信息MOVAH,09HINT21HMOVAH,4CHINT21H;退出findpci_continue:MOVDX,IO_port_addreMOVEAX,EBXOUTDX,EAX;写地址口MOVDX,IO_port_dataINEAX,DX;读数据口CMPEAX,IO_PLX_IDJNZfindpci_next;检查是否发现PCI卡MOVDX,IO_port_addreMOVEAX,EBXADD EAX,BADR1OUTDX,EAX;写地址口MOVDX,IO_port_dataINE
9、AX,DX;读数据口MOVdword ptr IO_9054base_address,EAXANDEAX,1JZfindPCI_next;检查是否为i/o基址信息MOV EAX,dword ptr IO_9054base_addressANDEAX,0fffffffehMOV dword ptr IO_9054base_address,EAX;去除 i/o 指示位并保存MOVDX,IO_port_addreMOVEAX,EBXADDEAX,BADR2OUTDX,EAX;写地址口MOVDX,IO_port_dataINEAX,DX;读数据口MOVdword ptr IO_base_address
10、,EAXANDEAX,1JZfindPCI_next;检查是否为i/o基址信息MOVEAX,dword ptr IO_base_addressANDEAX,0fffffffehMOVdword ptr IO_base_address,EAX;去除 i/o 指示位并保存MOVDX,offset good;显示开始执彳丁程序信息MOVAH,09HINT21HPOPfdPOPadRETfindPCI ENDPMY_CODE ENDSEND MAIN2. 编译源程序3, 实验连线(连线图如下)244的CSISA总线接口模块的0000H, Y7Y0开关K1K8。273的CSISA总线接口模块的0020H
11、,Q7Q0发光二极管L1L8。 该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。该模块的数据(AD0AD7)连到ISA总线接口模块的数据(LD0LD7)。探血1U_ K02K03阳KD4 ED53 K06强ED7K08YOQOY1QIY2Q2搭DJS1 寸- 3 4 5 6 Y Y Y YQ3Q4Q5Q6 Er-Nsl 寸 很言Y7Q7L1倡12 fflFL8普DOD7EDWRCSCS1 iC-.Ji iCOi ii iuni ig999aa喜吕 1 M吉I r-lfn09总鲤接口扩展I/O 口连线图4. 运行源程序5. 拨动开关,观察发光二极管的变化。五. 实验结果当分别拨
12、动开关KO1KO8时,开关对应的二极管L1L8亮六. 实验结果分析当拨动开关时,程序会检测到开关的拨动,并把信号经74LS244 (8总线缓 冲驱动器)传递到74LS273 (8D触发器)中,当CLR为高电平且CLK端电平 正跳变时,D0D7端据被锁存到8D触发器中,这时通过74LS273可改变发 光二级管的装态。实验二:可编程定时器/计数器8254实验一. 实验目的了解计数器的硬件连接方法及时序关系,掌握8254的各种模式的编程及其 原理,用示波器观察各信号之间的时序关系。二. 实验原理图DOD1CLKD *D2OUTOD3GETOD4D5CLK1 D6OUT1D7GET1A0CLK2 Al
13、OUT2WRGET2RD赤CLK20UT2GET2CLKOOUTOGETOCLK10UT1GET1可编程定时器/计数器8254原理图三. 实验内容及说明将32Hz的晶振频率作为8254的时钟输入,利用定时器8254产生 1Hz的方波,发光二极管不停闪烁,用示波器可看到输出的方波。8254是一种可编程的定时器/计数器芯片,它具有3个独立的16位计 数器通道,每个计数器都可以按照二进制或二-十进制计数,每个计数器都有 6种工作方式,计数频率可高达24MHz,芯片所有的输入输出都与TTL兼 容。计数器都有6种工作方式:方式0-计数过程结束时中断;方式1可 编程的单拍脉冲;方式2频率发生器;方式3方波
14、发生器;方式4软件 触发;方式5硬件触发。6种工作方式主要有5点不同:一是启动计数器 的触发方式和时刻不同;二是计数过程中门控信号GATE对计数操作的影响 不同;三是OUT输出的波形不同;四是在计数过程中重新写入计数初值对 计数过程的影响不同;五是计数过程结束,减法计数器是否恢复计数初值并 自动重复计数过程的不同。四. 实验步骤1.根据实验要求,编写源程序。 源程序如下:MY_STACK SEGMENT PARA STACK DB 100 DUP(?) MY_STACK ENDSMY_DATA SEGMENT PARA DATAIO_9054base_address DB 4 DUP(0);P
15、CI 卡 9054 芯片 I/O 基地址暂存空间IO_base_address DB 4 DUP(0);PCI 卡 I/O 基地址暂存空间pcicardnotfind DB 0DH,0AH,pci card not find or address/interrupt error !,0DH,0AH,$ GOODDB 0DH,0AH,The Program is Executing !,0DH,0AH,$P8254_T0DW 0000HP8254_T1DW 0001HP8254_T2DW 0002HP8254_MODE DW 0003HMY_DATAENDsMY_CODEMY_PROCSEGME
16、NT PARA CODEPROC FARASSUME CS:MY_CODE,DS:MY_DATA, SS:MY_STACKMAIN:,386 ;386模式编译MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_STACKMOVSS,AXCALL FINDPCI;自动查找PCI卡资源及IO 口基址MOVCX,word ptr IO_base_address;MOVCX,0E800H;直接加入(E800:本机 PCI 卡 IO 口基址)ADDP8254_T0,CXADDP8254_T1,CXADDP8254_T2,CXADDP8254_MODE,CX;PCI卡IO基址+偏移
17、MOVMOVDX,P8254_MODEAL,37H;写入方式控制字;计数器0,先读写低位,后读写高位,OUTDX,AL;方式3, BCD码计数MOVDX,P8254_T0MOVAL,20H;初值低8位OUTDX,ALMOVAL,00H;初值高8位OUTDX,ALNEXT:CALLBREAKJMPNEXTMY_PROCENDp;“ *个*个*;/*按任意键退出*/“ ;* ;BREAK PROC NEAR;按任意键退出PUSHFPUSH AXPUSH DXMOVAH,06HMOVDL,0FFHINT21HJERETURNEXEC_EXIT: MOV AX,4C00HINT21HRETURN:PO
18、P DXPOP AXPOPFRETBREAK ENDP;“ *个*个* ;/*找卡子程序*/“ 个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个;FUNCTION CODEIO_port_addreEQU 0CF8H;32位配置地址端口IO_port_dataEQU 0CFCH;32位配置数据端口IO_PLX_IDEQU 200810B5H;PCI卡设备及厂商IDBADR0=10H;基地址寄存器0BADR1=14H;基地址寄存器1BADR2=18H;基地址寄存器2BADR3=1CH;基地址
19、寄存器3FINDPCI PROCNEAR;查找PCI卡资源并显示PUSHADPUSHFDMOVEBX,080000000HFINDPCI_next:ADDEBX,100HCMPEBX,081000000HJNZfindpci_continueMOVDX,offset pcicardnotfind;显示未找到PCI卡提示信息MOVAH,09HINT21HMOVAH,4CHINT21H;退出findpci_continue:MOVDX,IO_port_addreMOVEAX,EBXOUTDX,EAX;写地址口MOVDX,IO_port_dataINEAX,DX;读数据口CMPEAX,IO_PLX_
20、IDJNZfindpci_next;检查是否发现PCI卡MOVDX,IO_port_addreMOVEAX,EBXADD EAX,BADR1OUTDX,EAX;写地址口MOVDX,IO_port_dataINEAX,DX;读数据口MOVdword ptr IO_9054base_address,EAXANDEAX,1JZfindPCI_next;检查是否为i/o基址信息MOV EAX,dword ptr IO_9054base_addressANDEAX,0fffffffehMOV dword ptr IO_9054base_address,EAX;去除i/o指示位并保存MOVDX,IO_po
21、rt_addreMOVEAX,EBXADDEAX,BADR2OUTDX,EAX;写地址口MOVDX,IO_port_dataINEAX,DX;读数据口MOVdword ptr IO_base_address,EAXANDEAX,1JZfindPCI_next;检查是否为i/o基址信息MOV EAX,dword ptr IO_base_addressAND EAX,0fffffffehMOV dword ptr IO_base_address,EAX;去除 i/o 指示位并保存MOV DX,offset good;显示开始执行程序信息MOV AH,09HINT 21HPOPfdPOPadRETf
22、indPCI ENDPMY_CODE ENDSEND MAIN2. 编译程序3. 实验连线:(连线图如下图)信号源模块短路32.0Hz,CLK连到8254模块的CLK0。8254模块选通线CS连到ISA总线接口模块的0000H。8254模块GATE0接电源+5V; OUT0接发光二极管L1。该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。该模块的数据(AD0AD7)、地址线(A0A7)分别连到ISA总线 接口模块的数据(LD0LD7)、地址线(LA0LA7)。CW窸路块信号源*-+5 电源 口发光二极管/示波器8254定时器/计数器实验4. 运行程序5. 观察发光二极管,用示
23、波器可看到输出的方波。五. 实验结果发光二级管L1在以某一个频率,有规律的闪烁。六. 实验结果分析由实验可知,8254工作在方式三一一方波发生器中,要求输入的频率为32Hz, 输出频率为1Hz,所以计数初值应设置为32。当写入记数值后开始记数,采用 减2记数,当记数到一半记数值时,输出变低,重新装入记数值进行减2记数, 当记数到0时,输出变高,装入记数值进行减2记数,循环不止。最后把输出的 1Hz信号接入发光二极管中,发光二级管以1Hz的频率有规律的闪烁。七. 实验总结本实验为基本IO端口扩展实验和可编程定时器/计数器8254实验,实验过 程相对比较顺利。在编译程序阶段,因为把程序存在桌面上了,编译程序出错, 在经过检查后,把程序放到了F盘,再次编译程序,编译成功。在这次实验中, 不仅练了自己动手能力,而且巩固了课本学习的内容,为自己在以后的工作学习 中打下基础。