接口实验 报告

合集下载

串行接口实验报告

串行接口实验报告

课程实验报告实验名称:串行接口专业班级:学号:姓名:同组人员:指导教师:报告日期:实验二1. 实验目的 (3)2. 实验内容 (3)3. 实验原理 (3)4. 程序代码 (6)5. 实验体会 (13)实验二1.实验目的1.熟悉串行接口芯片8251的工作原理2.掌握串行通讯接收/发送程序的设计方法2.实验内容通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。

具体过程如下:1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。

2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。

3.实验原理1.8251控制字说明在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。

控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。

另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。

2.8251方式指令(端口地址2B9H)3.8251工作指令(端口地址2B9H)4.8251状态字(端口地址2B9H)5.8253控制字(283H)6.8253计数初值(283H)计数初值=时钟频率/(波特率×波特率因子)本实验:脉冲源=1MHz波特率=1200波特率因=16计数初值= 1000000/1200*16=527.程序流程框图4.程序代码Fxc.asm;************************;;*8251串行通讯(自发自收)*;;************************;data segmentio8253a equ 280h ;8253计数0端口地址io8253b equ 283h ;8253控制端口地址io8251a equ 2b8h ;8251数据端口地址io8251b equ 2b9h ;8251控制端口地址mes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置8253计数器0工作方式mov al,16h ;控制字为00010110Bout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251;xor al,al;mov cx,03 ;向8251控制端口送3个0;delay: call out1;loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1mov al,27h ;向8251送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz nextmov ah,0bhint 21htest al,0ffh ;检测是否有键盘输入jz nextmov dl,0ffh ;有键盘输入,读入字符mov ah,06hint 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251a;inc alout dx,al ;发送; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz waiti ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,al;push cx;mov cx,40h;gg: loop gg ;延时; pop cxretout1 endpcode endsend startSend .asm;************************;;*8251串行通讯(自发自收)*;;************************;data segmentio8253a equ 280h ;8253计数0端口地址io8253b equ 283h ;8253控制端口地址io8251a equ 2b8h ;8251数据端口地址io8251b equ 2b9h ;8251控制端口地址buf3 byte 0mes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置8253计数器0工作方式mov al,16h ;控制字为00010110Bout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251mov dx,28bh ;8255控制口初始化mov al,81h ;1000,0001out dx,al;xor al,al;mov cx,03 ;向8251控制端口送3个0;delay: call out1;loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1mov al,27h ;向8251送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz nextmov ah,0bhint 21htest al,0ffh ;检测是否有键盘输入jz next; mov dl,0ffh ;有键盘输入,读入字符;mov ah,06h; int 21hmov dx,28ahin al,dxcmp al,27 ;若为ESC,结束jz exitmov dx,io8251a;inc alout dx,al ;发送; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz waiti ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,al;push cx;mov cx,40h;gg: loop gg ;延时; pop cxretout1 endpcode endsend start步进电机:1.K0=0,逆时针转;K0=1,顺时针转2.K1=0,慢转;K1=1,快转data segmentbuf1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;LED显示buf2 byte 0 ;步进电机数据buf3 byte 0 ;保存开关数据buf4 byte 0 ;保存顺转数据buf5 byte 9 ;保存反转数据buf6 byte 0 ;开关机data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov buf2,00110011b ;步进电机数据mov dx,28bh ;8255控制口初始化mov al,81h ;1000,0001out dx,al;-----------------------------逆转控制----------------R0: mov dx,28ah ;读C口in al,dxmov buf3,al ;保存C口数据test al,04 ;jnz kai ;转反转test al,01 ;测试K0=1?jnz L0 ;转反转mov al,buf4 ;走马灯开始一步顺转cmp al,9jnz S1call change9_0S1: inc al ;数据加1mov buf4,almov bx,offset buf1xlatmov dx,289h ;B口输出out dx,al ;数据完成加1mov al,buf2 ;电机开始一步逆转ror al,1 ;数据左移mov buf2,almov dx,288h ;A口输出out dx,al ;电机完成一步逆转mov al,buf3 ;回复C口数据test al,02jnz R1 ;转快转call delay_s ;否则慢转jmp R0R1: call delay_q ;快转jmp R0;------------------------------顺转控制-----------------L0: mov al,buf5 ;走马灯开始一步顺转cmp al,0jnz S2T2: test al,03 ;测试K2=1?jnz T2call change0_9S2: dec al ;数据减1mov buf5,al ;mov bx,offset buf1xlatmov dx,289h ;B口输出out dx,al ;走马灯结束一步顺转mov al,buf2 ;电机开始一步顺转rol al,1 ;数据右移mov buf2,almov dx,288h ;A口输出out dx,al ;电机结束一步顺转mov al,buf3 ;回复C口数据test al,02jnz L1 ;转快转call delay_s ;否则慢转jmp R0T3: test al,03 ;测试K2=1?jnz T3L1: call delay_q ;快转jmp R0kai: mov dx,28ah ;读C口in al,dxmov buf3,al ;保存C口数据test al,04 ;jz L0 ;转反转jmp kaiexit: mov ah,4chint 21hdelay_s proc near ;长延时mov bx,20hlp1: mov cx,0ffffhlp2: loop lp2dec bxjnz lp1retdelay_s endpdelay_q proc near ;短延时mov bx,1lp11: mov cx,0ffffhlp22: loop lp22dec bxjnz lp11retdelay_q endpchange9_0 proc nearmov buf4,-1mov al,buf4retchange9_0 endpchange0_9 proc nearmov buf5,10mov al,buf5retchange0_9 endpcode endsend start5.实验体会这次实验需要用到两种芯片8253和8251,两种芯片的作用分别是8253提供串行通讯所需的特定频率的脉冲信号,8251提供输入输出控制,所以在实验的过程中需要熟悉这两种芯片的方式字等使用规范,在仔细阅读了书本以及书本的编程实例后,基本摘掉了程序的设计方法实验过程中,出现了程序编译通过了但是不能运行的情况,后来经过检查发现是程序没有设置好的原因,要设置为编译后运行状态,否知只编译不运行,经过这次实验,知道了8253和8251两种芯片的基本用法,对课本上的知识有了更深入的理解,收获不少。

接口技术实验报告

接口技术实验报告

接口技术实验报告接口技术实验报告导言:接口技术在现代科技发展中扮演着重要的角色。

它是不同系统之间进行数据交换和通信的桥梁,为各种设备和软件提供了互联互通的能力。

本实验旨在通过实际操作,深入了解接口技术的原理和应用。

一、实验目的本次实验的目的是探索接口技术在实际应用中的作用和效果。

通过搭建一个简单的接口系统,我们可以了解接口的基本原理、数据传输方式以及如何进行接口的配置和测试。

二、实验设备和材料本次实验所需的设备和材料包括:一台计算机、一个串口转USB线缆、一块开发板、一根网线。

三、实验步骤1. 连接计算机和开发板将串口转USB线缆的USB接口插入计算机的USB接口,然后将串口转USB线缆的串口接口插入开发板的串口接口上。

2. 配置串口参数打开计算机的设备管理器,找到串口转USB线缆所对应的串口号,记录下来。

然后打开开发板上的串口配置界面,将串口号设置为与计算机上一致。

3. 编写测试程序使用C语言编写一个简单的测试程序,通过串口与开发板进行通信。

程序中包括发送数据和接收数据的功能,可以进行双向通信测试。

4. 运行测试程序将编写好的测试程序下载到开发板上,然后在计算机上运行相应的接收程序。

通过观察计算机上的输出和开发板上的LED灯状态,判断数据的传输是否成功。

5. 测试结果分析根据实际测试结果,分析接口技术的稳定性和可靠性。

如果数据传输成功率较高,说明接口配置正确,接口技术应用良好。

四、实验结果与讨论通过本次实验,我们成功搭建了一个简单的接口系统,并进行了数据传输测试。

实验结果显示,接口技术在数据传输方面表现出较高的稳定性和可靠性。

通过合理的配置和编程,我们能够实现计算机与外部设备之间的数据交换和通信。

接口技术的应用范围非常广泛,涉及到计算机、通信、自动化控制等领域。

例如,USB接口被广泛应用于外部设备的连接,如打印机、扫描仪等;串口接口则常用于嵌入式系统和单片机的通信;网口接口则用于实现计算机之间的局域网通信等等。

计算机接口技术实验报告优选全文

计算机接口技术实验报告优选全文

最新精选全文完整版(可编辑修改)《计算机接口技术》实验报告专业:电信息科学与技术班级:姓名:学号:年月日实验一:8255A并行口实验实验目的:掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。

实验内容:一、实验原理实验原理图如图5-9所示,PB4 ~ PB7和PC0 ~ PC7分别与发光二极管电路L1~ L12 相连,本实验为模拟交通灯实验。

交通灯的亮灭规律如下:设有一个十字路口,1、3为南北方向,2、4为东西方向,初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3 路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后重复上述过程。

8255A的PB4~ PB7对应黄灯,PC0 ~ PC3对应红灯,PC4~ PC7对应绿灯。

8255A 工作于模式0,并置为输出。

由于各发光二极管为共阳极,使其点亮应使8255A相应端口清0。

二、实验线路连接(1) CS-8255插孔连译码输出Y7插孔。

(2) L1 - PC4 L4 - PC5 L7 - PC6 L10 - PC7L2 - PB4 L5 - PB5 L8 - PB6 L11 - PB7L3 - PC0 L6 - PC1 L9 - PC2 L12 - PC3三、实验软件清单见随机光盘,文件名为H8255-2.ASM四、实验步骤1、按图5-9连好实验线路2、运行实验程序在DVCC-8086JHN上显示"8255-2"。

同时L1~L12 发光二极管模拟交通灯显示。

CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073H ;设置控制端常量IOAPT EQU 0070H ;设置数据端口A地址常量IOBPT EQU 0071H ;设置数据端口B地址常量IOCPT EQU 0072H ;设置数据端口C地址常量IOBDATA EQU 0500HCONTPORT EQU 00DFHDA TAPORT EQU 00DEHDA TA1 EQU 0640HSTART: JMP IOLEDIOLED: CALL FORMATCALL LEDDISPMOV AX,0HMOV DS,AXMOV AL,82HMOV DX,IOCONPT ;写8255控制字,三个口均工作于方式0OUT DX,AL ;往控制端口写控制字,设置A口工作在方式0输入,B方式0输出MOV DX,IOBPT ;读PB口数据存0601H单元IN AL,DXnot almov al,00hnopnopMOV BYTE PTR DS:[0501H],ALMOV DX,IOCONPT ;写方式控制字均为输出MOV AL,80HOUT DX,ALMOV DX,IOBPT ;置PB0,PB4~PB6为1,其余为0MOV AL,DS:[0501H]OR AL,0FH ;使PB0~PB3为1,PB4~PB7为0OUT DX,AL ;即熄灭红灯,点亮绿灯MOV DX,IOCPT ;使PC1,PC4~PC6为1,其余为0MOV AL,0FH ;使PC0~PC3为1,PC4~PC7为0OUT DX,ALCALL DELAY1 ;延时IOLED0: MOV AL,01011010B ;使2,4路口绿灯亮,1,3口红灯亮MOV DX,IOCPTOUT DX,ALCALL DELAY1CALL DELAY1and AL,0FH ;灭2,4路口绿灯OUT DX,ALMOV CX,8H ;只计数器值为8IOLED1: MOV DX,IOBPTMOV AL,DS:[0501H]or AL,01011111B ;点亮2,4路口黄灯OUT DX,ALCALL DELAY2 ;短暂延时and AL,00000000B ;灭掉黄灯OUT DX,ALCALL DELAY2LOOP IOLED1 ;黄灯闪烁8次MOV DX,IOCPTMOV AL,0FH ;点亮4个绿灯,灭掉4个红灯OUT DX,ALCALL DELAY2MOV AL,10100101B ;点亮1,3口红灯和2,4路口绿灯OUT DX,ALCALL DELAY1CALL DELAY1and AL,0FH ;灭掉红灯OUT DX,ALMOV CX,8HIOLED2: MOV DX,IOBPTMOV AL,DS:[0501H]or AL,10101111B ;点亮1,3路口黄灯OUT DX,ALCALL DELAY2and AL,00000000B ;灭掉黄灯OUT DX,ALCALL DELAY2LOOP IOLED2MOV DX,IOCPTMOV AL,0FH ;点亮4个绿灯,灭掉4个红灯OUT DX,ALCALL DELAY2JMP IOLED0 ;循环DELAY1: PUSH AXPUSH CX ;延时子程序MOV CX,0030HDELY2: CALL DELAY2LOOP DELY2POP CXPOP AXRETDELAY2: PUSH CXMOV CX,8000HDELA1: LOOP DELA1POP CXRETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07H JA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0640H],405BHADD BX,2MOV WORD PTR DS:[BX+0640H],4040HADD BX,2MOV WORD PTR DS:[BX+0640H],6D6DH ADD BX,2MOV WORD PTR DS:[BX+0640H],7F5BHRETCODE ENDSEND START实验二:定时/计数器实验目的:1. 学会8253芯片和微机接口原理和方法。

编程接口实验报告

编程接口实验报告

实验名称:编程接口技术应用实验日期:2023年X月X日实验地点:XX大学计算机实验室实验目的:1. 理解编程接口的基本概念和作用。

2. 掌握编程接口的常见类型及其应用场景。

3. 学会使用编程接口进行实际项目开发。

实验内容:一、实验背景随着计算机技术的飞速发展,编程接口(API)已成为软件开发中不可或缺的一部分。

编程接口允许不同的软件组件之间进行通信,提高了软件的可重用性和扩展性。

本实验旨在通过实际操作,加深对编程接口的理解和应用。

二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C#三、实验步骤1. 理解编程接口的基本概念编程接口是指一组预定义的函数、类、方法和数据结构,用于实现不同软件组件之间的交互。

编程接口包括以下几种类型:(1)函数接口:通过函数声明和函数调用实现接口。

(2)类接口:通过类定义和对象创建实现接口。

(3)接口:通过接口定义和实现接口实现接口。

2. 学习常见编程接口(1).NET Framework API:提供丰富的类库,包括Windows窗体、WPF、 等。

(2)Java API:提供Java标准库、Java Web开发库等。

(3)Python API:提供Python标准库、第三方库等。

3. 使用编程接口进行实际项目开发(1)创建一个简单的Windows窗体应用程序。

(2)在应用程序中添加一个按钮,并为按钮添加点击事件处理程序。

(3)在事件处理程序中,使用编程接口实现以下功能:- 显示一个消息框,提示用户“按钮被点击了!”。

- 获取当前时间,并显示在应用程序的标签控件中。

4. 实验结果与分析通过本实验,我们成功创建了一个简单的Windows窗体应用程序,并实现了以下功能:- 使用函数接口实现按钮点击事件处理。

- 使用.NET Framework API显示消息框。

- 使用.NET Framework API获取当前时间,并显示在标签控件中。

接口地址制作实验报告

接口地址制作实验报告

一、实验目的1. 了解接口地址的概念和作用。

2. 掌握接口地址的制作方法。

3. 提高网络编程能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 网络工具:Wireshark三、实验原理接口地址,即IP地址,是计算机网络中用于标识每个网络设备的地址。

在互联网中,每个设备都需要一个唯一的IP地址才能进行通信。

接口地址的制作主要包括公网IP地址和私有IP地址。

1. 公网IP地址:由互联网服务提供商(ISP)分配,用于在互联网中唯一标识一个设备。

2. 私有IP地址:用于局域网内部,不会在互联网中公开。

四、实验步骤1. 制作公网IP地址(1)使用Python的socket库获取本机的公网IP地址。

```pythonimport socketdef get_public_ip():try:s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect(('8.8.8.8', 80))ip = s.getsockname()[0]except Exception as e:print("获取公网IP地址失败:", e)finally:s.close()return ippublic_ip = get_public_ip()print("公网IP地址:", public_ip)```(2)使用Wireshark抓包工具验证公网IP地址。

2. 制作私有IP地址(1)使用Python的socket库获取本机的私有IP地址。

```pythonimport socketdef get_private_ip():try:s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('192.168.1.1', 80))ip = s.getsockname()[0]except Exception as e:print("获取私有IP地址失败:", e)finally:s.close()return ipprivate_ip = get_private_ip()print("私有IP地址:", private_ip)```(2)使用Wireshark抓包工具验证私有IP地址。

接口实验报告

接口实验报告

接口实验报告一、实验目的掌握I/O地址译码电路的工作原理。

二、实验内容将接口实验包中所带的EX-138.DSN文件用ISIS 7打开。

如图2-1-1所示。

图2-1-1 138实验图其中74LS273是一种带清除功能的8D触发器,D0~D7为数据输入端,Q0~Q7为数据输出端,在本8086的实验中用作地址锁存器。

第一脚MR:主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0;第11脚CLK:触发端,上升沿触发,即当CLK 从低到高电平时,D0~D7的数据通过芯片,为0时将数据锁存,D0~D7的数据不变。

1.连接AD4~AD9等几根线,使得138译码器Y0#~Y7#译码出的地址依次分别是Y0#:200H~20FH; Y1#:210H~21FH;……;Y7#:270h~27FH2.利用Source->Add/Remove Source files中添加源程序EX-138.ASM(在实验包中已提供),该程序向240H端口写任意数据。

如果是第一次运行,Source Code Filename这一项选New来调入源程序。

如图2-1-2所示图2-1-2 添加源程序3.在Source菜单下点击“Build All”,汇编源代码(全部编译);执行程序,查看Y0~Y7中是否Y4#脚输出为有效(管脚出的有颜色的小方块为红色是高电平,蓝色为低电平),如图2-1-3所示。

图2-1-3 输出结果4.改变程序中的输出地址,使得Y0#, Y1#,Y6#,Y7#分别有效。

.8086.MODEL SMALL.stack.dataaddress word 260h //使Y6#有效,Y1#有效为210h,Y7#有效为270h,Y0#有效为200h.codestart:mov ax,@datamov ds,axmov dx,addressmov al,0out dx,aljmp $END start5.改变A9~A3的接线方法,从而得到Y0;388H~38FH;Y1:398H~39FH; ……;Y7:3F8H~3FFH。

java接口实验报告

java接口实验报告

java接口实验报告实验报告:Java接口实验一、实验目的通过本次实验,我们希望达到以下目的:1. 深入理解Java接口的概念、特点和用途。

2. 掌握如何定义、实现和使用接口。

3. 理解接口在多态性中的作用。

4. 掌握如何使用接口来设计可扩展的代码。

二、实验内容1. 定义一个接口,并实现该接口。

2. 使用接口实现多态性。

3. 通过接口设计可扩展的代码。

三、实验步骤及结果步骤1:定义一个接口首先,我们定义一个名为"Shape"的接口,该接口包含一个计算面积的方法。

```javapublic interface Shape {double getArea();}```步骤2:实现接口接下来,我们创建两个类(Circle和Rectangle),分别实现Shape接口。

每个类都提供了一个计算面积的方法。

Circle类:```javapublic class Circle implements Shape {private double radius;private static final double PI = ;public Circle(double radius) {= radius;}Overridepublic double getArea() {return PI radius radius;}}```Rectangle类:```javapublic class Rectangle implements Shape {private double width;private double height;public Rectangle(double width, double height) {= width;= height;}Overridepublic double getArea() {return width height;}}```步骤3:使用接口实现多态性现在,我们创建一个名为"ShapeDisplay"的类,该类接受一个Shape对象,并使用该对象的getArea方法来计算面积。

系统接口实验报告

系统接口实验报告

实验名称:系统接口设计与实现实验日期:2023年3月10日实验地点:计算机实验室一、实验目的1. 理解系统接口的概念和作用。

2. 掌握系统接口的设计原则和实现方法。

3. 学会使用常用的接口技术,如API、Web服务等。

4. 提高编程能力和团队协作能力。

二、实验内容1. 系统接口概述2. 系统接口设计3. 系统接口实现4. 系统接口测试三、实验原理系统接口是软件系统中各个模块之间进行交互的桥梁,它定义了模块之间通信的规则和方式。

良好的系统接口设计可以提高系统的可维护性、可扩展性和可复用性。

四、实验步骤1. 系统接口概述首先,我们需要了解系统接口的概念和作用。

系统接口是软件系统中各个模块之间进行交互的桥梁,它定义了模块之间通信的规则和方式。

良好的系统接口设计可以提高系统的可维护性、可扩展性和可复用性。

2. 系统接口设计(1)确定接口需求:根据系统需求分析,确定各个模块之间需要交互的数据和功能。

(2)定义接口规范:根据接口需求,定义接口的输入、输出参数、返回值等。

(3)设计接口协议:根据接口规范,设计接口的通信协议,包括数据格式、传输方式等。

(4)编写接口文档:将接口规范和协议整理成文档,以便其他开发者理解和使用。

3. 系统接口实现(1)选择编程语言:根据项目需求和团队熟悉程度,选择合适的编程语言进行接口实现。

(2)编写接口代码:根据接口规范和协议,编写接口代码,实现模块之间的交互。

(3)测试接口:编写测试用例,对接口进行测试,确保接口功能的正确性和稳定性。

4. 系统接口测试(1)编写测试用例:根据接口规范和协议,编写测试用例,涵盖接口的所有功能。

(2)执行测试用例:使用测试工具或手动执行测试用例,检查接口的输出是否符合预期。

(3)分析测试结果:对测试结果进行分析,找出接口中存在的问题,并进行修复。

五、实验结果与分析1. 实验结果本次实验成功实现了系统接口的设计与实现,包括接口需求分析、接口规范定义、接口协议设计、接口代码编写和接口测试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机原理及接口技术实验报告实验一 8253计数器/定时器实验一、实验目的:1.学会通过62芯总线、驱动器、译码器等,在PC/XT机外扩展新的芯片。

2.掌握8253定时器编程原理,用示波器观察不同模式下的波形。

二、实验内容:用8253构成一个方波发生器或分频器。

1.按下图连接硬件线路:2.编程将定时器0设为模式3(方波),定时器1设为模式2(分频),定时器0的输出脉冲作为定时器1的时钟输入。

在示波器中,观察定时器0和1的输出波形及其关系。

三、程序框图:8253控制端口地址为203H 定时器0地址为200H 定时器1地址为201H注:CLK0连接由8MHZ时钟分频得到的250KHZ,则定时器l输出OUT1约为50HZ。

四、实验源代码:TIM_CTL EQU 0EC3HTIMER0 EQU 0EC0HTIMER1 EQU 0EC1HMODE03 EQU 36HMODE12 EQU 74HCODE SEGMENTASSUME CS:CODESTART: MOV DX,TIM_CTLMOV AL,MODE03OUT DX,ALMOV AX,01F4HMOV DX,TIMER0OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,TIM_CTLMOV AL,MODE12OUT DX,ALMOV AX,000AHMOV DX,TIMER1OUT DX,ALMOV AL,AHOUT DX,ALMOV AH,4CHINT 21HCODE ENDS五.画出OUT0、OUT1的输出波形。

六.改变定时器0计数值为奇数(01F5)时,画出其输出波形。

七.总结模式2、模式3的工作特点。

方式2——分频器(速度波发生器)有如下三个特点:正常计数过程:写入控制字后的时钟上沿输出OUT变高,写入计数初值后,计数器开始减1计数,减到1时OUT变成低电平,减到0时OUT又变成高电平,同时初值自动重新装入,并重复前一过程;门控信号的影响:在计数器工作期间,当GATE变为低电平时终止计数,而当GATE又恢复为高电平后,计数器重新装入原计数初值并重新开始计数。

新的计数初值的影响:如果工作期间对计数器写入新的计数初值:GA TE一直为高电平:新的初值下次有效,则写入新的初值后,遇到GATE上升沿,新的初值立即有效方式3与方式2的不同之处:OUT输出的是方波。

说明:(1)工作在方式3 ,引脚OUT输出的不是一个时钟周期的负脉冲,而是占空比为1:1或近似1:1的方波;当计数初值为偶数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平。

(输出脉冲占空比为50%)(2)由于方式3输出的波形是方波,并且具有自动重装计数初值的功能,因此,8253一旦计数开始,就会在输出端OUT输出连续不断的方波。

实验二 8255A并行口实验<一>一、实验目的:1.掌握8255A编程原理。

2.了解键盘结构,学会读取按键的方法。

二、实验内容:用8255来控制一个小键盘的识别。

1.线路图如下:注:在实验台上8255A的CS端接218—21F插孔,PA0一PA7,PB0一PB2与其旁边的插孔短接。

8255A的端口A地址为218H端口B地址为219H端口C地址为21AH控制口地址为21BH2.编写程序,使得在小键盘按键后,微机屏幕上有相应字符显示出来.三、编程指南:1.通过采用行扫描法或行反转法,识别键盘上的闭合键。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如果列值中有某位为低电平,则表明行列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止.行反转法识别闭合键时,要将行线接一个并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作在输入方式。

程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如果此时有某一键被按下,则必定会使某一列线值为0。

然后,程序再对两个并行端口进行方式设置,使行线上工作在输入方式,列线工作在输出方式,并且将刚才读得的列线值从列线所接的并行端口输出,再读行线上的输入值,那么,在闭合键所在的行线上的值必定为0。

这样,当一个键被按下时,必定可以读得一对唯一的行值和列值,在我们提供的程序中就采用行反转法来识别键盘按键。

2.在程序设计时,将各个键对应的代码(列值,行值)放在一个表中。

程序通过查表来确定具体按下的为哪一个键。

四、程序清单PA55 EQU 218H ;8255A的A口地址PB55 EQU 219H ;8255A的B口地址P55CTL EQU 21BH ;8255A的控制口地址DA TA SEGMENTTABIE DW 0101H,0102H,0104H,0108H,0110H,0120H,0140H,0180H DW 0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280HDW 0401H,0402H,0404H,0408H,0410H,0420H,0440H,0480H CHAR DB ‘CDEFBA9845673210 RPMG’;字符码表MES DB ‘PLAY ANY KEY IN THE SMALL KEYBOARD!’,0AH,0DHDB ‘IT WILL BE ON THE SCREEN! END WITH R’,0AH,0DH,’$’DA TA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART:MOV AX,DA TAMOV DS,AX ;DS指向数据段MOV DX,OFFSET MESMOV AH,09 ;显示提示信息INT 21 HKY:CALL KEY ;调键盘扫描子程序,健入字符的ASCII码在DL中CMP DL,‘R’;键入的字符不是结束字符JNZ KY ‘R’,则转KY继续MOV AX,4C00H ;返回DOSINT 21 HRETMAIN ENDPKEY PROC NEAR ;键盘扫描子程序,键人字符的ASCII码送DL中KST:MOV AL,82HMOV DX,P55CTL ;设置8255A的控制字,均OUT DX,AL 工作于方式0,端口A为输出,B为输入WAIT1:MOV AL,00MOV DX,PA55 ;端口A输出全0OUT DX,ALMOV DX,PB55 ;从端口B读入列值IN AL,DXCMP AL,0FFH ;若为0FFH,则说明无键JZ WAIT1 按下,转W AIT1PUSH AX ;入栈保存列值PUSH AXMOV CX,1000HDL Y:LOOP DL Y ;延时去抖动MOV DX,P55CTLMOV AL,90H ;设置8255A的控制字,均OUT DX,AL 工作于方式0,端口A为输入,B为输出MOV DX,PB55POP AX ;从端口B输出列值OUT DX,ALMOV DX,PA55 ;从端口A读进行值IN AL,DXPOP BX ;列值送AH中MOV AH,BLNOT AX ;行、列值取反MOV SI,OFFSET TABLE ;扫描码表首址MOV DI,OFFSET CHAR ;字符码表首址MOV CX,24 ;小键盘共3×8=24健TT:CMP AX,[SI];扫描码相符则转NNJZ NNDEC CX ;计数值减1JZ KST ;已全部比较完,仍不相符则转KSTADD SI,2 ;修改指针INC DIJMP TT ;继续比较NN:MOV DL,[DI]MOV AH,02 ;显示该扫描码对应字符INT 21 HPUSH DX ;字符ASCII码入栈保存MOV AL,82HMOV DX,P55CTL ;设置8255A控制字,均工OUT DX,AL 作于方式0,端口A为输出,B为输人WAIT2:MOV AL,00MOV DX,PA55 ;端口A输出全0OUT DX,ALMOV DX,PB55 ;从端口B读进列值IN AL,DXCMP AL,0FFH ;有键按下则转WAIT2等待释放JNZ WAIT2POP DX ;退栈RETKEY ENDPCODE ENDSEND START五、实验程序流程图六、用行扫描法编写实验程序,并进行调试。

MY8255_A EQU 9C60HMY8255_B EQU 9C61HMY8255_C EQU 9C62HMY8255_MODE EQU 9C63HDATA SEGMENTDTABLE DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV SI,3000HMOV AL,00HMOV [SI],ALMOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALMOV DI,3003HMOV DX,MY8255_MODEMOV AL,81HOUT DX,ALBEGIN: CALL DISCALL CLEARCALL CCSCANJNZ INK1CALL BREAKJMP BEGININK1: CALL DISCALL DALLYCALL DALLYCALL CLEARCALL CCSCANJNZ INK2JMP BEGININK2: MOV CH,0FEHKERR: JMP BEGINCCSCAN: MOV AL,00HMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_CIN AL,DXNOT ALAND AL,03HRETCLEAR: MOV DX,MY8255_BMOV AL,00HOUT DX,ALRETDIS: PUSH AXMOV SI,3000HMOV DL,0F7HAGAIN: PUSH DXMOV DX,MY8255_AOUT DX,ALMOV AL,[SI]MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,[BX]MOV DX,MY8255_BOUT DX,ALCALL DALLYINC SIPOP DXMOV AL,DLTEST AL,01HJZ OUT1ROR AL,1MOV DL,ALJMP AGAINOUT1: POP AXDALLY: PUSH CXMOV CX,00FFHT1: MOV AX,00FFHT2: DEC AXJNZ T2LOOP T1POP CXRETPUTBUF: MOV SI,DIMOV [SI],ALDEC DICMP DI,2FFFHJNZ GOBACKMOV DI,3003H GOBACK: RETBREAK PROC NEARMOV AH,06HMOV CL,00H COLUM: MOV AL,CHMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_CIN AL,DXTEST AL,01HJNZ LONEMOV AL,00HJMP KCODELONE: TEST AL,02HJNZ NEXTMOV AL,04HKCODE: ADD AL,CLCALL PUTBUFPUSH AXKON: CALL DISCALL CLEARCALL CCSCANJNZ KONPOP AXNEXT: INC CLMOV AL,CHTEST AL,08HJZ KERRROL AL,1MOV CH,ALJMP COLUMMOV AL,DLRETMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START七、实验心得体会8255控制小键盘实验使我了解了8255的基本输入输出的应用,使用通用的可编程并行接口,不但电路得到简化,相应的程序也可以得到简化,了解了8255A端口、B端口、C 端口的基本作用,使我对编程程序更加熟悉。

相关文档
最新文档