微机实验_可编程串行通信(8250)
- 格式:doc
- 大小:165.50 KB
- 文档页数:6
实验六、单机串行通信一、实验目的1、熟悉微机接口实验装置的结构及使用方法2、掌握通信接口芯片8251和8250的功能和使用方法3、学会串行通信程序的编制方法二、实验仪器1、PC实验箱及连接线2、9针接头串行电缆三、芯片介绍本实验中用PC机中的8250和实验装置上的8251芯片作数据的传送和接收。
8250是一种通用的异步串行通信收发器(UART),而8251同时支持同步通信(USART),它们都是可编程的接口芯片。
1、UART-8250简介PC机自带两个串口,分为COM1和COM2,地址分别在3F8-3FFH和2F8-2FFH,接口芯片选用8250。
8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(LCR)的最高位DLAB来决定。
各寄存器的地址和格式如下所示:.表 4.9 8250寄存器地址DLAB A2 A1 A0 I/O口地址对应寄存器0 0 0 0 3F8H(2F8H)发送端数据寄存器0 0 0 0 3F8H(2F8H)接受端数据寄存器1 0 0 0 3F8H(2F8H)波特率因子寄存器(低8位)1 0 0 1 3F9H(2F9H)波特率因子寄存器(高8位)0 0 0 1 3F9H(2F9H)中断允许寄存器(IER)X 0 1 0 3FAH(2FAH)中断识别寄存器(IIR)X 0 1 1 3FBH(2FBH)线路控制寄存器(LCR)X 1 0 0 3FCH(2FCH)MODEM控制寄存器(MCR)X 1 0 1 3FDH(2FDH)线路状态寄存器(LSR)X 1 1 0 3FEH(2FEH)MODEM状态寄存器X 1 1 1 3FFH(2FFH)保留IER: D7 D0IIR: D7 D00:有中断中断识别 1:无中断 00:MODEM状态变化 01:发送缓冲器空10:接收器数据就绪 11:接收字符错或接收中止状态LCR: D7 D00:该位无效校验时附加位 1:偶 1:有 1:2位 10:7 11:81:强迫8250连 0:该位无效续输出低电平 1:奇偶校验位恒为0(对偶校验)或恒为1(对奇校验)LSR: D7 D0发送器保持寄存器空奇偶错[注:上面在各位为1时状态存在]MCR: D7 D0该位为可由用户指定的输出信号MSR: D7 D08250在正常通信之前,需要先设定波特率因子寄存器,它决定传输数据的速率。
可编程串行通信接口8250A自发自收实验一、实验目的和要求1.了解并行通信的工作原理;2.掌握8250的编程方法。
二、实验内容和原理1.实验内容:对8250编程,实现下列功能:(1)主机键盘输入一个字符,并将字符的ASCⅡ码加1,指向ASCⅡ表中的下一个字符,通过SOUT引脚发送出去;(2)通过SIN引脚接受字符;(3)在屏幕上显示键盘输入的字符和接收到的字符。
这样就实现了CPU自发自收的功能。
线路连接:8250的D7~D0、A2~A0和DISTR、DOSTR引脚与系统数据线、地址线和读写控制线对应连接;片选线CS2接地址译码器输出端;INTRPT引脚与中断请求输入IRQ2端相连;2MHz的时钟信号送到XTIL1;BAUDOUT与RCLK连接;8250数据接收线SIN 与输出线SOUT相连接,是先自发自收。
线路连接如图1所示。
编程提示:8250采用查询方式进行数据通信,一桢数据格式为7位数据位位数据位,一位停止位,奇校验,波特率为2400bps,输入的基准时钟频率为2MHz。
流程图程序:DA TA SEGMENTMES1 DB 'IT WILL DISPLAY ON THE TERMINAL_SCREEN!!',0AH,0DH DB 'PLAY Q KEY EXIT TO DOS',0AH,0DH,0AH,0DH,'$'IOPORT EQU 0D880H-0280HIO8250CS EQU IOPORT+290H ;8250地址IO8250ZD EQU IOPORT+291HIO8250ZS EQU IOPORT+292HIO8250XK EQU IOPORT+293HIO8250MO EQU IOPORT+294HIO8250XZ EQU IOPORT+295HDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES1 ;显示提示信息MOV AH,09INT 21HMOV AL,80H ;使DLAB=1,允许写除数寄存器MOV DX,IO8250XK ;线路控制寄存器OUT DX,ALMOV AX,30H ;除数值MOV DX,IO8250CS ;除数寄存器低8位OUT DX,ALMOV AL,AHINC DX ;除数寄存器高8位OUT DX,ALMOV AL,0AH ;7位数据、1位停止位,奇校验MOV DX,IO8250XK ;线路控制寄存器OUT DX,ALMOV AL,10H ;使自检控制位LOOP=1,自检MOV DX,IO8250MO ;MODEM控制寄存器OUT DX,ALMOV AL,00H ;屏蔽中断MOV DX,IO8250ZD ;写中断允许寄存器OUT DX,ALWA T: MOV DX,IO8250XZ ;读线路状态寄存器IN AL,DXTEST AL,00011110B ;出错否?JNZ ERROR ;转到ERRORTEST AL,00000001B ;接受数据就绪否?JNZ RCEVE ;转接收TEST AL,00100000B ;发送寄存器空否?JZ WAT ;不空,返回等待MOV AH,01H ;读键盘INT 21HMOV DX,IO8250CS ;发送下一个字符INC ALOUT DX,ALJMP WAT ;返回RCEVE: MOV DX,IO8250CS ;读接收数据IN AL,DXAND AL,01111111B ;保留7位CHAR: MOV DL,AL ;显示MOV AH,02HINT 21HDEC DLCMP DL,51H ;键入字符是吗‘Q’?JZ QUITCMP DL,71HJZ QUIT ;是,退出JMP WAT ;不是,继续QUIT: MOV AX,4C00H ;退出INT 21HERROR: MOV DX,IO8250XZ ;清除线路状态寄存器IN AL,DXMOV DL,'?' ;显示字符'?'MOV AH,02HINT 21HJMP WAT ;返回继续CODE ENDSEND START2.实验原理8250内部有三种寄存器,8250初始化编程为:a、将80H写入通信线路控制寄存器使最高位为1,建立寄存器和中断允许寄存器的标志。
微机原理与接口技术实验报告———8250串行接口ADC0809A/D转换器实验四8250串行接口实验一,实验目的(1)熟悉串行通信的一般原理和8250的工作原理。
(2)了解RS—232串行接口标准及连接方法。
(3)掌握8250芯片的编程方法。
二,实验设备微机实验教学系统实验箱,8086CPU模块三、实验内容在实验箱与PC机(上位机)之间实现串行通信,主机每下传一个字符,若通讯正确,则下位机返回一个同样的字符;若不正确,则无返回值或者返回值不同。
四,实验步骤(1)无须接线,内部已经连好。
8250的端口地址为0480H起始的偶地址单元。
(2)编写下位机程序,编译链接后,全速运行。
(3)退出“8086实验系统”,运行“串口调试助手”上位机程序。
(4)将“串口调试助手”程序输入和输出都调整为16进制格式,发送一个16进制数,观察返回的是否是同样一个16进制数。
五,实验程序程序流程图:实验源程序:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,486H ;写通信线路控制寄存器D7=1MOV AX,80HOUT DX,AXMOV DX,480H ;设置波特率低字节MOV AX,12OUT DX,AXMOV DX,482H ;设置波特率高字节MOV AX,0OUT DX,AXMOV DX,486HMOV AX,3OUT DX,AXMOV DX,482H ;中断允许寄存器MOV AX,0OUT DX,AXMOV DX,48AH ;清除原始错误状态IN AX,DXMOV DX,480H ;清除原始状态IN AX,DXLOOP1:CALL RECVCALL SENDJMP LOOP1 ;循环发送SEND: ; 发送子函数PUSH AXMOV DX,48AHIN AX,DXTEST AX,20HJNZ SEND2 ;发送数据寄存器空,则跳转至SEND2,发送字符POP AX ;发送数据寄存器不是空,不可发送JMP SENDSEND2:POP AXMOV DX,480H ;指向发送接收数据寄存器,发送字符OUT DX,AXRETRECV: ;接收子函数MOV DX,48AHIN AX,DXTEST AX,1JZ RECV ;未接到到一个字符,则跳转至RECV,若接收到字符,则顺序往下执行。
PC机串行通讯实验一、实验目的1.进一步了解串行通信的基本原理。
2.掌握串行接口芯片8250的工作原理和编程方法。
3.熟悉PC机串行口的基本连接方法。
二、实验内容1.PC机RS-232串口自发自收。
按照PC机串口自发自收的连接方法连线。
编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由次串口将字符接收回来并在屏幕上显示,实现自发自收。
要求:键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。
2.两台PC机间RS-232串口通信按照PC机RS-232串口直接互连的方法连接两台PC机。
编写PC机直接互联串行通信程序。
要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示再屏幕上。
当键入感叹号“!”,结束收发过程。
要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。
当键入感叹号“!”,结束收发过程。
三、实验电路自发自收只需要将本机的2和3号端口短路即可。
以下是双机近距离通信连接图:四、程序设计及实验调试首先是8250芯片的初始化,初始化流图如下:按照书上的通信程序,采用查询方式编自发自收程序。
初始化之后,先读线路状态寄存器,再检测发送寄存器是否为空,出错则清除线路状态寄存器,接收就绪否,接收数据等。
若自发自收未做好准备,则显示’?’。
除数=1.8432M/(2400*16)=48=30H实验1 自发自收:CODE SEGMENTASSUME CS:CODESTART: MOV AL,10000000B ;8250初始化,设DLAB=1MOV DX,3FBHOUT DX,ALMOV AX,30H ;波特率为2400,基准时钟频率为1.8432MHz,除数为30HMOV DX,3F8HOUT DX,AL ;写入除数低字节MOV AL,AHMOV DX,3F9HOUT DX,AL ;写入除数高字节MOV AL,0AH ;7位数据,1位停止,奇校验MOV DX,3FBHOUT DX,AL ;写入线路控制寄存器MOV AL,00001111BMOV DX,3FCHOUT DX,AL ;写入Modem控制寄存器MOV AL,0MOV DX,3F9HOUT DX,AL ;写入中断允许寄存器,屏蔽中断WAIT_FOR: MOV DX,3FDH ;读线路状态寄存器,屏蔽中断IN AL,DXTEST AL,00011110B ;出错否JNZ ERRORTEST AL,00000001B ;接收数据就绪否JNZ RECEIVE ;转接收TEST AL,01000000B ;发送寄存器空否,不空,返回等待JZ W AIT_FORMOV AH,1INT 21H ;读键盘MOV DX,3F8H ;发送OUT DX,ALJMP W AIT_FORRECEIVE: MOV DX,3F8H ;读接收数据IN AL,DXAND AL,01111111B ;保留7位数据CMP AL,21H ;是”!”?JNZ CHARMOV AH,4CH ;返回DOSINT 21HCHAR: PUSH AXMOV DL,ALMOV AH,02H ;显示接收字符INT 21HPOP AXJMP W AIT_FORERROR: MOV DX,3FDH ;出错则清除线路状态寄存器IN AL,DXMOV DL,'?' ;显示’?’MOV AH,02HINT 21HJMP W AIT_FORCODE ENDSEND START实验中遇到问题及分析:在软件编程的过程中,因为是参考书上的程序,所以没有报错。
实验八8250可编程通信实验(与微机)一、实验目的了解8250的内部结构、工作原理;了解8250与PCI9052的接口逻辑;掌握对8250的初始化编程方法,学会使用8250实现设备之间的串行通信。
二、实验内容及要求1、编写程序:通过初始化8250,设置波特率为4800bps(或其它,但与微机部分一致),数据格式为8数据位,1停止位,偶校验;然后打开PC机的串行通信测试软件,向8250发送一批数据,8250接收完数据之后,再将数据依次发送回去。
MSR DW00f6H ;MODEM状态寄存器DLL DW 00f0H;波特率除数锁存器低位DLM DW00f1H;波特率除数锁存器高位ADR DW 00E0H ;用于清除PCI9052上一次写操作产生的地址IO_Bit8_BaseAddress DW?msg0 DB ‘BIOS不支持访问PCI $’msg1 DB ‘找不到Star PCI9052板卡 $’msg2 DB ‘读8位I/O空间基地址时出错$’.CODESTART: MOV AX,@DATAMOV DS,AXNOPCALL InitPCICALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址CALL INIT8250START2: MOV CX,10 ;接收数据(接收完设定的数据个数) CALL RECEIVE_GROUPMOV CX,10 ;发送数据(发完设定的数据个数)CALL SEND_GROUPJC WARNING1CALL IfExitJZ START2JMP ExitWARNING1: JMP Exit;*************发送一组字符子程序,个数在CX中***********Send_Group PROC NEARLEA SI,Send_BufferSend_Group1: LODSBCALL Send_ByteJC Send_Group2LOOP Send_Group1CLCSend_Group2: RETSend_Group ENDP;*************接收一组字符子程序,存放首地址在DPTR中,个数在R6R7中*********** Receive_Group PROC NEARMOV DX,ADROUT DX,AL ;用于清除PCI9052上一次写操作产生的地址LEA DI,Receive_BufferReceive_Group1: CALL Receive_ByteSTOSBLOOP Receive_Group1CLCRETReceive_Group ENDPINIT8250 PROC NEARMOV DX,ISRMOV AL,06HOUT DX,ALMOV DX,LCRMOV AL,83H ;允许访问波特率因子寄存器OUT DX,ALMOV DX,DLLMOV AL,40 ;除法除数低位寄存器,波特率设为;4800=(3.072*1000000/16)/DLMDLLOUT DX,ALMOV DX,DLM ;00H送高字节寄存器MOV AL,00HOUT DX,ALMOV DX,LCR ;不允许访问波特率因子寄存器MOV AL,1BH ;数据格式为8数据位,1停止位,偶校验OUT DX,ALRETINIT8250 ENDP;*********发送一个字节子程序,发送A中的数,失败置1CY*********Send_Byte PROC NEARPUSH CXPUSH AXMOV CX,1000MOV DX,LSRREP11: IN AL,DXTEST AL,20HJNZ OUTPORT1LOOP REP11POP AXSTCJMP EXIT8250OUTPORT1: POP AXMOV DX,RHROUT DX,ALMOV DX,ADROUT DX,AL ;清除PCI9052产生的RHR地址CLCEXIT8250: POP CXRETSend_Byte ENDP;*********接收一个字节子程序,接收字节在A中,接收失败置1CY*********Receive_Byte PROC NEAR MOV DX,LSR Receive1: IN AL,DX TEST AL,1 JZ Receive1 Receive2: MOV DX,RHR IN AL,DX Receive3: RET Receive_Byte ENDP Exit: MOV AH,4CH INT 21H; IfExit 、InitPCI 、ModifyAddress 子程序请参阅实验二 END START五、实验过程 12、运行程序3、运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8250发送10个字节数据(输入数据之间用空格分隔),是否能接收到10个字节数据,接收到的数据是否与发送数据一致。
学生实验报告
3FFH ×不用1.传输线路控制寄存器LCR(3FBH)如图10-1所示。
图10-1
2.除数寄存器DLL、DLH(3F8H,3F9H)
常用波特率及除数对照表如表10-2所示。
表10-2
除数寄存器
波特率(BIT/S)
高字节低字节
04H 17H 110
03H 00H 150
01H 80H 300
00H C0H 600
00H 60H 1200
00H 30H 2400
00H 18H 4800
00H 0CH 9600 3.中断允许寄存器IER(3F9H)如图10-2所示。
图10-2
4.MODEM控制寄存器MCR(3FCH)如图10-3所示。
图10-3
5.9针串口插座(DB-9)外形如图10-4所示,引脚说明如表10-3所示。
图10-4
表10-3
RS-232C信号说
9芯引脚号引脚名称
明
1 空
2 RXD 接收数据
3 TXD 发送数据
4 DTR 数据终端就绪
5 GND 信号地
6 DSR 数据装置就绪
7 RTS 发送请求
8 CTS 发送允许
9 保护地6.编程提示
(1)程序流程图如图10-5所示。
图10-5 程序流程图
四、实验参考程序
STACK SEGMENT PARA STACK 'STACK'
DB 256 DUP(?)
STACK ENDS
CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE
START PROC FAR
PUSH DS ;保存PSP 地址
XOR AX,AX
PUSH AX ;初始化8250为7位数据位,1位停止位,奇校
;验,波特率1200,并设定为内部连接方式MOV DX,3FBH
MOV AL,80H
OUT DX,AL ;设传输线控制寄存器D7为1
MOV DX,3F8H ;设波特率为1200
MOV AL,60H
OUT DX,AL
MOV DX,3F9H
MOV AL,0
OUT DX,AL
MOV DX,3FBH ;设奇校验,1位停止位,7位数据位
MOV AL,0AH
OUT DX,AL
MOV DX,3FCH ;设MODEM控制寄存器发DTR和RTS信号,
MOV AH,14 ;显示“?”
INT 10H
JMP FOREVER
EXIT:MOV AH,4CH ;返回DOS
INT 21H
START ENDP
CODE ENDS
END START
五、实验结论与心得
成绩教师签名批改时间年月日。