8251实验
接口实验报告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信号区分;状态端口只能读不能写,控制端口只能写不能读。
深圳大学8251串行接口应用实验

深圳大学实验报告课程名称:微型计算机技术及应用实验名称:8251串行接口应用实验学院:信息工程学院专业:班级:组号:指导教师:报告人:学号:实验地点实验时间:2010 年12 月23 日星期五实验报告提交时间:2011.01.07D2D3RxDGNDD4D5D6D7 TxC# WR#CS# C/D#RD# RxRDYD0D1VccRxC#DTR#RTS#DSR#RESETCLKTxDTxECTS#SYNDET/BDTxRDY11428158251图4.37 8251外部引脚图3. 8251在异步方式下的TXD信号上的数据传输格式图4.38示意了8251工作在异步方式下的TXD信号上的数据传输格式。
数据位与停止位的位数可以由编程指定。
TXD 发送器输出启动位数据位校验位停止位由8251产生D0D1···Dn图4.38 8251工作在异步方式下TXD信号的数据传输格式4. 8251的编程对8251的编程就是对8251的寄存器的操作,下面分别给出8251的几个寄存器的格式。
(1)方式控制字方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4.39所示。
(2)命令控制字命令控制字用于指定8251进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。
图4.40所示的是8251命令控制字各位的定义。
图4.40 8251命令控制字格式(3)状态字CPU 通过状态字来了解8251当前的工作状态,以决定下一步的操作,8251的状态字如图4.41所示。
图4.41 8251状态字格式(4)系统初始化8251的初始化和操作流程如图4.42所示。
系统RESET 初始化输入方式指令异步?输入第1个同步字符1个同步字符?输入第2个同步字符输入命令指令复位?传送数据完成?YYYYNN NN图4.42 8251初始化流程图5. 8251实验单元电路图11。
实验十8251实验

实验十8251实验实验十8251串口实验一、实验目的1.了解串行通讯的基本原理。
2.掌握串行接口芯片8251的工作原理和编程方法。
二、实验内容双机通讯实验,使用两台实验装置,一台为发送机,一台为接收机,进行两机间的串行通讯,实验步骤如下:1.按图1连接好电路,其中8254计数器如图2,用于产生8251的发送和接收时钟,TXD 和RXD连在一起。
图1 双机通讯连接图图2 发送、接收时钟连接图波特率因子若选16,计数器2初值为12。
则波特率=1.8432MHZ/12/16=9600bps2.编程:在发送机3000H~3009H 内存单元写入ASCII 值:30,31,32,33,34,35,36,37,38,39 共10 个数。
将这10个数发送给接收机后显示在屏幕上,收发采用查询方式。
三、程序流程8251的初始化流程图四、程序代接收机的代码:M8251_DATA E QU 0600HM8251_CON EQU 0602HM8254_2 EQU 06C4HM8254_CON EQU 06C6HSSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL, 0B6H ;初始化8254 MOV DX, M8254_CONOUT DX, ALMOV AL, 0CHMOV DX, M8254_2OUT DX, ALMOV AL, 00HOUT DX, ALCLIMOV AL, 00H ;复位8251子程序MOV DX, M8251_CONOUT DX, ALMOV AL, 40HOUT DX, ALMOV AL, 7EH ;方式字MOV DX, M8251_CONOUT DX, ALMOV AL, 34HOUT DX, ALMOV AX, 0152H ;输出显示字符'R' INT 10HMOV DI, 3000HMOV CX, 000AHA1: IN AL, DXAND AL, 02HJZ A1MOV DX, M8251_DA TAIN AL, DXAND AL, 7FH ;数据是否出错MOV [DI],ALINC DILOOP A1MOV AL, 00HMOV SI, 300AHMOV [SI], ALMOV AH, 06HMOV BX, 3000HINT 10H ;输出显示接收到的数据STIA2: JMP A2A3: PUSH AXPOP AXLOOP A3POP CXRETCODE ENDSEND START发送机的代码:;发送机M8251_DATA E QU 0600HM8251_CON EQU 0602HM8254_2 EQU 06C4HM8254_CON EQU 06C6H SSTACK SEGMENT STACK DW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL, 0B6H ;初始化8254, 得到收发时钟MOV DX, M8254_CONOUT DX, ALMOV AL, 0CHMOV DX, M8254_2OUT DX, ALMOV AL, 00H ;复位8251子程序MOV DX, M8251_CONOUT DX, ALMOV AL, 40HOUT DX, ALMOV AL, 07EH ;01111110 (波特率x16)MOV DX, M8251_CONOUT DX, AL ;8251方式字MOV AL, 34H ;31HOUT DX, AL ;8251控制字MOV DI, 3000HMOV CX, 000AHA1: MOV AL, [DI] ;给地址PUSH DXPUSH AXMOV AL, 31H ;操作MOV DX, M8251_CONOUT DX, AL ;发送MOV DX, M8251_DA TAPOP AXOUT DX, ALMOV DX, M8251_CONINC DILOOP A1A2: JMP A2A4: PUSH AXPOP AXLOOP A4POP CXRETA3: IN AL, DXAND AL, 01H ;测试TxE TxRDYJZ A3 ;等待POP DXRETCODE ENDSEND START在此次实验中,实验箱的连线经反复检查后并没有出现问题,后排除可能是远距离连线的接触不良造成了实验中,接收机已知在等待,发送机的数据一直无法传送的问题。
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单片机测量电压实验报告

程序整体上分为三个部分:键盘输入部分:AD 转换部分:AD 转换共有两种触发方式:执行HSO 的0F 通道命令或者向A/D 命令寄存器的GO 位写一个1,本程序采用后者,并将结果保存在0C00AH-0C00DH 中。
LED 显示部分:AD 转换后的结果为2进制数,转换完以后要先转换成BCD 码,再将BCD 码转换成相应的LED 代码,然后对4个LED 进行扫描显示。
程序清单:CPU 80C196KBAX EQU 20HAL EQU 20HAH EQU 21HBX EQU 22HBL EQU 22HBH EQU 23HCX EQU 24HCL EQU 24HCH EQU 25HDL EQU 26HDH EQU 27HEX EQU 28HEL EQU 28HEH EQU 29HFX EQU 2AHFL EQU 2AHFH EQU 2BHPA8255 EQU 0BF00H ;8255的PA口地址PB8255 EQU 0BF02H ;8255的PB口地址PC8255 EQU 0BF04H ;8255的PC口地址C8255 EQU 0BF06H ;8255的控制字地址HSIRES EQU 0C00AH ;频率或AD计算结果(二进制)存放地址为0C00AH-0C00DH (4字节).HSIRESH EQU 0C00CHBCD EQU 0C00EH ;BCD码存放地址为0C00EH-0C013H (6字节). TABLE EQU 0C014H ;段码存放地址为0C014H-0C01BH (8字节);**********变量************ADSEL EQU 50H ;AD转换通道选择变量LEDSEL EQU 4FH ;LED扫描显示位选变量DT EQU 4CH ;延时系数CHANNAL EQU 4BH ;显示通道号TSP EQU 48H ;TSP地址不能为4AHSP1 EQU 46H ;段码查找时的段码地址偏移量HSISEL EQU 45H ;HSI通道选择变量HSISELAA EQU 44H ;显示清零的时间延时系数;TEMPH EQU 43H ;TEMP EQU 42H ;HSI中T1与T2之间的时间差SIGNAL EQU 41H ;HSI中断次数标志COUNT1 EQU 32H ;T1与T2之间的定时器1溢出次数COUNT2 EQU 30H ;B/BCD转换中十进制结果位数记录变量LOOPK EQU 2EH ;循环显示功能开动标志C EQU 2DH ;循环显示时的时间间隔计数器ADKEY EQU 2CH ;AD转换开关标志ORG 2000H ;定义定时器1中服程序首地址DW 3500HORG 2004H ;定义HSI中服程序首地址DW 3600H;**********初始化**********ORG 2080HLD SP,#00C0H ;设堆栈指针首地址LD AX,#C8255 ;8255初始化.LDB BL,#10000010B ;A,B,C口均工作在方式0, B口做输入,A,C口做输出。
8251串口实验:自发自收

;*************** 8251串口实验:自发自收***************;** 连接译码控制单元的扁平线。
连接RXD和TXD;CLK、T/RXC分别和分频单元的T0、T6;*** 连接后,可以进行本实验。
;******************************************************cs8251c equ 8801h ;8251控制口定义cs8251d equ 8800h ;8251数据口定义;=========================================code segmentassume cs:codeorg 1000hstart: mov dx,cs8251c ;指向8251控制口mov al,4eh ;方式字,1个停止位;传输字符长度为8位;异步*16out dx,al ;写入方式字mov al,25h ;命令字,使/RTS输出0;发送断点字符,使TXD为0;TXEN为1允许发送out dx,al ;写入命令字mov al,01hmov bx,0400hmov [bx],alsr0: mov si,4000h ;设置源地址mov di,5000h ;设置目的地址mov cx,0010h ;设置发送字符长度指针sr1: mov ah,[si] ;从源地址中取第一个数据call send ;调用发送子程序call rx ;调用接收子程序mov [di],ah ;接收到的数据存目的地址inc si ;源地址加1inc di ;目的地址加1loop sr1 ;发送字符长度指针不为0,继续发送jmp $;********** 接收子程序**********rx: mov dx,cs8251c ;指向8251控制口rx1: in al,dx ;读状态寄存器test al,02h ;判断是否可以接收;忙,则继续等待jz rx1mov dx,cs8251d ;指向8251数据口in al,dx ;读回发送的数据mov ah,al ;保存读回的数据ret;********** 发送子程序**********send: mov dx,cs8251c ;指向8251控制口w1: in al,dx ;读状态寄存器test al,01h ;判断是否可以发送;忙,则继续等待jz w1mov dx,cs8251d ;指向8251数据口mov al,ah ;取发送数据out dx,al ;发送数据到数据线ret;********************************code endsend start。
8251串行通信实验

8251 串行通信实验一、实验目的1.掌握 8251 串行通讯方式的硬件接口电路及软件编程设计二、实验设备PC机器一台, TDN86/88+教学实验系统一台。
三、实验原理 :本实验需用两台 TDN-86/51(TDN86/88)教学实验系统,并通过排线将两台仪器相连,其中 1 号机用做接收机, 2 号机用做发送机。
实验目的是将 2 号机中的3000-3009H 十个单元中的代码传送到 1 号机的 3000-3009H 单元中。
硬件连接线路图1.8251 的基本性能8251 是可编程的串行通信接口,可以管理信号变化范围很大的串行数据通信。
有下列基本性能 :(1)通过编程,可以工作在同步方式,也可以工作在异步方式。
(2)同步方式下,波特率为 0,64K,异步方式下,波特率为 0,19.2K 。
(3)在同步方式时,可以用 5,8 位来代表字符,内部或外部同步,可自动插入同步字符。
(4) 在异步方式时,也使用5,8位来代表字符,自动为每个数据增加 1 个启动位,并能够根据编程为每个数据增加 1 个、 1.5个或2 个停止位。
(5)具有奇偶、溢出和帧错误检测能力。
(6)全双工,双缓冲器发送和接收器。
2.8251 的内部结构及外部引脚8251 的内部结构图如图1-1 所示,可以看出, 8251 有 7 个主要部分,即数据总线缓冲器、读 / 写控制逻辑电路、调制 / 解调控制电路、发送缓冲器、发送控制电路、接收缓冲器和接收控制电路,图中还标识出了每个部分对外的引脚。
8251 的外部引脚如图1-2 所示,共 28 个引脚,每个引脚信号的输入输出方式如图中的箭头方向所示。
D7,D0 数据总线发送并 ?串 TxD缓冲器缓冲器转换TxRDRESETY发送控制电路 TxECLK读/ 写控制 TxCC/D#逻辑电路 RD#WR#接收串 ?并 RxD内部总线缓冲器转换CS#DSR#RxRDYDTR#调制 / 解调 RxC接收控制电路控制电路CTS#SYNDETRTS#图 1-1 8251 内部结构图D2128D0D3D1RxDVccGNDRxC#D4DTR#D5RTS#8251D6DSR#D7RESETTxC#CLKWR#TxDCS #TxEC/D#CTS#RD#SYNDET/BD1RxRDY14TxRDY5图 1-2 8251 外部引脚图3.8251 在异步方式下的 TXD信号上的数据传输格式图 1-3 示意了 8251 工作在异步方式下的 TXD信号上的数据传输格式。
北工大微机原理 实验六 8251串行通信实验

实验六串行通信实验8251一、实验目的:1、进一步了解串行通信的基本原理2、掌握串行接口芯片8251的工作原理和编程方法二、实验内容:1、按图连接线路。
2、从键盘输入一个字符,将其ASCLL码加1后发送出去,再接收回来在屏幕上加1 后的字符显示出来,实现自发自收。
三、实验设备:8251芯片 8253芯片试验箱若干导线四、实验原理:根据引脚号按下图在试验箱上正确连接好电路五.程序代码:data segmentioport equ 5400h-280hio8253a equ ioport+280hio8253b equ ioport+283hio8251a equ ioport+2b8hio8251b equ ioport+2b9hap1 db 'you can play a key on the keybord!',0dh,0ah,24hap2 dd ap1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置8253计数器0工作方式mov al,16hout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251xor al,almov cx,03 ;向8251控制端口送3个0delay: call outloop delaymov al,40h ;向8251控制端口送40H,使其复位call outmov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call outmov al,27h ;向8251送控制字允许其发送和接收call outlds dx,ap2 ;显示提示信息mov ah,09int 21hwait: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz waitmov ah,01 ;是,从键盘上读一字符int 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251ainc alout dx,al ;发送mov cx,0F00hkd1: loop kd1 ;延时next:mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz next ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上 int 21hjmp waitexit: mov ah,4ch ;退出int 21hout proc near ;向外发送一字节的子程序 out dx,alpush cxmov cx,0F00hkd2: loop kd2 ;延时pop cxretout endpcode endsend start六、实验结果:将程序进行汇编,连接,运行后,从键盘输入字母或者数字,屏幕上显示这个字母或数字和这个数字的ASCⅡ加一后的字母或数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江工业大学计算机学院实验报告四实验名称 8251实验教师雷艳静日期 2014.12.18一、实验内容与要求1.1 实验内容从键盘输入一个字符,将其ASCII码加3后串行发送出去,再从串行口接收回来在屏幕上显示,实现自发自收。
将输入的字符ASCII码加3输出,假设输入的字符是A,那么加3后输出的就是D,以此类推,可以得出如1.1表:表1.1要注意的是输出到Z结束之后,A,B,C三个字母没有输出,所以此处实验应该循环到字母表开始,将A,B,C输出。
1.2 实验要求实验效果:(1)从键盘上随意输出一个字母,将其ASCII码加3后显示在屏幕上;(2)大小写要一致;(3)输入输出的字母要与表1.1一样;(4)由8253A计数器产生发送和接收时钟;由8251A的芯片功能实现自发自收。
(5)8253A的计数初值设为52,计数器0。
8251A的发送数据是1个停止位,8个数据位,波特率因子为16。
二、实验原理与硬件连线2.1 实验原理TCP-USB平台上有一块8251A串行接口芯片。
它是一种可编程的通用同步/异步接收发送器,其基本性能如下:①可以工作在同步或异步串行通信方式。
工作在同步方式时,波特率为0~64Kbout/s。
工作在异步方式时,波特率为0~19.2Kbout/s。
②具有独立的发送器和接收器,能以单工、半双工和全双工方式进行通信。
③同步方式时,字符可选择为5~8位,可用内、外同步,自动插入同步字符。
④异步方式时,字符可选择5~8位,波特率因子可选为1、16、64.⑤提供基本的控制信号,可方便的与Modem相连。
8251A的内部组成中有发送器和接收器。
它们可以发生/接收控制电路和管理所有的发送/接收操作。
数据总线缓冲器可以使8251A与CPU之间传送数据、状态和控制信息。
读写控制逻辑可以接收CPU送来的控制信号。
8251A的外部引脚包括发送引脚、接收引脚,读写控制逻辑引脚。
发送引脚用来发送数据,接收引脚用来接收外部数据。
读写控制逻辑来控制数据的读写,这里时钟信号输入端在异步和同步两种方式的下频率的大小与波特率会有变化。
上面是8251A的硬件结构功能,通过对8251A的初始化编程,可以进行各种应用。
8251A的控制字:①方式控制字,用来决定8251A工作在同步还是异步方式,以及数据格式。
②操作命令字,可是8251A工作在规定的状态。
③状态字,放在8251A的状态寄存器中,可由CPU读出。
2.2 硬件连线实验中需要将8251A的方式控制字,操作命令字送到控制端口,要连接8251A芯片的端口,8251A的复位信号连接实验板上的复位信号。
而实验中要8253计数器用于产生8251的发送和接收时钟,所以连接的端口是280H~287H,发送器也要相应的连接到8253的OUT端。
8253芯片的时钟控制端也要与8251的时钟控制端相连。
电路8251的控制口地址为2B9H,数据口地址为2B8H。
8253计数器的计数初值=时钟频率/(波特率*波特率因子),这里的时钟频率为1MHz,波特率若选1200,波特率因子若选为16,则计数器初值为52。
8253的GATE端输入高电平(高电平有效)。
8251的VCC 接高电平,GND、CTS两端接地。
硬件连接图如图2.2图2.2三、设计思路、步骤和程序流程图3.1 设计思路①首先写好数据项,将数据项送ds保存,然后设置8253A计数器0和工作方式送8253端口b(即283H)保存。
给8253计数器0送初值,计数器初值为52,8253A初始化完成。
②初始化8251,8251端口b(即2B9H)送dx保存。
将al清0,以便之后数据送入。
向8251控制端口送3个0,完成8251初始化。
③写8251的发送程序:首先向8251控制端口送40H,使其复位。
设置停止位,数据位,波特率因子。
由实验要求可知设置为1个停止位,8个数据位,波特率因子为16。
④向8251发送控制字允许其发送和接收,调用子程序out发送数据。
显示提示信息。
(这里lds指令是从存储器取出32位地址.),out子程序:向外发送字节的子程序⑤发送程序:从8251端口b读取设备状态。
利用test指令检测发送是否准备好。
(测试第0位是否为1,为1则从键盘上读取一个字符。
否,则跳转进行test指令继续测试。
这里从键盘上读入的字符的ASCII码和27(27是ESC的ASCII码)比较,如果相等,则跳出。
如果不是,则将字符加3之后与5ah(Z的ASCII码)比较,如果相等,则跳转到子程序ll,如果不是则字符的ASCII码减26,然后跳转ll子程序,然后发送该字符。
这里ll子程序是将字符送al保存,然后输出。
⑥因为发送需要一段时间,所以这里添加一段延时程序。
⑦接收程序:从5251端口b读取发送的字符。
用test指令检测接收是否准备好,如果没有,跳回继续检测。
准备好,从8251端口a接收。
接收到后保存在al中调用2号功能,将接收到的字符显示在屏幕上。
跳回发送程序。
⑧退出程序。
3.2 实验步骤①仔细阅读实验内容和预期所要达到的执行效果。
参考8253A芯片的各种工作方式和计数器功能。
8251的发送和接收功能,控制字等内容,然后根据实验内容写自发自收功能程序。
②熟悉各个硬件连接方式与8253A和8251芯片的连接。
③根据设计思路写好程序流程图,根据流程图编程。
编程过程中可以根据程序适当的修改程序流程图。
④运行并观察实验结果,看是否与实验内容,预期效果一致,如果一致,实验完成。
如果不一致,修改程序并再次运行。
⑤根据得到的实验结果了解8251芯片可以实现的各种功能,并考虑它可以实现其他功能3.3 程序流程图如图3.3开始初始化8253A初始化8251显示提示信息从8251控制口读状态字测试第0位是否为1是,从键盘接收字符是,结束是否ESC将键入的字符ASCII码加3是Z的ASCII5ah吗不是,减去26通过8251数据端口发送字符延时,发送字符从8251控制端口读入状态字接收器是否为1准备好是,从8251数据口接收数据将字符显示在屏幕上四、程序清单与执行结果4.1 程序清单data segmentmess db 'you can play a key on the keybord!',0dh,0ah,24hdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,283h ;设置8253计数器0工作方式mov al,16hout dx,almov dx,280hmov al,52 ;给8253计数器0送初值out dx,almov dx,2b9h ;初始化8251xor al,almov cx,03 ;向8251控制端口送3个0delay: call out1loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1mov al,27h ;向8251送控制字允许其发送和接收call out1mov dx,offset mess ;显示提示信息mov ah,09int 21hwaiti: mov dx,2b9hin al,dxtest al,01 ;发送是否准备好jz waitimov ah,01 ;是,从键盘上读一字符int 21hcmp al,27 ;若为ESC,结束jz exitadd al,03hcmp al,5ahjl llsub al,26jmp llout dx,al ;发送mov cx,40hll: mov dx,2b8hout dx,als51: loop s51 ;延时next: mov dx,2b9hin al,dxtest al,02 ;检查接收是否准备好jz next ;没有,等待mov dx,2b8hin al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout proc near ;向外发送一字节的子程序out dx,alpush cxmov cx,40hgg: loop gg ;延时pop cxretjmp startout1 endpcode endsend start4.2 执行结果执行后的结果要与表1.1字母对应一致。
如下图4.2五、程序调试说明和实验感想5.1 调试说明这次实验的代码有很多问题。
首先,这次代码有几个子程序,在写代码之前没有理清楚,所以反反复复不知道应该从哪儿开始写。
完成之后忘记测试接收器是否准备好接收,所以程序不断出错。
通过向别人请教后发现要先测试。
读入字符后也要先检查是否是ESC键,这里比较的是ASCII码,但是字符每次加3后计算结果需要经过ASCII 码转换,大小写的ASCII码不一样,所以后面加减的数值是不一样的,所以这里转换调试出了很多问题,最后查清楚了字母表的ASCII码转换值才写出来,还有就是这里不能调用INT 21H的9号功能,因为9号功能输出的是字符串,而我们这里显示输出的是字符。
5.2 实验感想与收获8251A作为串行通信接口,时序是非常重要的,输入输出之间的时间差必须控制得合适,否则就不能正常收发,这可以通过软件编程实现,当时序不符合时,可插入等待时间,即软件延时。
仔细了解异步通信和同步通信的不同功能,这样才能加深8251A芯片的功能。
5.3 实验特色前面的8251A的初始化程序应该和大家的都差不多,最主要不同的是就是大家字母显示比较输出的是小写字母,而我的是大写字母,当然这里的不同仅仅是加减数值的不同而已,因为大小写的ASCII码不一样,解题思路和过程其实都是一样的,只是显示的时候有点变化而已。
5.4 展望这里的实验是根据8251A的串行自发自收的形式进行的,如果有时间的时候希望可以实验接收器和发送器分开来做,然后增加一些其他功能,如可以用到8255A的锁存器和缓冲器功能,发送器发送的时候可以检测接收器是否已将数据接收完毕,如果没有接收完则先锁存要发送的数据,等到接收器接收完后再发送。
这样每次发送器发送完数据后就不用写延时程序了,可以用8255A完成该功能。
11。