接口实验报告

时间:2024.4.21

接口实验报告

                        班级:   0313

                        姓名:   吴传文

           学号:  012003016704

实验一:并行接口实验

实验内容:

  利用8255接口控制显示灯逐位循环点亮。

实验要求:

  当C口的PC7=1状态时,用开关(SW4按下)控制,显示灯从高位到低位逐位循环点亮(右循坏);

  当C口的PC0=1状态时,用开关(SW1按下)控制,显示灯从低位到高位逐位循坏点亮(左循坏)。

硬件接线要求:

 PA0~PA7分别接显示灯L0~L7 。

 按钮开关SW1接C口的PC0,按钮开关SW4接C口的PC7。

 U102(74LS245)芯片的OE#接地。

 JP8短接,扁平线J5需连接,扁平线J3不需连接。

并口8255的应用说明:

 命令口地址为303H;命令口用作确定A,B,C各端口的工作方式。

 A口地址为300H。A口作输出口(接指示灯L0~L7)。

 C口地址为302H,C口的状态受开关SWi控制。

实验源程序:

stack      segment stack

db 1000 dup(0)

stack      ends

code      segment

assume    cs:code,ss:stack

start:      mov dx,303h            ;置8255为A口方式0输出

mov al,89h              ;控制字10001001B

out dx,al

mov bl,1                ;置循坏初值

next:      mov al,bl

          mov dx,300h

          out dx,al                ;把BL的值写入A口

          mov dx,302h

          in al,dx                 ;读C口状态的值

          and al,80h

          jz left                   ;判断是否是开关SW1按下(左循坏 )

          and al,01h              

          jz right                  ;判断是否是开关SW4按下(右循坏)

          jnz nextt

right:      ror bl,1

          mov al,bl

          mov dx,300h

          out dx,al

mov dx,302h

          in al,dx

          and al,80h

          jz left

          jmp  nextt1

left:       rol bl,1

          mov al,bl

          mov dx,300h

          out dx,al

mov dx,302h

          in al,dx

          and al,01h

          jz right

          jmp nextt2

nextt:     mov ah,06h                  ;判键盘按下退出

mov dl,0ffh

int 21h

jnz ppp

call delay

jmp next  

nextt1:    mov ah,06h

mov dl,0ffh

int 21h

jnz ppp

call delay

jmp right

nextt2:    mov ah,06h

mov dl,0ffh

int 21h

jnz ppp

call delay                  ;调延时子程序

jmp left

ppp:      mov ah,4ch

          int 21h

          delay proc near               ;延时子程序

          mov ax,1000

lll:        mov cx,0                   ;减1为最大数

ll:        loop ll

          dec ax

          jne lll

          ret

delay endp

code      ends

          end  start

实验二:串行通讯接口

实验目的:

  掌握串行接口芯片8251的工作原理及串行通讯的收/发编程方法

实验内容:

1:甲乙两台微机之间,按RS-232C标准协议,进行零MODEM方式,全双工串行通信。所谓全双工是双方通过各自的键盘按键发送,同时接收对方发来的字符。发送与接收的字符均在屏幕上显示。通信数格式为起止式:1位停止位,7位数据位,无校验,波特率因子为16。波特率为1200bps。按ESC键,退出。

2、电路的8251控制口地址为309H,8251数据口地址为308H。8255按位/置位和工作方式命令字端口地址为303H 。8253计数器用于产生8251的发送和接收的时钟。8253控制口地址为307H,计数器的计数初值=时钟频率/(波特率×波特率因子),8253的2号计数器端口地址为306H,实验中,时钟频率约为1MHZ,波特率选1200,波特率因子选16,则计数器初值约等于52。即TC=(1×106)/(1200位/秒×16次/位)≈52

   3.采用查询方式串行通讯。设置8253工作方式字为b6H

 1         0           1     1       0     1     1         0 

D7      D6        D5      D4      D3      D2   D1         D0

计数器选择   读写字节数     工作方式     码 制   

 D0=0,选择二进制码;D3 D2 D1=011,为3方式,表示自动装入计数初值,输出连续方 波(作为收/发时钟脉冲);D5 D4=11,表示仅从端口地址读/写一个字;D7 D6=10,为选 择 2号计数器。

实验要求:

采用两台MFID平台板上的串行接口电路进行硬件连接,分别编写甲乙两机各自的发送与接收程序,并进行调试,直至程序正常运行。

实验原理:

  1.RS-232标准串行通信接口电路原理如图2.1.21所示。接口电路以8251为核心,8253提供发/收时钟,8255控制8253的Gate门。另外,还有MAX232作电平转换,MAX491作RS-232与RS-485的转换、JP31作中断申请开关等。因此,该接口电路可实现两种接口标准和查询/中断两种方式的串行通信。

2.RS-232C标准串行通信接口电路设计原理和方法的详细阐述,参考”微机接口技术及应用”教材第9.6节(P233~240)

实验资源配置:

1.电源: 机内供电,将平台板JP-1跳接块置于1-2位置。

2.I/O端口地址: 8251的两个端口地址为:数据口=308H,命令/状态口=309H,DIP4地址开关全部为“ON”。

3.电缆线:采用两端带DB-9型插头的3芯屏蔽电缆。

4.软件资源:MF2KI集成开发环境与工具。

实验程序样例:

data51   equ  308h         ;8251A数据口

ctr151   equ  309h         ;8251A命令/状态口

timer2   equ  306h         ;8253的2号计数器端口

timctl   equ  307h         ;8253命令口

clk00    equ  12h          ;8251输入时钟频率(十六进制表示)

clk01    equ  34deh

factor   equ  16           ;波特率因子16

data     segment

bps00    dw (?)

mes1     db 'now enter the serial communication',0ah,0dh

         db 'end with esc',0ah,0dh,'$'

input_message  db ' baud_rate is 1200:'

               db 0dh,0ah,'$'

data      ends

code      segment

assume  cs:code, ds:data

int51   proc  near                  ;8251A初始化子程

       mov   dx,ctr151             ;8251A命令口

       xor   ax,ax                 ;空操作

       call  charout               ;送数子程

ll:     loop ll

       mov   al,40h                ;内部复位

       call  charout

       mov   al,4ah                ;8251A方式命令

       call  charout

       mov   al,27h                ;8251A工作命令

       call  charout

       ret

int51   endp

                      

charout   proc  near

         out   dx,al                  ;送数子程

         push  cx

         mov  cx,100                 ;延时

gg:      loop   gg

         pop   cx

         ret                          ;返回

charout   endp

set_bps   proc  near                    ;8253-5计数初值计算与装入子程

         mov  dx,clk00                ;取8253-5输入时钟频率clk作被除数

         mov  ax,clk01              

         mov  bx,bps00                ;取所选波特率作第一个除数

         div   bx                      ;除法运算,商数送ax

         mov  dx,0                    ;余数清零

         mov  bx,factor               ;取波特率因子作第二个除数

         div   bx                      ;除法运算,得计数初值(商数)送ax

         mov  bx,ax                   ;保存计数初值至bx

         mov  dx,timctl               ;8253-5命令口

         mov  al,0b6h                 ;8253-5初始化命令

         out   dx,al

         mov  dx,timer2               ;8253-5计数器2的端口

         mov  ax,bx                   ;取计数初值

         mov  ax,34h

         out   dx,al                   ;装计数初值低字节

         mov  al,ah                   ;装计数初值高字节

         out   dx,al                   

         ret                           ;返回

set_bps  endp

main    proc  far                     ;通信主程序

        mov    ax,data

        mov    ds,ax

        mov    ah,9                  

        mov    dx,seg input_message

        mov    ds,dx

        mov    dx,offset input_message

        int    21h

        mov  bps00,1200               ;存入bps00

        call set_bps                ;调用8253-5的set_bps子程序,

;计算初初值

         call int51                  ;调用8251A子程序,初始化8251A

         lea  dx,mes1

         mov  ah,09

         int  21h

         mov  dx,303h                ;初始化8255A

         mov  al,80h

         out  dx,al

         mov  al,0dh              ;置PC6=1,打开8253-5的GATE2,开始输出方波

         out  dx,al

checkkey:mov  ah,0bh                ;按键发送

         int   21h

         cmp  al,0                  ;有键按下?

         Je   receiv               ;若无键按下,则转接收

         mov  ah,01               ;若有键按下,则从KB读入,并在CRT上显示

         int  21h 

         mov  bl,al                 ;保存键值,以备发送

         cmp  al,1bh                ;是ESC?

         je   over                  ;是,则退出,并返回DOS

         mov  dx,ctr151             ;不是,则发送数据

transm:   in   al,dx

         test al,01                 ;发送准备好?TXRDY=1?

         jz   transm                ;未准备好,则等待

         mov  dx,data51             ;已准备好,则将键入的字符发送出去

         mov  al,bl

         out  dx,al

         jmp  checkkey              ;发送1个字符后,再转按键发送

receiv:   mov  dx,ctr151             ;接收数据

         in   al,dx

         test al,02                 ;接收数据准备好?RXRDY=1?

         jz   checkkey              ;未准备好,即无数据接收,则转按键发送

         mov  dx,data51             ;已准备好,即有数据传送过来,则接收1个字符

         in   al,dx

         mov  dl,al                ;显示接收的字符

         mov  ah,02h

         int  21h

         mov  ah,0bh

         int  21h

         cmp  al,00h

         je   checkkey

         mov  ah,08h

         int  21h

         cmp  al,1bh              ;是ESC? 

         je   over                ;是,则退出,返回DOS

         jmp  checkkey            ;不是,则接收1个字符后,再转按键发送

over:    mov  al,0ch              ;置PC6=0,关闭8253-5的GATE2,停止输出方波

         mov  dx,303h

         out  dx,al

         mov  ax,4c00h            ;程序退出

         int  21h

main   endp

code   ends

       end  main

实验心得与体会

       我认为接口实验同所有硬件实验一样有着的一个“通病”,就是理论的东西再好再对,还是要动手试一试,只有动手证明通过了,才是真的成功的!我做的两个实验都遇到这种问题了。第一个并口实验,自己改过的程序是对的,但就是不能通过,灯亮的时候不是逐个亮的,最后直接用老师给的程序试了一试,还是不行。这时才恍然大悟,赶紧换了台机器,于是就好,可惜已经11点多了。

第二个实验,程序在自己单台机器上能够通过没问题,但是两台机器一连就出问题了,接受到的都是乱码,检查得仔仔细细了,还是不行。于是便以为是连接两台机器的导线出了问题,于是换导线,但还是不行。这回可就傻了,实在不知是什么原因,好多同学也是这样,就这样干想了半天。最后还是老师有经验,指出了把频率换0.5M试试,于是就好了。

       总而言之,通过本次实验,让我对课本上的一些知识加深了了解,有机会体会一下一些理论上的东西是怎样实现的。另一方面我认为这个实验是我们下学期接口课设的基础。


第二篇:接口与实现 实验报告


XXXXXXXX

实 验 报 告

XXXXXXXXXX

系 部 计算机系 班 级

姓 名 XXXX班 课 程 Java语言程序设计 XXXX 学 号 2XXXXX 日 期 XXXXXXXXXXX

项 目 接口与实现 ——评价成绩

1.相关知识点

接口体中只有常量的声明(没有变量)和抽象方法的声明。而且接口体中所有的常量的访问权限一定都是public(允许省略public、final修饰符),所有的抽象方法的访问权限一定都是public(允许省略public、final修饰符)。

接口由类去实现以便绑定接口中的方法。一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法。

2.实验目的

本实验的目的是让学生掌握类怎样实现接口。

3.实验要求

体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班同学的平均成绩。Gymnastics类和School类都实现了ComputerAverage接口,但实现的方式不同。

4.程序源代码

interface ComputerAverage

接口与实现实验报告

{

public duble average(double x[]);

}

class Gymnastics implements ComputerAverage {

public double average(double x[]); {

int count=x.length;

double aver=0,temp=0;

for(int i=0;i<count;i++){

for(int j=0;j<count;j++){ if(x[j]<x[i])

{

temp=x[j];

x[j]=x[i];

x[i]=temp;

}

}

}

for(int i=0;i<count-1;i++)

{

aver=aver+x[i];

}

if(count>2)

aver=aver/(count-2);

else

aver=0;

return aver;

}

}

class School implements ComputerAverage

{

public double average(double x[]);

{

int count=x.length;

double aver=0;

for(int i=0;i<count;i++){

aver=aver/count;

return aver;

}

}

}

public class Estimastor

{

public static void main(String args[])

{

double a[]={9.89,9.88,9.99,9.12,9.69,9.76,8.97};

double b[]={89,56,78,90,100,77,56,45,36,79,98};

ComputerAverage computer;

computer=new Gymnastics();

double result= computer.average(a);

System.out.printf(“%n”);

System.out.printf(“体操选手最后得分:%5.3f﹨n”,result); computer=new school();

result=computer.average(b);

System.out.printf(“班级考试平均分数:%-5.2f”,result);

}

}

5.运行效果示例

程序运行效果:

接口与实现实验报告

6.实验小结

(1)可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。

(2)接口产生的多态就是指不同类在实现同一个接口时可能具有不同的实现方法。

更多相关推荐:
接口实验报告

一实验目的1掌握8255A编程原理2掌握键盘的输入和数码管的显示3提高理论与实践相结合的能力强化所学内容二实验要求用8255A实现模拟电梯用键盘输入要求电梯所到达的楼层数码管显示电梯当前所在楼层电梯在初始楼层当...

接口技术实验4报告

上海大学计算机学院计算机接口技术实验4专业计算机科学与技术班级周一13节姓名学号计算机工程与科学学院报告日期20xx年10月29日实验名称AD转换实验和电机驱动实验一实验目的1掌握ADC0809芯片的硬件电路知...

微机接口实验报告

实验一显示程序实验20xx年4月22日1实验目的及实验内容实验目的1掌握在PC机上以十六进制数形式显示数据的方法2掌握部分DOS功能调用的使用方法3熟悉Tddebug调试环境和TurboDebugger的使用实...

接口实验报告

现代微机原理与接口技术接口部分实验报告学号09008112姓名马京亚成绩学号东南大学计算机科学与工程学院二一年十二月微机原理与接口技术接口部分实验报告目录实验二可编程定时器计数器82533实验三Windows中...

接口实验报告

武汉轻工大学现代微机原理与接口技术报告学号姓名班级成绩20xx年5月15日110511313王雪瑞网工一班实验1定时与中断接口程序设计实验项目定时与中断接口程序设计实验日期4月22日实验场地东7409实验环境硬...

接口实验报告

一实验目的及要求目的通过本次综合实验使学生综合运用计算机接口与通信技术汇编语言以及电子技术等课程的内容为以后从事计算机检测与控制工作奠定一定的基础要求1主要掌握并行IO接口芯片82538255A中断控制芯片82...

接口实验报告

接口实验报告,内容附图。

接口实验报告要求2

华北电力大学微机原理与接口技术实验报告课程名称微机原理与接口技术实验名称8251A串行口通信实验指导教师徐欢班级学号姓名同组人实验台号实验日期实验成绩实验报告内容要求一实验目的了解串行通信的一般原理和8251A...

接口与通信实验报告

华北电力大学实验报告实验名称课程名称专业班级学号指导教师8255并行接口实验中断特性及8259应用编程实验8253定时计数应用实验模数AD转换实验接口与通信实验设计学生姓名成绩实验日期实验报告如打印纸张用A4左...

计算机接口实验报告

计算机接口技术实验电子与信息工程班级电子0911姓名学号20xx年5月9日实验一IO地址译码一实验目的掌握IO地址译码电路的工作原理二实验原理和内容实验电路如图11所示图中线路两端有节点的信号线需要用户用实验导...

实验报告四 简单的IO接口

简单的IO接口091180083刘浩通信工程一实验目的1学习嵌入式Linux操作系统设备驱动的方法2通过动态LED控制扫描键盘应用步进电机驱动等控制掌握简单设备的基本控制原理二实验原理介绍1嵌入式系统的设备驱动...

西安交通大学 接口实验报告

计算机接口技术课内实验报告物联网31班2130509005田雨桥20xx年12月11日实验一基本IO扩展实验一实验目的了解TTL芯片扩展简单IO口的方法掌握数据输入输出程序编制的方法二实验内容预备知识74LS2...

接口实验报告(32篇)