北理工微机原理实验三--使用8251A的串行接口应用实验
串行接口应用实验
(一)8251 串行接口应用实验一、实验目的1、掌握8251的工作方式。
2、学习串行通讯的有关知识。
二、实验设备1、TDN86/88教学实验系统一台。
2、示波器一台。
3、一组排线。
三、实验内容及步骤1、系统中的8251芯片系统装有一片8251芯片,并和标准RS-232C接口连接好,如下图所示。
该电路用来完成同PC微机的联机以及串行监控操作的实现,其端口地址为:数据口:C0H 控制口:C1H2、实验单元中的8251这片8251芯片用于各种串行口实验,连线见下图,其端口地址为:数据口:80H 控制口:81H3、8251串行接口应用实验本实验中,串行传输的数据格式规定如下:(1)一位逻辑‘0’的起始位,8位数据位(由低位开始传输),1位逻辑‘1’停止位。
(2)传输波特率9600baut。
数据信号的串行输出送示波器,可观察数据波形。
与示波器连线如下:8251 示波器TxD _____________ +GND_____________ -4、实验程序,见13-1.ASMCODE SEGMENTASSUME CS:CODESTART: CALL INIT ;初始化8253和8251A1: CALL SEND ;向串口送55HA2: MOV CX,0200H ;定时时间到,再发送下一个数据LOOP A2JMP A1 ;重复送数INIT: MOV AL,76H ;8253的计数器1工作在方式3,送出方波信号,作为8251收发时钟OUT 43H,ALMOV AL,0CH ;方波频率为153.6KHzOUT 41H,ALMOV AL,00HOUT 41H,ALCALL RESET ;复位8251,即向控制口送3个0,一个40HCALL DELAY ;8251工作速度慢,每送一个控制字,等待一会儿MOV AL,7EH ;置异步方式:1个停止位,偶校验,字符长为8位,波特率因子为16OUT 81H,AL ;控制口CALL DELAYMOV AL,31H ;RTS输出0,使CTS输入0OUT 81H,AL ;清除错误标志,并使TxEN置1,允许发送CALL DELAYRETRESET: MOV AL,00H ;复位8251OUT 81H,ALCALL DELAYOUT 80H,ALCALL DELAYOUT 80H,ALCALL DELAYMOV AL,40HOUT 81H,ALRETDELAY: PUSH CX ;延时子程序MOV CX,6000HA3: LOOP A3POP CXRETSEND: PUSH AX ;发送55HMOV AL,31HOUT 81H,ALPOP AXMOV AL,55HOUT 80H,ALRETCODE ENDSEND START5、实验步骤(1)将示波器与8251的TxD、GND排针引脚相连接。
接口实验报告8251
实验报告实验名称__8251A串行口实验____课程名称__微机原理与接口技术__院系部: 专业班级:学生姓名:学号:同组人: 实验台号:指导教师: 成绩:实验日期:华北电力大学一、实验目的及要求:(1)了解串行通信的一般原理和8251A的工作原理。
(2)掌握8251A的编程方法。
二、仪器用具:三、实验原理:1.串行通信的原理串行通信是通过一位一位地进行数据传输来实现通信。
具有传输线少,成本低等优点,适合远距离传送;缺点是速度慢。
完成串行通信任务的接口称为串行通信接口,简称串行接口。
串行接口作为输入时,完成串行到并行格式转换,作为输出时,完成并行到串行格式转换。
图1是串行通信的一般模型。
图1 串行通信的一般模型2.8251A的工作原理825lA是可编程的串行通信接口芯片,是Intel公司生产的一种通用同步/异步数据收发器(USART),可工作在同步方式,也可工作在异步方式,且能进行出错检测。
其内部结构框图如图2所示。
图2 8251A内部结构框图由图可知,8251A由数据总线缓冲器、读/写控制逻辑、调制/解调器控制逻辑、发送缓冲器、发送控制器、接收缓冲器、接收控制器等组成。
(1)在同步方式时,每个字符可定义为5、6、7或8位。
两种方法实现同步,由内部自动检测同步字符或由外部给出同步信号。
允许同步方式下增加奇/偶校验位进行校验。
(2)在异步方式下,每个字符可定义为5、6、7或8位,用1位作奇偶校验。
时钟速率可用软件定义为波特率的l、16或64倍。
另外,8251A在异步方式下能自动为每个被输出的数据增加1个起始位,并能根据软件编程为每个输出数据设置1位、1.5位或2位停止位。
(3)能进行出错检测。
带有奇偶、溢出和帧错误等检测电路,用户可通过输入状态寄存器的内容进行查询。
3.8251A的编程(1)8251A的编程地址:8251A只需要两个端口地址,一个用于数据端口,一个用于控制端口。
数据输入输出用读信号RD和写WR信号区分;状态端口只能读不能写,控制端口只能写不能读。
北理工微机原理实验三 使用8251A的串行接口应用实验
本科实验报告实验名称:实验三使用8251A的串行接口应用实验课程名称:计算机原理与应用实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:1. 实验目的1) 掌握串行通信原理及半双工和全双工的编程方法;2) 掌握用8251A接口芯片实现微机间的同步和异步通信;3) 掌握8251A芯片与微机的接口技术和编程方法。
2. 实验原理和内容8251A是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。
1) 8251A内部结构8251A通过引脚D0~D7和系统数据总线直接接口,用于和CPU传递命令、数据、状态信息。
读写控制逻辑用来接收CPU的控制信号、控制数据传送方向。
CPU对8251A的读写操作控制表如表3-4所示。
表3-4 CPU对8251A的读写操作控制表2) 8251A的方式控制字和命令控制字方式控制字确定8251A的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长度及波特率等,格式如图3-10所示。
命令控制字使8251A处于规定的状态以准备收发数据,格式如图3-11所示。
方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次序来区分。
CPU对8251A初始化时先写方式控制字,后写命令控制字。
3) 状态寄存器8251状态寄存器用于寄存8251A的状态信息,供CPU查询,定义如图3-12所示。
TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器空•/CTS•TXE)成立时才置位。
溢出错误:CPU没读走前一个字符,下一个字符又接收到,称为溢出错误。
帧错误:在字符结尾没检测到停止位,称为帧错误。
4) PC机寄存器的端口地址其中:线路控制寄存器第七位:DLAB=0;线路控制寄存器第七位:DLAB=1。
5) 波特率和除数因子对照表实验硬件连接方法:通过计算机点到点三线制串口通信线,掌握接线的方法以及RS-232标准的机械、电气规范。
8251串行通讯实验
师大学数计学院实验报告专业名称 11计科课程微机原理实验名称串行通信实验姓名学号 1107040128251 可编程串行口与PC 机通讯实验一、实验目的(1) 掌握8251 芯片的结构和编程,掌握微机通讯的编制。
(2) 学习有关串行通讯的知识。
(3) 学习 PC 机串口的操作方法。
二、实验说明1、8251 信号线8251 是CPU 与外设或Mode 之间的接口芯片,所以它的信号线分为两组:一组是用于与CPU 接口的信号线,另一组用于与外设或Mode 接口。
(1)与CPU 相连的信号线:除了双向三态数据总线(D7~D0)、读(RD)、写(WR)、片选(CS)之外,还有:RESET:复位。
通常与系统复位相连。
CLK:时钟。
由外部时钟发生器提供。
C/D:控制/数据引脚。
TxRDY:发送器准备好,高电平有效。
TxE:发送器空,高电平有效。
RxRDY:接收器准备好,高电平有效。
SYNDET/BRKDET:同步/中止检测,双功能引脚。
(2)与外设或Mode 相连的信号线:DTR:数据终端准备好,输出,低电平有效。
DSR:数据装置准备好,输入,低电平有效。
RTS:请求发送,输出,低电平有效。
CTS:准许传送,输入,低电平有效。
TxD:发送数据线。
RxD:接收数据线。
TxC:发送时钟,控制发送数据的速率。
RxC:接收时钟,控制接收数据的速率。
2、8251 的初始化编程和状态字8251 是一个可编程的多功能串行通信接口芯片,在使用前必须对它进行初始化编程。
初始化编程包括CPU 写方式控制字和操作命令字到8251 同一控制口,在初始化编程时必须按一定的顺序。
如下面的流程图:三、实验原理图四、实验容本实验由实验器发送一串字符0~9,PC 机串口接收并在超级终端上显示。
五、实验步骤与PC 机通讯应用实验(1)实验连线:a.用串口线把实验机 8251 模块的RS232 通讯口与PC 机相连,把串口旁边的短路块SW1 短路在2-2/3-3 上,SW2 短路在RS232 上。
微机接口 8251串口实验报告
浙江工业大学计算机学院实验报告实验名称 8251串行接口姓名学号班级教师日期一、实验内容与要求1.1 实验内容了解串行通信接口的工作原理和工作过程,掌握编写初始化程序和通信程序的方法。
设计实验电路,编写实验程序,使实现从键盘输入“a”到“z”范围的字母,将其ASCII码加四后串行发送出去,再从串行口接收回来在屏幕上显示(若输入“w”、“x”、“y”、“z”,则分别显示“a”、“b”、“c”、“d”),实现自发自收。
1.2 实验要求(1)具有一定的汇编编程的基础,实验前能根据实验要求画出实验流程图,同时写出其所对应代码;(2)要了解8251A中断控制器的内部结构和外部引脚,理解芯片的工作原理和工作过程。
熟悉8251A芯片的命令字,能对其进行编程;(3)了解8253A定时/计数器,知道如何通过其计数器产生发送和接收时钟;(4)熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(5)连接PC与TPC-USB平台,用微机实验软件运行程序。
在屏幕上显示提示信息“Pleaseinput a letter!”,从键盘输入“a”到“z”范围的字母,将其ASCII码加四后串行发送出去,再从串行口接收回来在屏幕上显示。
若输入“w”“x”、“y”、“z”,则分别显示“a”、“b”、“c”、“d”;若输入Esc,则退出程序。
二、实验原理与硬件连线2.1 实验原理(1)8251A的内部结构:图1 8251的内部结构图发送器:▲发送缓冲器+ 发送移位寄存器+ 发送控制电路。
发送控制电路用来控制和管理发送过程。
在其控制下,发送缓冲器将来自CPU的并行数据串行化,通过TxD发送出去。
▲异步方式:控制电路在数据帧中加上起始、校验和停止位。
▲同步方式:控制电路在数据帧中插入同步字符和校验位。
同步方式发送过程中,两字符间不允许有间隔。
若CPU未及时提供新字符,则控制电路自动补上同步字符。
接收器:▲接收缓冲器+ 接收移位寄存器+ 接收控制电路。
串行接口实验报告
课程实验报告实验名称:串行接口专业班级:学号:姓名:同组人员:指导教师:报告日期:实验二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两种芯片的基本用法,对课本上的知识有了更深入的理解,收获不少。
北理工微机原理实验3
北理工微机原理实验3实验三串行通信一、实验目的1、了解串行通信的基本原理。
2、掌握串行接口芯片8251 的工作原理和编程方法。
2、掌握串行接口芯片8250 的工作原理和编程方法。
3、掌握对串行接口芯片的初始化编程;学会串行通信半双工和全双工的编程技巧。
二、实验内容及步骤1、利用PC 机系统的串行通信接口实现与实验系统的双机通信,PC 机的串行通信接口的端口地址为3F8H,并画出三线连接,七线连线通信接口的连线图,接口为标准RS――232插座。
图1 七线连线通信接口的连线图2、按图1连接好电路,其中8254计数器用于产生8251 的发送和接收时钟,TXD 和RXD 连在九针接口处。
3、接线。
CLK0 /8254 接1M时钟CLK /8251 接1M时钟GATE0 /8254 接+5V0UT0 /8254 接TX/RXCLK /8251 CS /8254 接Y0 /IO 地址CS /8251 接Y7 /IO 地址RXD /8251 接TXD /九针接口TXD /8251 接RXD /九针接口4、8254 计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
5、设串行通信的波特率为1200、偶校验、数据位为7 位、一位停止位,利用查询方式实现单工通信。
要求发送方将任一文件传送到收方,收方收到后将源程序写入磁盘。
分别编写收方和发方的通信程序。
6、上述参数不变,用中断方式实现半双工通信,编写程序。
7、PC 机寄存器的端口地址如下表所示。
PC 机寄存器的端口地址PC 机寄存器的端口地址I/O 端口IN/OUT 3F8* OUT 3F8* IN 3F8** OUT 3F9** OUT 3F9* OUT 3FB OUT 3FA IN 3FC OUT 3FD IN 3FE IN * 线路控制寄存器第七位DLAB=0 ** 线路控制寄存器第七位DLAB=1 波特率和除数因子对照表因子值波特率波特率单位HZ 单位HZ MSB LSB 50 09 00 1800 75 06 00 2000 110 04 17 2400 03 59 3600 150 03 00 4800 600 00 C0 9600 1200 00 60 寄存器名称发送保持寄存器接收数据寄存器波特率因子波特率因子(MSB) 中断允许寄存器线路控制寄存器中断标志寄存器MODEM 控制寄存器线路状态寄存器MODEM 状态寄存器因子值MSB 00 00 00 00 00 00 LSB 40 3A 30 20 18 0C 三、程序实现对于整个程序的实现,可以分为几个步骤。
北理工微机原理与接口技术之8255,8253实验报告
北理工微机原理与接口技术之8255,8253实验报告微机原理与接口技术实验报告———8253可编程定时器8255并行接口实验实验一8255并行接口实验一,实验内容8255的A口作为输入口,与逻辑电平开关相连。
8255的B口作为输出口,与发光二极管相连。
编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
二,实验目的(1)掌握8255的工作原理。
(2)掌握编写8255并行接口初始化及编程实现的方法。
三,实验仪器微机实验教学系统实验箱、8086CPU模块四,实验步骤(1)连线8255的PA0—PA7分别与逻辑电平开关的K1—K8相连?PB0—PB7分别与发光二极管电路的LED1—LED8相连?CS0与8255的片选CS8255相连其它线路均已连好具体如图所示:(2)编辑程序,编译链接后,单步运行,调试程序。
(3)调试通过后,全速运行,观察实验结果。
(4)撰写实验报告。
五,实验源程序如下CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04A6HMOV AX,90H ;写8255的控制字,A组工作在方式0,A口输入,C口高4位输出,B组工作在方式0,B口及C口的低4位均工作在输出OUT DX,AXSTART1:MOV DX,04A0HIN AX,DX ;读取A口数据MOV DX,04A2HOUT DX,AX ;将从A口读取的数据从B口输出,控制LED灯JMP START1CODE ENDSEND START六,实验现象LED灯低电平有效。
当某一开关拨到低电平时,对应的LED灯点亮。
当某一开关拨到高电平时,对应的LED灯熄灭七,思考题1.将片选线接到CS1—CS7;重新编写程序。
CS0对应地址是04A0---O4AF, CS1对应地址是04B0---O4BF.现将片选线接到CS1,重新编程:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04B6H ;CS1对应的地址MOV AX,90HOUT DX,AXSTART1:MOV DX,04B0HIN AX,DXMOV DX,04B2HOUT DX,AXJMP START1CODE ENDSEND START实验现象:如同片选线接到CS02.交换A B接线,A口输出、B口输入;重新编写程序。
微机接口实验
一.实验名称8251A穿行通讯实验二.实验目的1.理解异步串行通信的基本原理2.掌握可编程串行通信接口芯片8251A的工作原理和编程方法三.实验内容RS-232通信实验1.PC机与实验箱通过串口进行通讯,PC机向实验箱发送字符,实验箱上的8251A接收到字符后再原样发回PC机;2.通讯协议自定3.采用查询或中断方式实现四.实验1.硬件连线图2.程序流程图3.程序代码CODE SEGMENT ASSUME CS:CODE START:;8253MOV DX,28BHMOV AL,16HOUT DX,ALMOV DX,288HMOV AX,0DH ;初值13 OUT DX,AL;8251AMOV DX,299HMOV AL,0OUT DX,ALCALL DELAYMOV AL,0OUT DX,ALCALL DELAYMOV AL,0OUT DX,ALCALL DELAYMOV AL,40H ;复位OUT DX,ALCALL DELAYMOV DX,299HMOV AL,4EH ;1停止无奇偶长度8 异步*16OUT DX,ALCALL DELAYMOV DX,299HMOV AL,15H ;复位3个标记RxE TxE 00010101OUT DX,ALCALL DELAYMOV AX,00F0HPUSH AXCLI;set ICW1MOV AL,13H ;00010011 边沿触发单片ic4使用MOV DX,0290HOUT DX,AL;set ICW2MOV AL,0HMOV DX,0291H ;中断类型号对应的首地址0HOUT DX,AL;set ICW4MOV AL,00001101BMOV DX,291HOUT DX,AL;set OCW1MOV AL,11111110BMOV DX,291HOUT DX,ALMOV DX,290HMOV AL,20HOUT DX,AL ;OCW2;inialMOV AX,0 ;编写中断向量表MOV ES,AXMOV DI,0 ;中断类型号SHL DI,1SHL DI,1MOV BX,SEG ISR ;ISR中断服务程序地址段地址MOV AX,OFFSET ISR ;偏移量MOV ES:[DI],AXMOV ES:[DI+2],BX;set 8255A;MOV DX,0283H;MOV AL,80H;OUT DX,ALSTIISR:PUSH AXPUSH DXSTICALL CHAR;ROL ID,1;MOV AL,ID;MOV DX,280HOUT DX,ALPOP DXPOP AXIRETFLAG:JMP FLAGCHAR PROCLOOPS:MOV DX,299H ;状态口MOV DX,299H ;状态口RxRDY:IN AL,DX ;读状态字TEST AL,02JZ RxRDYMOV DX,298HIN AL,DXMOV BL,ALSTATE:MOV DX,299HIN AL,DXTEST AL,01JZ STATEMOV DX,298HMOV AL,BLOUT DX,ALJMP LOOPSCHAR ENDPDELAY PROCMOV CX,02HLOOP $RETDELAY ENDPCODE ENDSEND START五.实验结果如截图所示,由键盘输入的字符经过串口发送出去后又成功接收回来,并显示在窗口中。
北理工微机原理实验3
北理工微机原理实验3实验三串行通信一、实验目的1、了解串行通信的基本原理。
2、掌握串行接口芯片8251 的工作原理和编程方法。
2、掌握串行接口芯片8250 的工作原理和编程方法。
3、掌握对串行接口芯片的初始化编程;学会串行通信半双工和全双工的编程技巧。
二、实验内容及步骤1、利用PC 机系统的串行通信接口实现与实验系统的双机通信,PC 机的串行通信接口的端口地址为3F8H,并画出三线连接,七线连线通信接口的连线图,接口为标准RS�D�D232(25 芯)插座。
图1 七线连线通信接口的连线图2、按图1连接好电路,其中8254计数器用于产生8251 的发送和接收时钟,TXD 和RXD 连在九针接口处。
3、接线。
CLK0 /8254 接 1M时钟CLK /8251 接 1M时钟(系统已连接,不用连接) GATE0/8254 接 +5V 0UT0 /8254 接 TX/RXCLK /8251 CS /8254 接 Y0 /IO 地址CS /8251 接 Y7 /IO 地址RXD /8251 接 TXD /九针接口TXD /8251 接 RXD /九针接口4、8254 计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
5、设串行通信的波特率为 1200、偶校验、数据位为7 位、一位停止位,利用查询方式实现单工通信。
要求发送方将任一文件传送到收方,收方收到后将源程序写入磁盘。
分别编写收方和发方的通信程序。
6、上述参数不变,用中断方式实现半双工通信,编写程序。
7、PC 机寄存器的端口地址如下表所示。
PC 机寄存器的端口地址 PC 机寄存器的端口地址 I/O 端口 IN/OUT 3F8* OUT 3F8* IN 3F8** OUT 3F9** OUT 3F9* OUT 3FB OUT 3FA IN 3FC OUT 3FD IN 3FE IN * 线路控制寄存器第七位 DLAB=0 ** 线路控制寄存器第七位 DLAB=1波特率和除数因子对照表因子值波特率波特率单位 HZ 单位 HZ MSB LSB 50 09 00 1800 75 06 00 2000 110 04 17 2400 134.5 03 59 3600 150 03 00 4800 600 00 C0 9600 1200 00 60 寄存器名称发送保持寄存器接收数据寄存器波特率因子(LSB)波特率因子 (MSB) 中断允许寄存器线路控制寄存器中断标志寄存器 MODEM 控制寄存器线路状态寄存器 MODEM 状态寄存器因子值 MSB 00 00 00 00 00 00 LSB 40 3A 30 20 18 0C 三、程序实现对于整个程序的实现,可以分为几个步骤。
微机原理_8251
8251 串行接口应用实验PB07210249 马运聪PB07210267 李嘉浩实验目的1.掌握8251 的工作方式及应用;2.了解有关串口通讯的知识。
实验设备1. PC机两台2. TD-PITE 实验装置两套实验内容1.数据信号的串行传输实验,循环向串口发送一个数,使用示波器测量TXD 引脚上的波形,以了解串行传输的数据格式。
2.自收自发实验,将3000H 起始的10 个单元中的初始数据发送到串口,然后自接收并保存到4000H 起始的内存单元中。
实验原理1.8251 的基本性能8251 是可编程的串行通信接口,可以管理信号变化范围很大的串行数据通信。
有下列基本性能:1)通过编程,可以工作在同步方式,也可以工作在异步方式;2)同步方式下,波特率为0~64K,异步方式下,波特率为0~19.2K;3)在同步方式时,可以用5~8位来代表字符,内部或外部同步,可自动插入同步字符;4)在异步方式时,也使用5~8位来代表字符,自动为每个数据增加1个启动位,并能够根据编程为每个数据增加1 个、1.5 个或2 个停止位;5)具有奇偶、溢出和帧错误检测能力;6)全双工,双缓冲器发送和接收器。
注意:8251 尽管通过了RS-232 规定的基本控制信号,但并没有提供规定的全部信号。
2.8251的编程对8251 的编程就是对8251 的寄存器的操作,下面分别给出8251 的几个寄存器的格式。
(1)方式控制字方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如下图所示:(2)命令控制字命令控制字用于指定8251 进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。
下图所示的是8251 命令控制字各位的定义。
(3)状态字CPU 通过状态字来了解8251 当前的工作状态,以决定下一步的操作,8251 的状态字如下图:实验步骤1.数据信号的串行传输发送往串口的数据会以串行格式从TXD 引脚输出,编写程序,观察串行输出的格式。
8251串行接口应用实验
① 同步或异步方式下,字符位数5-8个; ② 同步传输率0-64K,异步传输率为0-19.2K; ③ 异步传输时,自动产生1个起始位,编程可产生1个或1个半
或2个停止位; ④ 具有奇偶错、数据丢失和帧错误检测能力; ⑤ 同步方式时,可自动检测,插入同步字符。
1、硬件连线设计 2、分析源程序
注意模式字和控制字的书写流程。
3、波形图各控制位和数据位(波形图1、波形图2)
注意数据位的低位在前,高位在后。
18
六、思考题
1. 8251有几种工作方式,其数据格式如何? 2. 8251对收发时钟有何特殊要求?
19
+5V
系
统 总 OPCLK 线 (1.19MHZ)
5
图1 8251A的内部工作原理 6
图2 8251A 模式寄存器的格式
7
图3 8251A 控制寄存器的格式
8
图4 8251A 状态寄存器的格式
9
图5 8251A 初始化流程
10
三、实验原理介绍
2、系统中的8251芯片介绍 系统中装有一片8251芯片,并和标准RS-232C接
口相连好。在系统中该电路用来完成同PC微机的 联机以及串行监控操作的实现。 端口地址为:
四、实验要求及实验步骤
2、 8251串行接口应用实验步骤:
1)按照实验要求自行设计硬件电路并连线,将8251的输出接 到模拟示波器上;
2)编写实验程序并检查无误,经汇编、连接后装入系统; 3)运行程序,在示波器上观察数据波形并进行分析; 4)改变发送的数据,运行程序,观察相应的波形。
11_8251A串行通信接口实验
4.5 8251A串行通信接口实验4.5.1 实验目的1、了解串行通信的一般原理及RS-232C串行接口标准。
2、了解串行接口芯片8251 A的工作原理和使用方法。
3、掌握串行接口芯片8251A的编程方法。
4.5.2 实验预习要求1、复习串行通信的有关知识。
2、复习8251A的工作原理、控制端口和数据端口的作用、8251A初始化方法等有关内容。
3、预先编写好实验程序。
4.5.3 实验内容1、按图4.5-1连接线路。
图中8251A插在实验台的通用插座D中。
2、编写程序,接收键盘输入的一个字符,将其ASCII码值加1后通过8251A发送出去,再接收回来在屏幕上显示,实现自发自收。
主机传送和接收数据均采用查询方式实现。
1、本实验中8251A的片选信号CS接至I/O地址2B8H~2BFH插孔,因此,8251A的控制口地址为2B9H,数据口地址为2B8H。
8253的片选信号CS接至I/O地址280H~287H插孔,请参阅“4.1 8253可编程定时器/计数器实验”一节。
2、由8253程控产生输出的方波OUT0用来作为8251A的收/发时钟R X C/T X C。
CLK0与实验台提供的1MHz时钟信号相连。
GA TE0接+5V。
CTS必须接低电平,8251A才能向外发送数据。
R X D和T X D 连在一起,使8251A工作于自发自收方式。
3、8253计数器的计数初值=时钟频率/(波特率⨯波特率因子)。
本实验中时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
4、主机发送、接收数据均采用查询方式。
查询方式进行串行通信的基本思路是:CPU循环从控制端口读取状态字,根据当前状态字的有关位来判定是否要接收或发送字符。
5、为了使信息被可靠地写入8251A的控制端口或数据端口,在使用OUT指令向8251A写入信息时,要有一定时间的延迟;在对8251A进行初始化编程以前,应首先使8251A复位,具体初始化流程见教材“8.3.4 8251A初始化编程”一节。
8251可编程串行接口实验
集美大学计算机工程学院实验报告课程名称微机系统与接口技术实验名称实验四8251可编程串行接口实验实验类型设计型姓名学号日期地点成绩教师第1页共8页1. 实验目的及内容 1.1实验目的1、了解8251的内部结构、工作原理及与8086的接口逻辑;2、掌握8251的初始化编程方法,学会使用8251实现设备之间的串行通信。
1.2实验内容1)设计8251与8086CPU 的硬件连接图,分配8251的基地址为0FF00H 。
8251的CLK 引脚需接4MHZ 的时钟。
2)设计8251的硬件连接及编写程序,实现自发自收。
把内存中的字符串,依次传送出去,并接收回来,然后把接收回来的字符显示在LED 上。
使用8253作分频器提供8251的收发时钟,并给出程序流程图。
3)计算你所设计的串行通信的波特率为多少?本次设计实验中,我所设计的通信的波特率为19200,波特率因子为16。
4)设计8251的硬件连接及编写程序,实现从PC 机的串行通信测试软件向8251发送一批数据,8251接收完数据之后,再将数据依次发送回去。
使用8253作分频器提供8251的收发时钟,并给出程序流程图。
2. 实验环境星研电子软件,STAR 系列实验仪一套、PC 机一台、导线若干3. 实验方法8251是通用同步/异步接收发送器,可用作CPU 和串行外设的接口电路,它的工作各种工作方式及工作进程都是用初始化及实时控制实现的,编程时,方式指令紧接在复位后由CPU 写入,用来定义8251A 的一般工作特性;在写入方式指令的前提下由CPU 写入同步字符和命令指令用来指定芯片的实际操作。
根据实验要求,需完成一下两个方面的问题:(1)8253对收发时钟的分频。
8253的CLK 接频率发生器的2MHZ ,初值赋给104,得到收发时钟为19200HZ 。
(2)利用8251实现自发自收。
8251的方式命令字:停止位为1,产生偶校验,字符长度为8位,波特率因子为16位;命令指令字:出错标志复位,允许发送,允许接收。
微机接口实验8251 北工大
8251A 基础实验:一.实验目的:1.了解串行通信的基本原理。
2.掌握可编程串行通信接口芯片8251A的工作原理和编程方法。
二、实验内容:1.异步串行自发自收实验:(1)使用8251A发送固定二进制数在接收回来,将收到的数加1后显示在LED上。
(2)通信协议:异步,波特率为4800bps,波特因子为16,8位数据位,1位停止位,无奇偶校验;(3)采用查询方式实现。
2.RS-232通信实验:(1)PC机与试验箱通过串行进行通信,PC机向实验箱发送字符,实验箱上的8521A接收到字符后再原样发回PC机;(2)通讯协议自定;(3)采用中断方式实现。
三.实验环境1.硬件:GX-8000实验箱,USB电缆,自锁紧导线;2.软件:icode集成开发环境。
四:实验提示1.按键中断实验(1)8251A是一个28管脚的双列直插芯片,插在实验箱的40脚自锁紧通用插座上,实验中需用导线手动连接包括电源、地、数据总线、时钟信号、发送线、接收线在内的所需要的所有线路。
参考连线如图3.18所示。
(2)参考程序流程图如图3.19所示:(3)在对8251A进行初始化操作前必须确保其可靠复位,方法是:向8251A控制口连续写入三个0,然后再写入复位命令字40H。
注意:对8251A的控制口进行一次写操作,需要16个时钟信号的写恢复时间。
参考代码如下:其中,DELAY用于实现延时,其定义如下:(4)在程序设计过程中,可以使用单步调试,通过观察程序运行过程中寄存器值的变化调试程序错误,也可以进一步理解8251A 的控制原理。
(5)程序如下:DATA SEGMENT ;数据段DATA ENDSCODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA START:MOV DX,28BH ;初始化8253MOV AL,00010110BOUT DX,ALMOV DX,288HMOV AX,13OUT DX,ALMOV AL,80H ;初始化8255 MOV DX,283HOUT DX,ALMOV DX,299H;8251A的控制口地址MOV AL,0OUT DX,AL ;想8251A的控制口写0 CALL DELAY;延时MOV AL,0OUT DX,AL;想8251A的控制口写0 CALL DELAYMOV AL,0OUT DX,AL;向8251A的控制口写0 CALL DELAYMOV AL,40H;写复位命令OUT DX,ALCALL DELAYMOV DX,299H ;初始化8251MOV AL,01001110BOUT DX,ALCALL DELAYMOV DX,299HMOV AL,00010111BOUT DX,ALCALL DELAYMOV DI,3000H ;指针初值MOV CX,000AH ;接收数据个数A1:MOV DX,299HIN AL,DX ;TxRDY=1?TEST AL,01HJZ A1MOV DX,298HIN AL,DX ;8251数据口读入数据MOV DX,CXMOV CL,9 ;发送数MOV AL,CLOUT DX,ALMOV DX,299HA2:IN AL,DX ;RxRDY=1?TEST AL,02HJZ A2MOV DX,298HIN AL,DXINC CLMOV DX,280HMOV AL,CLOUT DX,ALJMP A1DELAY PROCMOV CX,02HLOOP $RETDELAY ENDPCODE ENDSEND START2.RS-232通信试验(1)8251A要实现与PC通信,需要通过RS-232模块将TTL电平信号转换为RS-232电平信号。
(8251A)串行接口实验报告
浙江工业大学计算机学院实验报告实验名称定时/计数器(8253)姓名学号班级教师日期 2014.11.2◆实验目的和要求1、了解串行通讯的基本原理。
2、掌握串行接口芯片8251的工作原理和编程方法。
◆实验设备(环境)及要求PC机一台,TPC-USB平台、8253芯片、8251A芯片◆实验内容从键盘输入一个字符,将其ASCII码加1 后串行发送出去,再从串行口接收回来在屏幕上显示,实现自发自收。
收发均采用查询方式。
◆实验步骤1)按图4.1连接好电路,(8251插在通用插座上)。
其中8253计数器用于产生8251的发送和接收时钟,TxD和RxD连在一起。
图示电路8251的控制口地址为2B9H,数据口地址为2B8H。
2、8253计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
图4.1 TPC-USB 平台串行实验连接2)根据流程图4.2,编程并运行,观察实验结果。
开始初始化8253初始化8251显示提示从8251控制口读状态字TxRDY为1吗?从键盘接收字符是ESC吗?将键入字符ASC码加1通过8251数据端口发送字符从8251控制端口读入状态字DxRDY为1吗?从8251数据口接收数据将字符显示在屏幕是ESC吗?YYNYN N 图4.2 TPC-USB 平台串行实验流程◆实验结果在键盘上输入一个字符在屏幕上显示出来,随后即在屏幕上输出一个刚刚输入的数的ASIIC码加1的字符。
◆讨论和分析(1)实验结果分析:在8253、8251A的初始化工作完成以后,读入状态字,检测是否已准备发送字符,确定准备好以后,通过mov ah,01 int 21h语句从键盘上输入一个数字,在执行加1操作以后,通过out dx,al语句将数据发送出去,然后又读入状态字,检测是否已准备接收字符,确定准备好以后,通过mov dx,2B8h in al,dx读入刚刚发送出去的字符,通过mov dl,al mov ah,02 int 21h语句在屏幕上显示刚刚接收的字符,实现自发自收的功能。
实验四 8251 串行通信实验
实验四8251串行通信实验一、实验目的1.了解串行通信的一般原理和8251A的工作原理。
2.初步了解RS-232串行接口标准与TTL电路的连接方法。
3.掌握8251A编程方法。
二、实验内容(1)利用实验机内的8253芯片的分频作为8251的收发时钟频率。
(2)利用实验机内小键盘,每按动一次任意一个数字键,就把该键值通过8251发送给PC 机接收,并在PC机屏幕上显示出该键值。
三、实验接线图(1) TxCLK 和RxCLK 是8251 的发送时钟和接收时钟,由8253 的OUT1提供。
(2) 8251 片选信号CS 由GAL2译码器输出,地址为3F8~3FFH。
(3) CTS 端必须接“0”电平,8251 才可对外发送数据。
(4) RxRDY 和TxRDY 是收、发就绪信号,采用中断方式时可作中断申请信号,本系统采用查询方式通信,这两个信号不用。
四、编程指南本程序是串行发送程序,采用查询方式通信,要完成收发通信实验,需要两台实验仪器,其中1台为串行发送,即运行8251串行通信实验一程序,另一台为串行接收,即运行8251串行通信实验二程序。
实验时,发送机把由键盘输入的数字显示于接收机的显示器上。
(只允许0~F这些数字)仪器对8251的初始化工作在监控程序中已先行完成。
(1)8251状态口地址:03F9H,8251数据口地址:03F8H;(2)8253控制口地址:43H,8253计数器#1口地址:41H;(3)8255控制口地址:0FF23H,字位口:0FF20H,键入口PC:0FF22H,字形口PB:0FF21H;(4)通讯约定:异步方式,字符8位,一个起始位,一个停止位,波特率因子为16,波特率为9600;(5)计算T/RXC,收发时钟fc,fc=16*9600=153.6K;(6)8253分频系数:1843.2K / 153.6K=12。
五、实验步骤1.准备好2 台实验仪器,确定1#机发送,2#机接收。
8251实验报告
8251实验报告8251实验报告引言:在计算机科学领域,串行通信是一种常见的数据传输方式。
为了实现串行通信,我们需要使用串行通信接口芯片。
8251是一种常用的串行通信接口芯片,本实验旨在通过对8251的实验研究,深入了解串行通信的原理和应用。
一、实验目的本实验的主要目的是掌握8251的工作原理和使用方法,了解串行通信的基本概念和应用场景。
二、实验原理8251是一种通用的串行通信接口芯片,它可以实现计算机与外部设备之间的串行数据传输。
该芯片具有发送和接收两个功能模块,通过与计算机的接口进行数据交换,实现串行通信的功能。
三、实验步骤1. 连接实验所需设备:将8251芯片与计算机、外部设备进行连接,确保电路连接正确无误。
2. 配置8251芯片:通过设置芯片的控制寄存器,配置芯片的工作模式和参数。
3. 编写测试程序:使用汇编语言编写测试程序,通过向8251芯片发送数据,观察数据的接收情况。
4. 运行测试程序:将编写好的测试程序加载到计算机中,运行程序并观察结果。
5. 分析实验结果:根据实验结果,分析8251芯片的工作状态和数据传输情况。
四、实验结果与分析经过实验测试,我们可以观察到数据的发送和接收情况。
通过分析实验结果,我们可以了解到8251芯片的工作状态和数据传输的效果。
如果数据能够正确发送和接收,说明8251芯片的工作正常;如果数据发送或接收出现错误,可能是芯片配置错误或者电路连接有问题。
五、实验总结通过本次实验,我们深入了解了8251芯片的工作原理和使用方法,掌握了串行通信的基本概念和应用场景。
实验过程中,我们遇到了一些问题,但通过分析和解决,最终成功完成了实验目标。
通过实验,我们不仅提高了对8251芯片的理解,还加深了对串行通信的认识。
六、实验改进在实验过程中,我们发现一些可以改进的地方。
首先,我们可以尝试使用不同的测试程序,测试不同的数据传输情况,以获得更全面的实验结果。
其次,我们可以进一步研究8251芯片的高级功能和应用,拓展实验的深度和广度。
微机接口实验讲义-附录
附录一可编程串行通信接口8251A8251A是美国Inter公司的产品,它是8251的改进型。
具有同步、异步接收或发送(USART)功能,使用单一+5V电源和单相时钟,双列直插28脚封装形式。
(一)8251A的基本性能1.可以工作在同步或异步方式下,两种方式下的字符位数5-8个;2.同步方式时传输速率可达0-64K,异步方式时传输速率可达0-19.2K;3.异步传输时,可自动产生一个起始位,程控产生1个、1.5个、2个停止位;4.具有奇偶错、数据丢失和帧错误和检测能力;5.同步方式时,可自动检测,插入同步字符。
(二)8251A内部结构8251A内部结构框图如图9-22所示。
它共由7个方框组成,即接收缓冲器、接收控制电路、发送缓冲器、发送控制电路、调制/解调控制电路、读/写控制逻辑和数据总线缓冲器。
图9-22 8251A内部结构原理图1.数据总线缓冲器这是8251A与CPU之间的一条数据通道,来自CPU的各种控制命令和待发送的字符信息经该通道到达8251A的内部,由8251A从发送设备处接收到的各种字符信息经该通道到达CPU的内部。
2.读/写控制逻辑电路它是接收来自CPU的各种控制信息,从而确定本次操作的方式。
如果WR=0,表示CPU向8251A写入数据或控制字;如果RD=0,表示CPU读取8251A的数据信息或状态信息;而C/D 则表示读写对象是8251A内部的控制/数据寄存器,C/D=1表示对控制寄存器操作,C/D=0表示对数据寄存器操作;CLK是时钟信号,提供给8251A作为内部定时器使用,RESTE则是使8251A处于空闲状态。
总之,读/写控制逻辑电路提供的各种信号的组合,构成了8251A操作命令。
3.调制/解调控制电路当计算机进行远程通信时,要用调制器将串行接口送来的数字信号变成模拟信号,再通过电话线发送出去。
接收器则是将接受到的模拟信号经解调器变成数字信号,再由串行接口送入计算机。
在全双工通信情况下,每个收发站都需连接调制/解调器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北理工微机原理实验三--使用8251A的串行接口应用实验本科实验报告实验名称:实验三使用8251A的串行接口应用实验课程名称:计算机原理与应用实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:1. 实验目的1) 掌握串行通信原理及半双工和全双工的编程方法;2) 掌握用8251A接口芯片实现微机间的同步和异步通信;3) 掌握8251A芯片与微机的接口技术和编程方法。
2. 实验原理和内容8251A是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。
1) 8251A内部结构8251A通过引脚D0~D7和系统数据总线直接接口,用于和CPU传递命令、数据、状态信息。
读写控制逻辑用来接收CPU的控制信号、控制数据传送方向。
CPU对8251A的读写操作控制表如表3-4所示。
表3-4 CPU对8251A的读写操作控制表2) 8251A的方式控制字和命令控制字方式控制字确定8251A的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长度及波特率等,格式如图3-10所示。
命令控制字使8251A处于规定的状态以准备收发数据,格式如图3-11所示。
方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次序来区分。
CPU对8251A初始化时先写方式控制字,后写命令控制字。
3) 状态寄存器8251状态寄存器用于寄存8251A的状态信息,供CPU查询,定义如图3-12所示。
TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器空•/CTS•TXE)成立时才置位。
溢出错误:CPU没读走前一个字符,下一个字符又接收到,称为溢出错误。
帧错误:在字符结尾没检测到停止位,称为帧错误。
4) PC机寄存器的端口地址其中:线路控制寄存器第七位:DLAB=0;线路控制寄存器第七位:DLAB=1。
5) 波特率和除数因子对照表实验硬件连接方法:通过计算机点到点三线制串口通信线,掌握接线的方法以及RS-232标准的机械、电气规范。
3. 实验连接方法按图连接好电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。
1) 8254/CLK0连接时钟/1MHz;2) 8254/CS连接I/O译码/Y0(280H---287H);3) 8254/OUT0连接8251/TX/RXCLK;4) 8254/GATE0连接+5V;5) 8251/TXD连接8251/RXD;6) 8251/CS连接I/O译码/Y7(2B8H---2BFH。
4. 编程提示8251的控制口地址为2B9H,数据口地址为2B8H。
8254计数器的计数初值=时钟频率/(波特率X 波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子16,则计数器初值52。
1MHz = 1000000Hz基于8251芯片实现异步串行通信一般有两种方式,一种是查询方式,另一种是中断方式,使用哪种方式取决于进行初始化时寄存器的设置。
8254 计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
本实验采用8251A异步方式发送,利用8086汇编语言实验计算机点到点的串口通信,设置:波特率为1200bps、数据位7位、停止位1位、偶校验方式,利用查询方式或中断方式实现双机通信,能够传输多个字符。
程序具体设计如下:1) 基础型实验:从键盘输入一个文件或打开已有的文件发送出去,再接收回来在屏幕上显示,实现自发自收。
2) 提高型实验:设计发送方和接收方两个程序,要求将某汇编语言传送到接收方,接收方收到后将源程序写入指定磁盘或屏幕显示。
5. 实验代码发送端代码:STACK SEGMENT PARA STACKD B 256 DUP(0)STACK ENDSCODE SEGMENTA SSUME CS:CODE,SS:STACKSTART:M OV DX,3FBH 线路控制寄存器M OV AX,80H 10000000B,DLAB=1,数据位,停止位,校验位,波特率因子O UT DX,ALM OV DX,3F8H 波特率寄存器(低)M OV AX,60H 查表O UT DX,ALM OV DX,3F9H 波特率寄存器(高)M OV AX,0 查表O UT DX,ALM OV DX,3FBH 线路控制寄存器M OV AX,0AH 00001010B,DLAB=0O UT DX,ALM OV DX,3FCH; 调制解调器控制寄存器M OV AX,03H 00000011B,OUT1,2均输出1,请求发送,数据已就绪O UT DX,ALM OV DX,3F9H 中断允许寄存器M OV AX,0 各种中断全部禁止O UT DX,ALFOREVER:用死循环不断检测8251状态M OV DX,3FDH ;从线路状态寄存器读状态I N AL,DXT EST AL,1EH 死记J NZ ERROR ;传输线状态寄存器全部都是0T EST AL,01H 00000001B,检测接收缓存寄存器是否有数据J NZ RECEIVE 可以收了T EST AL,20H 00100000B,检测发送保持寄存器是否为空J NZ SEND 可以发了J MP FOREVERSEND:MOV AH,1I NT 16HJ Z FOREVER 可以发但是未接收到键盘字符收到了M OV AH,0I NT 16H 输入读入ALM OV DX,3F8H 扔进(对于发送端是)发送保持寄存器,发出O UT DX,ALC MP AL,03HJ E DONEM OV DL,ALM OV AH,02HI NT 21H 显示发送的字符C MP AL,0DH 00001101BJ NZ FOREVERM OV DL,0AHM OV AH,02H I NT 21HJ MP FOREVERRECEIVE:M OV DX,3F8H I N AL,DXA ND AL,7FHC MP AL,03H; J Z DONEM OV DL,ALM OV AH,02H I NT 21HC MP AL,0DHJ NZ FOREVER M OV DL,0AH M OV AH,02H I NT 21HJ MP FOREVER ERROR:M OV DX,3F8HI N AL,DXM OV DL,0AHM OV AH,02HI NT 21HJ MP FOREVERDONE:M OV AH,4CHI NT 21HCODE ENDSEND STAR接收端代码:DATA SEGMENTIO8254A EQU 280HIO8251A EQU 2B8HIO8251B EQU 2B9HDATA ENDSSTACK SEGMENT PARA STACKD B 256 DUP(0)STACK ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:M OV AX,DATAM OV DS,AXM OV DX,IO8254A+3M OV AL,00010110B ;设置8254计数器0工作方式O UT DX,ALM OV DX,IO8254AM OV AL,52 ;给8254计数器0送初值O UT DX,ALM OV DX,IO8251B ;对8251进行初始化M OV AX,0M OV CX,3reset8251:O UT DX,ALP USH CXM OV CX,40H ;向8251控制端口送40H,使其复位L OOP $P OP CXL OOP reset8251M OV AL,40HO UT DX,ALM OV CX,40HL OOP $M OV AL,5AHO UT DX,ALM OV AL,27HO UT DX,ALFOREVER:M OV DX,IO8251B ;从线路状态寄存器读状态I N AL,DXT EST AL,38H ;检测是否为00111000J NZ ERROR ;传输线状态寄存器全部都是0T EST AL,02H ;检测接受数据是否准备好了J NZ RECEIVE ;等于0则表示数据没有准备好T EST AL,01H ;数据没有准备好J NZ send ;没有,则跳转等待J MP FOREVERsend:M OV AH,1 ;检测键盘按下I NT 16HJ Z FOREVER ;有键盘按下M OV AH,0 ;读键盘I NT 16HM OV DX,IO8251A ;将键盘的数据输出发送到缓冲器O UT DX,ALC MP AL,03HJ Z DONEM OV AH,02HI NT 21HC MP AL,0DHJ NZ FOREVERM OV DL,0AHM OV AH,02HI NT 21HJ MP FOREVERRECEIVE:M OV DX,IO8251A ;接收数据I N AL,DXA ND AL,7FH ;最高位为停止位C MP AL,03H;J Z DONEM OV DL,ALM OV AH,02HI NT 21HC MP AL,0DHJ NZ FOREVERM OV DL,0AHI NT 21HJ MP FOREVERC MP AL,0DHJ NZ FOREVER ERROR:M OV DX,IO8251A I N AL,DXM OV DL,'?'M OV AH,02HI NT 21HJ MP FOREVER DONE:M OV AH,4CHI NT 21HCODE ENDS END START。