北工大微机原理 实验六 8251串行通信实验
- 格式:doc
- 大小:71.00 KB
- 文档页数:4
8251串行通讯实验一.基本实验内容:实现二台PC机之间的双机通讯。
即甲机输入的键值发送到乙机CRT上显示,反之亦然。
二原理图及连线:1.8251CS连208~20FH (波特率2400)2.9芯电缆对接二机的RS-232口三.参考程序D8251 EQU 208HZ8251 EQU 20aHDATA SEGMENTMESS DB '按下!后返回DOS.',0DH,0AH,'$'DATA ENDSSTACK SEGMENTSTA DW 32 DUP()TOP DWSTACK ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV DX,Z8251 ;初始化8251MOV AL,40HOUT DX,ALMOV CX,1000hLOOP $MOV AL,0CEH ;设置为8个数据位,两个停止位波特率因子为16 OUT DX,AL ;无奇偶校验位MOV CX,1000hLOOP $MOV AL,25H ;设为请求发送,允许发送,允许接收状态OUT DX,ALMOV CX,1000hLOOP $;NIT 8251 ENDREC: MOV DX,Z8251MOV AH,02HWAIT9: IN AL,DX ;有数据送到吗AND AL,AHJZ SEND ;没有数据送到则跳转至发送MOV DX,D8251 ;有数据送到则从数据缓冲区读入IN AL,DXMOV DL,ALMOV AH,02H ;显示在屏幕上INT 21HCMP AL,'!'JE ED ;接收到结束符则返回DOSJMP REC ;不是结束符则继续接收ED: MOV AX,4C00HINT 21HSEND: MOV CX,1000hLOOP $MOV DX,Z8251MOV AH,01HWAIT8: IN AL,DXAND AL,AHJZ WAIT8 ;发送缓冲器不空则等待MOV DL,0FFHMOV AH,06HINT 21HJZ REC ;无键按下则跳回"接收"处MOV DX,D8251 ;有键按下则发送相应字符OUT DX,ALCMP AL,'!' ;是结束字符则返回DOSJE ED1JMP REC ;不是结束字符则跳回"接收"处ED1: MOV AX,4C00HINT 21HMAIN ENDPCODE ENDSEND START四.思考内容:如何用8253产生串行通讯所需的波特率。
实验报告实验名称__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的串行接口应用实验课程名称:计算机原理与应用实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩: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一、实验目的: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Ⅱ加一后的字母或数字。
实验十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在此次实验中,实验箱的连线经反复检查后并没有出现问题,后排除可能是远距离连线的接触不良造成了实验中,接收机已知在等待,发送机的数据一直无法传送的问题。
师大学数计学院实验报告专业名称 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的工作方式和编程方法。
二、实验内容利用本实验系统内的8251接口芯片,采用自发自收的方法,实现数据收发通信实验。
发送的数据为4000H开始的16个源RAM区单元内容,接收到的数据放在5000H开始的RAM单元中,核对接收的数据是否和发送的数据一致。
三、编程提示⑴数据发送与接收字节均采用查询方式;⑵8251接口芯片的端口地址:命令状态口=FFE1h,数据口=FFE0h;⑶设置方式字:异步方式,8个数据位,1位起始位,1个停止位,波特率因子为16。
⑷TXC、RXC时钟速率一致,可选速率F:38.4KHz、76.8KHz、153.6KHz、307.2KHz,波特率bps=TXC÷16,相应可选bps:2400、4800、9600、19200。
四、程序流程五、实验电路六、实验步骤1、实验连线⑴连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与总线单元上方的GS相连。
⑵将8251串行通信单元的T/RXC与分频单元的T6相连,CLK与分频单元的T0相连,8251CS与译码单元的Y0相连,将8251串行通信单元RXD与TXD相连。
⑶用8芯扁平电缆将8251串行通信单元的数据总线插座与数据总线单元任一插座相连。
2、LED环境⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在4000~400Fh内存单元中填入16个数据。
⑶在“P.”状态下键入35C0,然后按“EXEC”进入实验项目的运行。
3、PC环境在与PC联机状态下,编译、连接、下载PH88\he11.asm,用连续方式运行程序。
4、观察运行结果在连续运行下,8251开始将4000~400Fh内存单元的数据发送串行口,再从串行口接收数据并存到5000~500Fh内存单元,当LED显示“P.”则表示操作完成。
用复位命令结束程序,检查5000~500Fh内存单元的数据,应与4000~400Fh一致。
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信号上的数据传输格式。
一.实验名称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五.实验结果如截图所示,由键盘输入的字符经过串口发送出去后又成功接收回来,并显示在窗口中。
郑州科技学院《微机原理与接口技术》课程设计题目8251串行通讯实验学生姓名专业班目录1 引言 (1)2 设计方案与论证 (1)2.1 设计内容 (1)2.2 设计要求 (2)2.3 设计框图 (2)3 设计原理及功能 (2)3.1 8251的基本性能 (2)3.2 8251的内部结构及外部引脚 (2)3.3 软件 (3)3.3.1 流程图 (3)3.3.2 主程序 (4)4 单元电路的设计 (5)4.1 电路图 (5)4.2 电路说明 (5)4.3 8251概述 (6)4.4 8251的内部结构 (6)5 系统调试与结果测试 (8)5.1 调试 (8)5.2 程序结果测试 (9)6 总结 (10)参考文献 (11)附录1:总体电路原理图 (12)附录2 程序 (13)附录3:实验原器件清单 (15)1 引言通过对微机系统分析和具体设计,使学生加深对所学课程的理解,掌握汇编语言程序设计的基本方法和典型接口电路的基本设计方法,培养学生分析问题、解决问题的能力,培养学生对微型计算机应用系统的基本设计能力,提高学生的实践动手能力和创新能力。
从《微型计算机原理》中,我懂得了微机设计的基本原理,学会了微机的基本知识和内容,知道了其中的基本操作。
另外,我从《微型计算机原理与应用》中知道了在微机实验中如何应用的,并且学到了以前没有学到的知识。
在微机原理及应用课程中学过了微机各个基本组成模块的原理和编程技术,在实验室现有的设备情况下,设计一个具有一定功能的应用系统,达到对知识的深入理解和融会贯通,培养动手能力、实践能力以及团队合作的精神。
2 设计方案与论证2.1 设计内容连接好电路,(8251插通用插座)其中8253计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。
编程:从键盘输入一个字符,将其ASCII码加1后发送出去,再接收回来在屏幕上显示,实现自发自收。
2.2 设计要求8253计数器的计数初值=时钟频率/(波特率*波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,这计数器初值52.2.3 设计框图3 设计原理及功能3.1 8251的基本性能8251是可编程的串行通信接口,可以管理信号变化范围很大的串行数据通信。
实验六串行通信实验8251
一、实验目的:
1、进一步了解串行通信的基本原理
2、掌握串行接口芯片8251的工作原理和编程方法
二、实验内容:
1、按图连接线路。
2、从键盘输入一个字符,将其ASCLL码加1后发送出去,再接收回来在屏幕上加1 后的字符显示出来,实现自发自收。
三、实验设备:
8251芯片 8253芯片试验箱若干导线
四、实验原理:
根据引脚号按下图在试验箱上正确连接好电路
五.程序代码:
data segment
ioport equ 5400h-280h
io8253a equ ioport+280h
io8253b equ ioport+283h
io8251a equ ioport+2b8h
io8251b equ ioport+2b9h
ap1 db 'you can play a key on the keybord!',0dh,0ah,24h
ap2 dd ap1
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,io8253b ;设置8253计数器0工作方式
mov al,16h
out dx,al
mov dx,io8253a
mov al,52 ;给8253计数器0送初值
out dx,al
mov dx,io8251b ;初始化8251
xor al,al
mov cx,03 ;向8251控制端口送3个0
delay: call out
loop delay
mov al,40h ;向8251控制端口送40H,使其复位
call out
mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out
mov al,27h ;向8251送控制字允许其发送和接收
call out
lds dx,ap2 ;显示提示信息
mov ah,09
int 21h
wait: mov dx,io8251b
in al,dx
test al,01 ;发送是否准备好
jz wait
mov ah,01 ;是,从键盘上读一字符
int 21h
cmp al,27 ;若为ESC,结束
jz exit
mov dx,io8251a
inc al
out dx,al ;发送
mov cx,0F00h
kd1: loop kd1 ;延时
next:mov dx,io8251b
in al,dx
test al,02 ;检查接收是否准备好
jz next ;没有,等待
mov dx,io8251a
in al,dx ;准备好,接收
mov dl,al
mov ah,02 ;将接收到的字符显示在屏幕上 int 21h
jmp wait
exit: mov ah,4ch ;退出
int 21h
out proc near ;向外发送一字节的子程序 out dx,al
push cx
mov cx,0F00h
kd2: loop kd2 ;延时
pop cx
ret
out endp
code ends
end start
六、实验结果:
将程序进行汇编,连接,运行后,从键盘输入字母或者数字,屏幕上显示这个字母或数字和这个数字的ASCⅡ加一后的字母或数字。
此实验实现自发自收的功能,采用查询的方式,当从键盘输入字母或数字时芯片将读取其ASCⅡ码,判别是否为27h,如果不是,则将ASC Ⅱ码加一后再转换成字符输出到屏幕上显示。
实现了输入输出的转换功能。
七.试验截图:。