微机接口实验报告.docx

上传人:b****3 文档编号:5478246 上传时间:2022-12-16 格式:DOCX 页数:15 大小:50.57KB
下载 相关 举报
微机接口实验报告.docx_第1页
第1页 / 共15页
微机接口实验报告.docx_第2页
第2页 / 共15页
微机接口实验报告.docx_第3页
第3页 / 共15页
微机接口实验报告.docx_第4页
第4页 / 共15页
微机接口实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

微机接口实验报告.docx

《微机接口实验报告.docx》由会员分享,可在线阅读,更多相关《微机接口实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

微机接口实验报告.docx

微机接口实验报告

微机接口实验报告

 

报告人:

程战战

班级:

计算机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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1