微机接口实验报告

时间:2024.3.27

电子信息与通信工程专业《微机原理与接口》课程

微机原理与接口实验报告

姓名:      赵紫路

班级:   电子信息0902

学号:   0909091830

指导教师:  张金焕

中南大学·信息科学与工程学院

20##

实验一   8255A可编程并行口实验

一、实验目的

     1、掌握并行接口芯片8255A和微机接口的连接方法。

     2、掌握并行接口芯片8255A的工作方式及其编程方法。

二、实验内容

1、实验原理

     如实验原理图4-3所示,PC口8位接8个开关K1~K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。拨动K1~ K8,PB口上接的8个发光二极管L0~ L7对应显示K1~ K8的状态。

2、实验线路连接

   (1) 8255A芯片PC0~ PC7插孔依次接K1~ K8。

   (2) 8255A芯片PB0~PB7插孔依次接L0~ L7。

   (3) 8255A的片选插孔8255CS接译码输出Y7插孔。

                                     图4-3

三、实验软件框图

四、实验步骤

    1、按图4-3连好线路。

    2、运行实验程序,拨动K1~8,L0~L7会跟着亮灭

五、程序代码

CODE SEGMENT

ASSUME CS:CODE

IOCONPT EQU 0073H    //定义各接口地址

IOCPT   EQU 0072H

IOBPT   EQU 0071H

START: 

        MOV AL,89H

    MOV DX,IOCONPT    //定义B口出,C口入

    OUT DX,AL

    NOP

    NOP

    NOP

IOLED1: MOV DX,IOCPT

    IN AL,DX        //从C口录入数据

    MOV AH,AL

    ROL AH,1

    XOR AL,AH      //将录入的值和其值得循环移位的值异或

MOV DX,IOBPT

    OUT DX,AL

     

    JMP IOLED1

CODE ENDS

END  START

六、实验结果

拨动一位开关,将会点亮相邻的两个LED灯,这是应为用了异或后的结果。

实验二   8253A定时/计数器实验

一、实验目的

    学习8253A可编程定时/计数器与8088CPU的接口方法;了解8253A的工作方式; 掌握8253A在各种方式下的编程方法。

二、 实验内容

本实验原理图如图5-3所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表5-1所示。8253A的片选地址为48H~ 4FH。 因此, 本实验板中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。采用8253A通道2,工作在方式3(方波发生器方式),输入时钟CLK2 为1MHZ, 输出OUT2 要求为1KHZ的方波,并要求用接在GATE2引脚上的导线是接地(“0”电平)或甩空(“1”电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。

图 5-3

三、 实验线路连接

     1、 8253A芯片(就在主板上)的CLK2引出插孔连主板上的分频输出插孔T1(1MHZ)。

   

四、 实验软件框图

 

五、 实验步骤

     1、按图5-3连好实验线路

     2、 运行实验程序

     用示波器测量8253A的OUT2输出插孔,应有频率为1KHZ的方波输出,幅值0~4V。

六、程序代码

CODE SEGMENT

ASSUME CS:CODE

TCONTRO  EQU 004BH   //定义各个接口的地址

TCON2   EQU 004AH

START:  MOV DX,TCONTRO

    MOV AL,0B7H     //使用计数器2,先写高字节,再写低字节,工作在方式三,十进制

    OUT DX,AL

    MOV DX,TCON2

    MOV AL,00H

    OUT DX,AL

    MOV AL,10H     //定义计数的值为1000,并输出波形

    OUT DX,AL

CODE ENDS

END  START

七、实验结果

可以从屏幕上看到,计数器产生了频率为1KHZ的方波,这是因为计数器将1MHZ的分频为了1KHZ的波,且其工作在方式3,所以输出为方波。

实验三   使用8259A的单级中断控制实验

一、实验目的

     1、掌握中断控制器8259A与微机接口的原理和方法。

     2、掌握中断控制器8259A的应用编程。

二、实验内容

    本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量关于如下表6-1所示。

根据实验原理图6-1,8259A和8088系统总线直接相连,8259A 上连有一系统地址线A0,故8259A 有2 个端口地址, 本系统中为20H、21H。 20H 用来写ICW1, 21H 用来写ICW2、ICW3、ICW4,初始化命令字写好后, 再写操作命令字。OCW2、OCW3 用口地址20H,OCW1用口地址21H。图6-1中,使用了3号中断源,IRQ3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。如果中断源电平信号不符规定要求则自动转到7号中断,显示“Err”。CPU响应中断后,在中断服务中, 对中断次数进行计数并显示,计满5次结束,显示器显示“8259Good”。

                表6-1

  

四、实验线路连接

1)将单级中断模块中8259A的IRQ3插孔和脉冲发生器单元SP1插孔相连。SP1插孔初始电平置为低电平。

2)将单级中断模块中8259A的片选插孔8259CS1连主板的CS6(对58B机型该线不连)。

   4) 将8279接口模块上的插座DU(JB51)(a-h)用8芯线连接至数码管模块插座DU (a-h),8279接口模块上插座BIT(JB53)连接至数码管模块插座BIT。

3) 8279接口模块上的插孔8279ClK连至上面主板的CLOCK(对58B机型该线不连)。

4)8279接口模块上的插孔8279CS连至上面主板的CS5(对58B机型该线不连)。

                             图6-2

五、实验软件框图

六、程序代码

CODE SEGMENT

ASSUME CS:CODE

INTPORT1 EQU 0020H   //8259端口

INTPORT2 EQU 0021H

INTQ3   EQU INTREEUP3  //3号中断入口

INTQ7   EQU INTREEUP7  //7号中断入口

CONTPORT EQU 00DFH     //显示端口

DATAPORT EQU 00DEH

DATA0   EQU 0580H

DATA1   EQU 0500H

DATA2   EQU 0508H

DATA3   EQU 0518H

DATA4   EQU 0520H

        ORG 1000H

START:  JMP Tint1

Tint1:  CLI       //清方向标志位

    MOV     AX,0H

    MOV     DS,AX

    MOV     DX,CONTPORT

    MOV     AL,00H

    OUT     DX,AL                      ;KEYBORD DISPLY MODE

    MOV     AL,2AH

    OUT     DX,AL                      ;8279 CLOCK

    MOV     AL,0d0h

    OUT     DX,AL                      ;8279 CLEAR

    MOV     AL,90h

    OUT     DX,AL                      ;READ FIFO RAM COMMAND

TEST1:  IN      AL,DX

        AND     AL,80H

        JNZ     TEST1

        CALL FORMAT

    CLI

    MOV DI,DATA0

    MOV CX,08H

    XOR AX,AX     //数据区0580H-0587H清零

    REP STOSW

    MOV SI,DATA3

    CALL LEDDISP            ;DISP 8259-1

    MOV AX,0H

    MOV DS,AX

    CALL WRINTVER           ;WRITE INTRRUPT

    MOV AL,13H            //8259初始化,单片8259,边沿触发,ICW4=1

    MOV DX,INTPORT1

    OUT DX,AL

    MOV AL,08H      //设置起始中断类型码:08H

    MOV DX,INTPORT2   //写ICW2

    OUT DX,AL

    MOV AL,09H        // ICW4:一般完全嵌套方式,缓冲工作方式

    OUT DX,AL           //非AEOI(一般EOI方式)方式

    MOV AL,0F7H            // OCW1,对IR3开放中断,其它都屏蔽

    OUT DX,AL

    MOV BYTE PTR DS:[0601H],01H ; //DS:[0601H]为按键按下次数计数器

    STI                         //IF=1,开中断

WATING: JMP WATING            //等待中断

WRINTVER:MOV AX,0H        //写中断向量子程序

     MOV ES,AX

     MOV DI,002CH        //在中断向量表中的位置

     LEA AX,INTQ3         //写3号中断向量

     STOSW

     MOV AX,CS

     STOSW

     MOV DI,003CH

     LEA AX,INTQ7

     STOSW

     MOV AX,CS

     STOSW

     RET

INTREEUP3:CLI      //关中断

      MOV AL,DS:[0601H]      //取中断次数转换成显示代码

      CALL CONVERS         

      MOV SI,DATA0

      CALL LEDDISPD

      MOV AL,20H         //20H,一般EOI方式

      MOV DX,INTPORT1   //写入OCW2控制字

      OUT DX,AL

      ADD BYTE PTR DS:[0601H],01H    //将按键按下计数器+1

      CMP BYTE PTR DS:[0601H],06H     //计数器是否到了5次

      JNA INTRE1

      MOV SI,DATA4

      CALL LEDDISP

INTRE3:   JMP INTRE3      //程序死循环,结束

CONVERS:MOV BH,0H          //将按键次数转换为要显示的数据

    AND AL,0FH

    MOV BL,AL

    MOV AL,CS:[BX+DATA2]

    MOV BX,DATA0

    MOV DS:[BX],AL

    RET

INTRE1:   MOV AL,20H    //不满5次,开中断返回

      MOV DX,INTPORT1     //写入OCW2控制字:

      OUT DX,AL           //一般EOI方式

      STI

      IRET                //中断返回

INTREEUP7: CLI

       MOV SI,DATA1

       CALL LEDDISP

       MOV AL,20H

       MOV DX,INTPORT1

       OUT DX,AL

       IRET

LEDDISP:MOV AL,90H

    MOV DX,CONTPORT

    OUT DX,AL

    MOV BYTE PTR DS:[0600H],00

LED1:   CMP BYTE PTR DS:[0600H],07H

    JA  LED2

    MOV BL,DS:[0600H]

    MOV BH,0H

    MOV AL,CS:[BX+SI]

    MOV DX,DATAPORT

    OUT DX,AL

    ADD BYTE PTR DS:[0600H],01H

    JNZ LED1

LED2:   RET

LEDDISPD:MOV AL,90H

    MOV DX,CONTPORT

    OUT DX,AL

    MOV BYTE PTR DS:[0600H],00

LEDD1:  CMP BYTE PTR DS:[0600H],07H

    JA  LEDD2

    MOV BL,DS:[0600H]

    MOV BH,0H

    MOV AL,DS:[BX+SI]

    MOV DX,DATAPORT

    OUT DX,AL

    ADD BYTE PTR DS:[0600H],01H

    JNZ LEDD1

LEDD2:  RET

FORMAT: MOV BX,0

    MOV WORD PTR DS:[BX+0500H],5050H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],0079H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],0000H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],0000H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],063FH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],4F5BH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],6D66H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],077DH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],6F7FH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],7C77H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],5E39H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],7179H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],4006H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],4040H

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],6D6FH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],7F5BH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],3F5EH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],5C3FH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],6D6FH

    ADD BX,2

    MOV WORD PTR DS:[BX+0500H],7F5BH

    RET

CODE ENDS

END  START

七、实验结果

按下AN,产生一次中断,按满五次后,显示8259good,证明程序运行正确,实验成功。

实验四  存贮器读写实验

一、实验目的

     1、熟悉静态RAM的使用方法,掌握8088微机系统扩展RAM的方法。

     2、熟悉静态RAM读写数据编程方法。

二、实验内容

     对指定地址区间的RAM(2000H~23FFH)先进行写数据55AAH, 然后将其内容读出再写到3000H~33FFH中。

三、硬件电路(系统中已连接好)

四、实验步骤

    1、运行实验程序

2、稍后按RESET键退出, 用存贮器读方法检查2000H~ 23FFH 中的内容和3000~33FF中的内容应都是55AA。

五、程序代码

CODE SEGMENT

ASSUME CS:CODE

START:  MOV AX,0H

        MOV DS,AX    //段基址

        MOV BX,2000H   //要写入数据的地址

        MOV AX,55AAH    //写入的内容存入AX

        MOV CX,03FFH      //2000H-23FFH单元需写入内容

RAMW1:  MOV DS:[BX],AX     //通过寄存器间接寻址将55AAH写入地址20000H

        ADD BX,0002H      //地址向后两位

        LOOP RAMW1       //2000H-23FFH顺序写入

        MOV DX,3000H      //应转移到的地址

        MOV BX,2000H

        MOV CX,03FFH

        MOV AX,0H

        MOV DS,AX        //段基址为0;

RAMW2:  MOV AX,DS:[BX]  //将2000H-23FFH中的内容读出到3000H-33FFH中

        MOV DS:[DX],AX

        ADD BX,0002H

        ADD DX,0002H

        LOOP RAMW2

CODE ENDS

END  START

六、实验结果

按RESET键退出, 用存贮器读方法检查2000H~ 23FFH 中的内容和3000~33FF中的内容,可以看到两段内存中的值都为55AA,证明程序运行正确,实验成功。

实验总结

通过本次微机接口实验,给了我一次在实际操作中接触各个芯片的机会,加深了我对8253、8255、8259A的认识,同时也让我明白了微型计算机中的数据的存取方式。其实只要认真看书后并在实际操作中多仔细观察,这些实验还是比较容易理解和操作的。本次实验让我受益匪浅,使我对微机的认识不仅仅局限于书本上的知识,给了我一次实际操作的机会。

总而言之,本次试验我所在的小组还算成功,基本弄懂了软件的使用方法,各个芯片的控制方法,对自身知识有了一个不错的提升。

更多相关推荐:
微机原理与接口技术 实验报告

微机原理与接口技术实验报告学院计算机与通信工程学院专业计算机科学与技术班级学号姓名实验一8259中断控制器应用实验一实验目的1掌握PC机中断处理系统的基本原理2掌握可编程中断控制器8259的应用编程方法二实验内...

微机接口实验报告

微机原理与接口技术实验报告微机原理与接口技术系别专业班级姓名学号指导教师学年第学期微机原理与接口原理实验报告微机原理与接口技术实验报告实验一1实验目的寻找两个字符串中不同的字符2源程序代码datasegment...

微机原理完整实验报告+程序

实验题目8253定时计数器实验一实验目的与要求1学会8253芯片和微机接口原理和方法2掌握8253定时器计数器的工作方式和编程原理二实验内容1实验原理本实验原理图如图1所示8253A的A0A1接系统地址总线A0...

微机原理与接口实验报告

微机原理与接口实验实验报告第一部分软件实验实验一实验二1实验目的熟悉软件环境能够在Dos系统下编写汇编语言程序和汇编的全过程2实验内容DOS环境下汇编的快速入门3实验步骤CDEnter建议大家的文件都建立在最后...

微机接口机原理实验报告

微机原理及接口技术实验报告学号xxxxxx姓名xxxxx专业网络工程实验一系统认知11实验目的掌握TD系列微机原理及接口技术教学实验系统的操作熟悉Wmd86联机集成开发调试软件的操作环境通过顺序程序设计与分支程...

微机原理与接口技术实验一实验报告

实验题目实验环境熟悉与简单程序设计实验目的1掌握Masm的下载2掌握DEBUG调试程序的使用方法3掌握简单程序的设计方法实验内容1打开百度首页输入下载masm2用汇编语言编写11的计算过程实验准备1熟练掌握所学...

微机原理与接口技术实验报告

实验一熟悉汇编语言程序开发过程一实验目的1熟悉与实验有关的系统软件如编辑程序汇编程序连接程序和调试器等的使用2在程序调试过程中学习及掌握调试器CodeView的各种操作命令掌握程序的调试方法及技巧二实验内容用查...

微机原理与接口技术硬件实验报告

微原硬件实验报告班级07118班学号070547班内序号26姓名杨帆1实验一熟悉实验环境及IO的使用一实验目的1通过实验了解和熟悉实验台的结构功能及使用方法2通过实验掌握直接使用Debug的IO命令来读写IO端...

微机原理实验报告

微机原理实验课程实验研究性学习手册姓名学号班级微机教师微机实验老师时间20xx年12月上课时间实验一IO地址译码与交通灯控制实验一实验目的1掌握并行接口8255的基本原理2掌握8255的编程方法3掌握利用X86...

微机原理实验报告

微机接口与原理实验报告学院信息科学与工程学院专业班级姓名学号1目录第一部分硬件实验311实验一312实验二413实验三414实验四515实验五616实验六617实验七718实验八819实验九8110实验十9第二...

微机原理实验报告

微机原理实验报告班级自动化组员72梁慕佳07054031张乐07054033张林鹏07054034实验一8255并行接口实验1实验目的1学习并掌握8255的工作方式及其应用2掌握8255典型应用电路的接法2实验...

微机原理实验报告一

实验报告一实验目的1熟悉80C51单片微机汇编语言设计及编程技巧2掌握逻辑运算程序的设计方法3掌握求最小数和最大数程序的设计方法4掌握多字节无符号十进制数加减法程序的设计二实验器材1Micetek仿真器一台2实...

微机接口实验报告(31篇)