微机接口实验报告.docx
- 文档编号:5478246
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:15
- 大小:50.57KB
微机接口实验报告.docx
《微机接口实验报告.docx》由会员分享,可在线阅读,更多相关《微机接口实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
微机接口实验报告
微机接口实验报告
报告人:
程战战
班级:
计算机91
学号:
09055006
目录
1基本IO口扩展实验2
1.1实验目的2
1.2实验内容说明2
1.3实验原理图3
1.4实验步骤3
1.5实验结果:
4
1.6IO.ASM代码:
4
2可编程定时器/计数器8254实验8
2.1实验目的8
2.2实验原理图9
2.3实验内容及说明9
2.4实验步骤10
2.5实验结果10
2.68254.ASM代码11
1基本IO口扩展实验
1.1实验目的
了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。
1.2实验内容说明
74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。
74LS273是一种8D触发器,当CLR为高电平且CLK端电平正跳变时,D0——D7端数据被锁存到8D触发器中。
本实验利用74LS244作为输入口,读取开关状态,并将此状态通过74LS273驱动发光二极管显示出来。
1.3实验原理图
图1-174LS244与74LS273扩展I/O口原理图
1.4实验步骤
(1)实验连线:
244的CS——ISA总线接口模块的0000H,Y7—Y0——开关K1—K8。
273的CS——ISA总线接口模块的0020H,Q7—Q0——发光二极管L1—L8。
该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。
该模块的数据(AD0~AD7)连到ISA总线接口模块的数据(LD0~LD7)。
(2)运行程序:
IO.ASM
(3)拨动开关,观察发光二极管的变化。
图1-2扩展I/O口连线图
1.5实验结果:
当拨动开关时,可以看到对应的二极管开始发亮,表明实验结果正确。
根据实验原理图,由于Y0-Y7连接到K1-K8,实验中片选一直有效,当K1拨到开状态时,信号由A1传到1Y1端,然后传送至锁存器74273的1D端,进而通过1Q传送到Q0对应二极管L1,使灯泡一直处于亮的状态。
1.6IO.ASM代码:
MY_STACKSEGMENTPARA'STACK'
DB100DUP(?
)
MY_STACKENDS
MY_DATASEGMENTPARA'DATA'
IO_9054base_addressDB4DUP(0);PCI卡9054芯片I/O基地址暂存空间
IO_base_addressDB4DUP(0);PCI卡I/O基地址暂存空间
pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror!
!
!
',0DH,0AH,'$'
GOODDB0DH,0AH,'TheProgramisExecuting!
',0DH,0AH,'$'
LS244DW00000H
LS273DW00020H
RADB?
LBDB?
DELAY_SETEQU0FFFH;延时常数
MY_DATAENDs
MY_CODESEGMENTPARA'CODE'
MY_PROCPROCFAR
ASSUMECS:
MY_CODE,DS:
MY_DATA,SS:
MY_STACK
MAIN:
.386;386模式编译
MOVAX,MY_DATA
MOVDS,AX
MOVES,AX
MOVAX,MY_STACK
MOVSS,AX
CALLFINDPCI;自动查找PCI卡资源及IO口基址
MOVCX,wordptrIO_base_address
;MOVCX,0E800H;直接加入(E800:
本机PCI卡IO口基址)
ADDLS244,CX;PCI卡IO基址+偏移
ADDLS273,CX
MOVRA,7FH
MOVLB,0FEH
READ1:
MOVDX,LS244;读取开关状态
INAL,DX
CMPAL,55H;如果是55右移
JEREAD2
CMPAL,0AAH;如果是AA左移
JEREAD3
NOTAL;取反
JMPREAD4
READ2:
CALLRIGHT
JMPREAD4
READ3:
CALLLEFT
READ4:
MOVDX,LS273
OUTDX,AL;送LED显示
CALLDELAY
CALLBREAK
JMPREAD1
MY_PROCENDp
;
RIGHTPROCNEAR
MOVAL,RA
RORAL,1
MOVRA,AL
RET
RIGHTENDP
LEFTPROCNEAR
MOVAL,LB
ROLAL,1
MOVLB,AL
RET
LEFTENDP
;
;*****************************************************************************
;/*按任意键退出*/
;*****************************************************************************
;
BREAKPROCNEAR;按任意键退出
PUSHF
PUSHAX
PUSHDX
MOVAH,06H
MOVDL,0FFH
INT21H
JERETURN
MOVAX,4C00H
INT21H
RETURN:
POPDX
POPAX
POPF
RET
BREAKENDP
;
;*****************************************************************************
;/*延时程序*/
;*****************************************************************************
;
DELAYPROCNEAR;延时程序
PUSHF
PUSHDX
PUSHCX
MOVDX,DELAY_SET
D1:
MOVCX,-1
D2:
DECCX
JNZD2
DECDX
JNZD1
POPCX
POPDX
POPF
RET
DELAYENDp
;
;*****************************************************************************
;/*找卡子程序*/
;*****************************************************************************
;
;FUNCTIONCODE
IO_port_addreEQU0CF8H;32位配置地址端口
IO_port_dataEQU0CFCH;32位配置数据端口
IO_PLX_IDEQU200810B5H;PCI卡设备及厂商ID
BADR0=10H;基地址寄存器0
BADR1=14H;基地址寄存器1
BADR2=18H;基地址寄存器2
BADR3=1CH;基地址寄存器3
FINDPCIPROCNEAR;查找PCI卡资源并显示
PUSHAD
PUSHFD
MOVEBX,080000000H
FINDPCI_next:
ADDEBX,100H
CMPEBX,081000000H
JNZfindpci_continue
MOVDX,offsetpcicardnotfind;显示未找到PCI卡提示信息
MOVAH,09H
INT21H
MOVAH,4CH
INT21H;退出
findpci_continue:
MOVDX,IO_port_addre
MOVEAX,EBX
OUTDX,EAX;写地址口
MOVDX,IO_port_data
INEAX,DX;读数据口
CMPEAX,IO_PLX_ID
JNZfindpci_next;检查是否发现PCI卡
MOVDX,IO_port_addre
MOVEAX,EBX
ADDEAX,BADR1
OUTDX,EAX;写地址口
MOVDX,IO_port_data
INEAX,DX;读数据口
MOVdwordptrIO_9054base_address,EAX
ANDEAX,1
JZfindPCI_next;检查是否为i/o基址信息
MOVEAX,dwordptrIO_9054base_address
ANDEAX,0fffffffeh
MOVdwordptrIO_9054base_address,EAX;去除i/o指示位并保存
MOVDX,IO_port_addre
MOVEAX,EBX
ADDEAX,BADR2
OUTDX,EAX;写地址口
MOVDX,IO_port_data
INEAX,DX;读数据口
MOVdwordptrIO_base_address,EAX
ANDEAX,1
JZfindPCI_next;检查是否为i/o基址信息
MOVEAX,dwordptrIO_base_address
ANDEAX,0fffffffeh
MOVdwordptrIO_base_address,EAX;去除i/o指示位并保存
MOVDX,offsetgood;显示开始执行程序信息
MOVAH,09H
INT21H
POPfd
POPad
RET
findPCIENDP
MY_CODEENDS
ENDMAIN
2可编程定时器/计数器8254实验
2.1实验目的
了解计数器的硬件连接方法及时序关系,掌握8254的各种模式的编程及其原理,用示波器观察各信号之间的时序关系。
2.2实验原理图
图2-1可编程定时器/计数器8254原理图
2.3实验内容及说明
将32Hz的晶振频率作为8254的时钟输入,利用定时器8254产生1Hz的方波,发光二极管不停闪烁,用示波器可看到输出的方波。
8254是一种可编程的定时器/计数器芯片,它具有3个独立的16位计数器通道,每个计数器都可以按照二进制或二-十进制计数,每个计数器都有6种工作方式,计数频率可高达24MHz,芯片所有的输入输出都与TTL兼容。
计数器都有6种工作方式:
方式0—计数过程结束时中断;方式1—可编程的单拍脉冲;方式2—频率发生器;方式3—方波发生器;方式4—软件触发;方式5—硬件触发。
6种工作方式主要有5点不同:
一是启动计数器的触发方式和时刻不同;二是计数过程中门控信号GATE对计数操作的影响不同;三是OUT输出的波形不同;四是在计数过程中重新写入计数初值对计数过程的影响不同;五是计数过程结束,减法计数器是否恢复计数初值并自动重复计数过程的不同。
2.4实验步骤
(1)实验连线:
信号源模块短路32.0Hz,CLK连到8254模块的CLK0。
8254模块选通线CS连到ISA总线接口模块的0000H。
8254模块GATE0接电源+5V;OUT0接发光二极管L1。
该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LD0~LD7)、地址线(LA0~LA7)。
(2)运行程序:
8254.ASM。
(3)观察发光二极管,用示波器可看到输出的方波。
图2-28254定时器/计数器实验
2.5实验结果
打开电源后,发现对应的二极管发亮,表明实验结果正确。
由于L1不停闪烁,即L1的电路的信号处于高低高低的方波信号,由实验现象可知占空比为1:
1因此计数器是工作在方式3,即产生方波的工作状态。
程序中写入的方式控制字37H转换为二进制即为00110111B,且控制字的格式为
D7
D6
D5
D4
D3
D2
D1
D0
其中D7D6为选择计数器(00为计数器0,01为计数器1,10为计数器2,11无效)
D5D4为读写计数器格式控制(00为计数器锁存,01为只读或写高8位,10为只读或写低8位,11为先读或写第8位后高8位)
D3D2D1为工作方式选择控制(000表示方式0,001表示方式1,010表示方式2,以此类推)
D0为数制选择控制,为1时采用BCD进行定时,为0采用二进制进行定时。
由上述格式知本次实验采用的数制为BCD计时,方式3,先读或写第8位后高8位,工作的计数器为计数器0。
与实验结果相符。
2.68254.ASM代码
MY_STACKSEGMENTPARA'STACK'
DB100DUP(?
)
MY_STACKENDS
MY_DATASEGMENTPARA'DATA'
IO_9054base_addressDB4DUP(0);PCI卡9054芯片I/O基地址暂存空间
IO_base_addressDB4DUP(0);PCI卡I/O基地址暂存空间
pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror!
!
!
',0DH,0AH,'$'
GOODDB0DH,0AH,'TheProgramisExecuting!
',0DH,0AH,'$'
P8254_T0DW0000H
P8254_T1DW0001H
P8254_T2DW0002H
P8254_MODEDW0003H
MY_DATAENDs
MY_CODESEGMENTPARA'CODE'
MY_PROCPROCFAR
ASSUMECS:
MY_CODE,DS:
MY_DATA,SS:
MY_STACK
MAIN:
.386;386模式编译
MOVAX,MY_DATA
MOVDS,AX
MOVES,AX
MOVAX,MY_STACK
MOVSS,AX
CALLFINDPCI;自动查找PCI卡资源及IO口基址
MOVCX,wordptrIO_base_address
;MOVCX,0E800H;直接加入(E800:
本机PCI卡IO口基址)
ADDP8254_T0,CX;PCI卡IO基址+偏移
ADDP8254_T1,CX
ADDP8254_T2,CX
ADDP8254_MODE,CX
MOVDX,P8254_MODE;写入方式控制字
MOVAL,37H;计数器0,先读写低位,后读写高位,
OUTDX,AL;方式3,BCD码计数
MOVDX,P8254_T0
MOVAL,20H;初值低8位
OUTDX,AL
MOVAL,00H;初值高8位
OUTDX,AL
NEXT:
CALLBREAK
JMPNEXT
MY_PROCENDp
;
;*****************************************************************************
;/*按任意键退出*/
;*****************************************************************************
;
BREAKPROCNEAR;按任意键退出
PUSHF
PUSHAX
PUSHDX
MOVAH,06H
MOVDL,0FFH
INT21H
JERETURN
EXEC_EXIT:
MOVAX,4C00H
INT21H
RETURN:
POPDX
POPAX
POPF
RET
BREAKENDP
;
;*****************************************************************************
;/*找卡子程序*/
;*****************************************************************************
;
;FUNCTIONCODE
IO_port_addreEQU0CF8H;32位配置地址端口
IO_port_dataEQU0CFCH;32位配置数据端口
IO_PLX_IDEQU200810B5H;PCI卡设备及厂商ID
BADR0=10H;基地址寄存器0
BADR1=14H;基地址寄存器1
BADR2=18H;基地址寄存器2
BADR3=1CH;基地址寄存器3
FINDPCIPROCNEAR;查找PCI卡资源并显示
PUSHAD
PUSHFD
MOVEBX,080000000H
FINDPCI_next:
ADDEBX,100H
CMPEBX,081000000H
JNZfindpci_continue
MOVDX,offsetpcicardnotfind;显示未找到PCI卡提示信息
MOVAH,09H
INT21H
MOVAH,4CH
INT21H;退出
findpci_continue:
MOVDX,IO_port_addre
MOVEAX,EBX
OUTDX,EAX;写地址口
MOVDX,IO_port_data
INEAX,DX;读数据口
CMPEAX,IO_PLX_ID
JNZfindpci_next;检查是否发现PCI卡
MOVDX,IO_port_addre
MOVEAX,EBX
ADDEAX,BADR1
OUTDX,EAX;写地址口
MOVDX,IO_port_data
INEAX,DX;读数据口
MOVdwordptrIO_9054base_address,EAX
ANDEAX,1
JZfindPCI_next;检查是否为i/o基址信息
MOVEAX,dwordptrIO_9054base_address
ANDEAX,0fffffffeh
MOVdwordptrIO_9054base_address,EAX;去除i/o指示位并保存
MOVDX,IO_port_addre
MOVEAX,EBX
ADDEAX,BADR2
OUTDX,EAX;写地址口
MOVDX,IO_port_data
INEAX,DX;读数据口
MOVdwordptrIO_base_address,EAX
ANDEAX,1
JZfindPCI_next;检查是否为i/o基址信息
MOVEAX,dwordptrIO_base_address
ANDEAX,0fffffffeh
MOVdwordptrIO_base_address,EAX;去除i/o指示位并保存
MOVDX,offsetgood;显示开始执行程序信息
MOVAH,09H
INT21H
POPfd
POPad
RET
findPCIENDP
MY_CODEENDS
ENDMAIN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 接口 实验 报告