串行通信实验16550

合集下载

第12章串行通信16550

第12章串行通信16550
1、异步功能结构 控制寄存器 数 据 缓 冲 器 状态寄存器 发送缓冲 寄存器TBR 接收缓冲 寄存器TBR 发送移位 寄存器TSR 接收移位 寄存器TSR 发送时钟 TX DATA 接收时钟 RX DATA
2、错误检测 (1)奇偶校验错:出现错误启动重发。 (2)帧错:以起始位开始,停止位终止为一帧,帧错是指在停止位应该 收到逻辑“1”,但收到逻辑“0”,表示帧错。 (3)溢出错,在接受时,如果接受缓冲器满,此时有收到一个新帧,便 产生溢出错。
SYN
SOH
标题
STX
数据 块
ETB/ ETX
CRC1
CRC2
SYN:同步字符; SOH:报头开始; STX:正文开始; ETX:数据终止 CRC:校错。
(2)面向比特的通信规程 SDLC(synchronousn data link control):同步数据链路控制规程。 HDLC(high-level data link control):高级数据链路控制规程。 特点:没有采用控制字符,而是采用比特组合进行控制,数据块的长 度是任意的。
MODEM的调制类型一般有3种:ASK,FSK,PSK
(1)ASK:幅移键控
逻辑0
逻辑1
(2)FSK:频移键控 1200Hz 2400Hz
逻辑0
逻辑1
(3)PSK:相移键控
四、串行通信规程(protocol) 串行通信规程( )
1、基本概念:为了使通信顺利进行,发送和接收都要共同遵守一些基本的 通信规程,如:同步方式、传输控制、校验方式、数据编码、传输速率、通信 报文格式、控制字符的定义等。 2、异步通信和同步通信 (1)异步通信( ASYNC: Asynchronous Data Communication ) 它用起始位表示字符的开始,用停止位表示字符的结束。 它用起始位表示字符的开始,用停止位表示字符的结束。 (2)同步通信 SYNC: Synchronous Data Communication ) 同步通信( 以同步字符表示字符的开始。

16550说明

16550说明
TEST JZ MOV MOV OUT
DX,LSR AL,DX AL,20H
XXX DX,THR AL,‘A’ DX,AL
;以查询方式发送数据 ;发送数据
2020年3月7日2时35分
13 guzhaolin@
16550初始化流程
16550串口芯片的初 始化编程就是设置波 特率、确定串行通信 的数据帧格式、使能 等。
2020年3月7日2时35分
线路控制寄存 器D7(即 基地址+3 DLAB)=1
写除数低8位 基地址+0
设置 波特 率
写除数高8位 基地址+1
线路控制寄存
器D7(即
基地址+3
DLAB)=0
设置数据位数、 停止位、校验 位
2020年3月7日2时35分
5 guzhaolin@
线路状态寄存器LSR
D7 D6 D5 D4 D3 D2 D1 D0 0
1
1
111
1
1
恒定 :

发 送



: 发 送 缓 冲 空
::::
检帧奇数
测错偶据

校溢

验出

错错
: 接 收 数 据 就
误绪
2020年3月7日2时35分
6 guzhaolin@
2020年3月7日2时35分
11 guzhaolin@
16550初始化程序
CTR EQU 3FBH DLSB EQU 3F8H DMSB EQU 3F9H
;控制口 ;除数低字节口 ;除数高字节口
MOV AL,10000000B
MOV OUT MOV MOV OUT MOV INC OUT MOV MOV OUT

实验4(16550接口实验)

实验4(16550接口实验)

实验4:16550串行接口应用实验一、实验目的1、掌握串行通信接口芯片16550的工作方式及应用编程。

2、学习有关串行通信知识。

二、实验原理分析1、异步传送方式与异步通信串行通信分为同步传送方式和异步传送方式两种,本实验是异步方式下的串行通信,其具体原理如下。

异步传送的数据以字节为单位,传送时各个字符可以连续传送,也可以断续传送,由发送方来决定。

数据传输的速率(波特率)是双方事先约定好的。

双方各自用自己的时钟信号来控制发送和接收。

异步通信采用异步传送方式,通信以“帧”为传送单位,一个帧由起始位开始,停止位结束。

两个帧之间为空闲位。

通常一帧信息由7~12位二进制组成,每帧数据由四个部分组成,帧格式如下图所示。

其中:(1)起始位:当传输线上没有信号时,处于连续的逻辑1状态。

当有数据帧传输时,以1位逻辑0开始,作为数据帧的起始位。

(2)数据位:起始位后紧接的是数据位,一般为5~8位,具体位数由收发双方约定,先发送低位。

(3)奇偶校验位:使用1位数据作为传送数据的奇偶位校验。

(4)停止位:最后传输的是停止位,用1~2位(1、1.5或2)逻辑1来标志数据帧的传输结束。

2、16550基本结构16550内部结构见实验指导书P57,图3-6-2所示:实验指导书P57,16550内部结构示意图(1)数据总线缓冲器:是一个三态双向8位数据缓冲器,16550通过它与系统的数据总线连接,传送控制字、数据和状态信息。

(2)选择和读写控制逻辑:接收来自CPU的地址、片选和控制信息,产生16550内部各端口的读写操作命令。

(3)发送器:由发送保持寄存器(THR)、发送移位寄存器和发送同步控制器等三部分组成。

待发送的数据写入发送保持寄存器,数据发送时,其内容自动转入到发送移位寄存器,并转换为串行数据格式,在同步时钟控制下,由SOUT(TXD)引脚发送。

(4)接收器:由接收缓冲寄存器(RBR)、接收移位寄存器和接收同步控制器等三部分组成。

第3次(2)实验 16550串口实验

第3次(2)实验  16550串口实验

第三次实验(2) 16550串口实验9.8(1)串口通讯基础实验(16550-1.asm )需要示波器MY16550_0 EQU 9C80HMY16550_1 EQU 9C81HMY16550_3 EQU 9C83HMY16550_4 EQU 9C84HCODE SEGMENTASSUME CS:CODESTART: MOV DX,MY16550_3MOV AL,80HOUT DX,ALCALL DALLYMOV DX,MY16550_0MOV AL,0CHOUT DX,ALCALL DALLYMOV DX,MY16550_1MOV AL,00HOUT DX,ALCALL DALLYMOV DX,MY16550_3MOV AL,1BHOUT DX,ALCALL DALLYMOV DX,MY16550_4MOV AL,03HOUT DX,ALCALL DALLYMOV DX,MY16550_1 MOV AL,00HOUT DX,ALCALL DALLYA1: MOV DX,MY16550_0 MOV AL,55HOUT DX,ALCALL DALLYCALL BREAKJMP A1DALLY: PUSH CXPUSH AXMOV CX,0100HD1: MOV AX,1000HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETBREAK PROC NEARMOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START.8 (2)串口自发自收应用实验( 16550-2.asm )可以做显示26个大写字母MY16550_0 EQU 9C80H;收发寄存器 DLAB = 0 ;;或 DLAB = 1波特率低8位除数 Page 290 表9.3 MY16550_1 EQU 9C81H;中断允许寄存器IER DLAB = 0;或 DLAB = 1波特率高8位除数 Page 290 表9.3 MY16550_3 EQU 9C83H ; LCR 线路控制寄存器MY16550_4 EQU 9C84H ; MODEM 控制寄存器 MCRMY16550_5 EQU 9C85H ; LCR 线路状态寄存器 LSRDATA SEGMENTAA DB 40H 41H ~ 5A H : A ~ ZDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY16550_3MOV AL,80HOUT DX,ALCALL DALLYMOV DX,MY16550_0MOV AL,0CHOUT DX,ALCALL DALLYMOV DX,MY16550_1MOV AL,00HOUT DX,ALCALL DALLYMOV DX,MY16550_3MOV AL,1BHOUT DX,ALCALL DALLYMOV DX,MY16550_4MOV AL,03HOUT DX,ALCALL DALLYMOV DX,MY16550_1MOV AL,00HOUT DX,ALCALL DALLYA1: INC AA ; AA DB 40H 41H ~ 5A H : A ~ ZMOV DX,MY16550_0 ; 发送MOV AL,AAOUT DX,ALCALL DALLYA2: CALL BREAKMOV DX, MY16550_5 ; LCR 线路状态寄存器 LSRIN AL,DXAND AL,01HJZ A2MOV DX,MY16550_0IN AL,DXMOV AH,0EHINT 10H ;收到 ---屏幕显示 CALL DALLYCMP AL,5AHJNZ A1MOV AX,4C00HINT 21HDALLY: PUSH CXPUSH AXMOV CX,0100HD1: MOV AX,2000HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETBREAK PROC NEARMOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START9.8(3)与PC串口通讯基础实验(16550-3.asm )MY16550_0 EQU 9C80HMY16550_1 EQU 9C81HMY16550_3 EQU 9C83HMY16550_4 EQU 9C84HPC16550_0 EQU 03F8HPC16550_1 EQU 03F9HPC16550_3 EQU 03FBHPC16550_4 EQU 03FCHINTCSR_BYTE0 EQU 9438HINTCSR_BYTE1 EQU 9439HINTCSR_BYTE2 EQU 943AHINTCSR_BYTE3 EQU 943BHIMB4_BYTE3 EQU 941FHDATA SEGMENTCSBAK DW ?IPBAK DW ?MKBAK DB ?DTABLE DB 54H, 68H,69H,73H,20H,69H,73H,20H,54H,61H,6EH,67H, 64H, 75H, 20H, 53H,DB 70H, 65H, 61H, 6BH,69H,6EH,67H,21HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: CLIMOV AX,DATAMOV DS,AXMOV AX,0000HMOV ES,AXMOV DI,01CCH ;INT 73H,01CCH=73H*4 MOV AX,ES:[DI]MOV IPBAK,AX ;IPMOV AX,OFFSET MYINTCLDSTOSWMOV AX,ES:[DI] ;CSMOV CSBAK,AXMOV AX,SEG MYINTSTOSWIN AL,0A1HMOV MKBAK,ALAND AL,0F7HOUT 0A1H,ALMOV DX,PC16550_3MOV AL,80HOUT DX,ALCALL DALLYMOV DX,PC16550_0 ;9600 (bit/s)MOV AL,0CHOUT DX,ALCALL DALLYMOV DX,PC16550_1MOV AL,00HOUT DX,ALCALL DALLYMOV DX,PC16550_3MOV AL,1BHOUT DX,ALCALL DALLYMOV DX,PC16550_4MOV AL,03HOUT DX,ALCALL DALLYMOV DX,PC16550_1MOV AL,00HOUT DX,ALCALL DALLYMOV DX,MY16550_3MOV AL,80HOUT DX,ALCALL DALLYMOV DX,MY16550_0 ;9600 (bit/s) MOV AL,0CHOUT DX,ALCALL DALLYMOV DX,MY16550_1MOV AL,00HOUT DX,ALCALL DALLYMOV DX,MY16550_3MOV AL,1BHOUT DX,ALCALL DALLYMOV DX,MY16550_4MOV AL,03HOUT DX,ALCALL DALLYMOV DX,MY16550_1MOV AL,01HOUT DX,ALCALL DALLYMOV DX,INTCSR_BYTE0 MOV AL,00HOUT DX,ALMOV DX,INTCSR_BYTE1 MOV AL,1FHOUT DX,ALMOV DX,INTCSR_BYTE2 MOV AL,3FHOUT DX,ALMOV DX,INTCSR_BYTE3 MOV AL,00HOUT DX,ALSTIMOV BX,OFFSET DTABLE MOV CX,0018HA1: MOV DX,PC16550_0MOV AL,[BX]OUT DX,ALINC BXCALL DALLYLOOP A1CALL BREAKMYINT: PUSH DSPUSH AXPUSH BXPUSH CXPUSH DXMOV DX,IMB4_BYTE3 IN AL,DXMOV DX,INTCSR_BYTE2 MOV AL,3FHOUT DX,ALMOV AL,63HOUT 0A0H,ALMOV AL,62HOUT 20H,ALMOV DX,MY16550_0IN AL,DXMOV AH,0EHINT 10HPOP DXPOP CXPOP BXPOP AXPOP DSIRETDALLY: PUSH CXPUSH AXMOV CX,0100HD1: MOV AX,2000HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETBREAK PROC NEARCLIMOV AL,MKBAKOUT 0A1H,ALMOV AX,0000HMOV ES,AXMOV DI,01CCH ;INT 73H,01CCH=73H*4 MOV AX,IPBAKCLDSTOSWMOV AX,CSBAKSTOSWMOV DX,INTCSR_BYTE1MOV AL,00HOUT DX,ALSTIMOV AX,4C00HINT 21HBREAK ENDPCODE ENDSEND START9.8(4-1)串口双机通讯基础实验1号机程序(16550-41.asm 发)MY16550_0 EQU 9C80HMY16550_1 EQU 9C81HMY16550_3 EQU 9C83HMY16550_4 EQU 9C84HMY16550_5 EQU 9C85HDATA SEGMENTAA DB 2FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY16550_3MOV AL,80HOUT DX,ALCALL DALLYMOV DX,MY16550_0 MOV AL,0CHOUT DX,ALCALL DALLYMOV DX,MY16550_1 MOV AL,00HOUT DX,ALCALL DALLYMOV DX,MY16550_3 MOV AL,1BHOUT DX,ALCALL DALLYMOV DX,MY16550_4 MOV AL,03HOUT DX,ALCALL DALLYMOV DX,MY16550_1 MOV AL,00HOUT DX,ALCALL DALLYA1: INC AAMOV DX,MY16550_0 MOV AL,AAOUT DX,ALCALL DALLYCMP AL,39HJNZ A1MOV AX,4C00HINT 21HDALLY: PUSH CXPUSH AXMOV CX,0300HD1: MOV AX,3000HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETCODE ENDSEND START9.8(4-2)串口双机通讯基础实验2号机程序(16550-42.asm 中断方式收)MY16550_0 EQU 9C80HMY16550_1 EQU 9C81HMY16550_3 EQU 9C83HMY16550_4 EQU 9C84HINTCSR_BYTE0 EQU 9438HINTCSR_BYTE1 EQU 9439HINTCSR_BYTE2 EQU 943AHINTCSR_BYTE3 EQU 943BHIMB4_BYTE3 EQU 941FHDATA SEGMENTCSBAK DW ?IPBAK DW ?MKBAK DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: CLIMOV AX,DATAMOV DS,AXMOV AX,0000HMOV ES,AXMOV DI,01CCH ;INT 73H,01CCH=73H*4 MOV AX,ES:[DI]MOV IPBAK,AX ;IPMOV AX,OFFSET MYINTCLDSTOSWMOV AX,ES:[DI] ;CSMOV CSBAK,AXMOV AX,SEG MYINTSTOSWIN AL,0A1HMOV MKBAK,ALAND AL,0F7HOUT 0A1H,ALMOV DX,MY16550_3MOV AL,80HOUT DX,ALCALL DALLYMOV DX,MY16550_0 ;9600 (bit/s) MOV AL,0CHOUT DX,ALCALL DALLYMOV DX,MY16550_1MOV AL,00HOUT DX,ALCALL DALLYMOV DX,MY16550_3MOV AL,1BHOUT DX,ALCALL DALLYMOV DX,MY16550_4MOV AL,03HOUT DX,ALCALL DALLYMOV DX,MY16550_1MOV AL,01HOUT DX,ALCALL DALLYMOV DX,INTCSR_BYTE0MOV AL,00HOUT DX,ALMOV DX,INTCSR_BYTE1MOV AL,1FHOUT DX,ALMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV DX,INTCSR_BYTE3MOV AL,00HOUT DX,ALSTIA1: CALL BREAKJMP A1MYINT: PUSH DS ;中断服务程序 PUSH AXPUSH BXPUSH CXPUSH DXMOV DX,IMB4_BYTE3IN AL,DXMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV AL,63HOUT 0A0H,ALMOV AL,62HOUT 20H,ALMOV DX,MY16550_0IN AL,DXMOV AH,0EHINT 10HPOP DXPOP CXPOP BXPOP AXPOP DSIRETDALLY: PUSH CXPUSH AXMOV CX,0100HD1: MOV AX,2000HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETBREAK PROC NEARMOV AH,06HMOV DL,0FFHINT 21HJE RETURNCLIMOV AL,MKBAKOUT 0A1H,ALMOV AX,0000HMOV ES,AXMOV DI,01CCH ;INT 73H,01CCH=73H*4 MOV AX,IPBAKCLDSTOSWMOV AX,CSBAKSTOSWMOV DX,INTCSR_BYTE1MOV AL,00H OUT DX,AL STIMOV AX,4C00H INT 21H RETURN:RET BREAK ENDP CODE ENDSEND START。

串行通信实验16550

串行通信实验16550

(一)实验名称串行通信实验16550(二)实验内容1)串行通讯基础实验。

编写程序,向串口连续发送一个数据(55H),将串口输出连接到示波器上,用示波器观察数据输出产生的波形。

2)串口自发自收应用实验。

编写程序,将一串数据发送至串口,再接收回来显示。

(三)实验目的1)学习和掌握有关串行通信的知识2)学习和体会16550的工作原理、工作方式,利用其进行应用编程3)学习和掌握PC机串口的操作方法(四)实验日期、时间和地点2011—1—4 6,7节2011-1-7 1,节微机高级实验室(五)实验环境(说明实验用的软硬件环境及调试软件)PC机一台,PIT-B实验箱一套,TDPIT、td-debug软件环境一套(六)实验步骤(只写主要操作步骤,要简明扼要,还应该画出程序流程图或实验电路的具体连接图)一:二:自发自收(七)实验结果(经调试通过的源程序的所有代码,应包含必要的说明文字)MY_03F8 EQU 0E480HMY_03FB EQU 0E483HMY_03FD EQU 0E485HDATAS SEGMENTNUM DB 55H;此处输入数据段代码DATAS ENDSSTACKS SEGMENTDW 10 DUP(0);此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;初始化16550MOV DX,MY_03FB ;16550控制寄存器地址送DXMOV AL,80H ;置DLAB=1,设置除数寄存器OUT DX,ALCALL DALLYMOV DX,MY_03F8 ;除数寄存器地址送DXMOV AX,03C0H ;波特率为1200bit/sOUT DX,ALCALL DALLYMOV AL,AHINC DXOUT DX,ALCALL DALLYMOV DX,MY_03FB ;16550控制寄存器地址送DXMOV AL,0BH ;8位数据位,奇校验,1位停止位OUT DX,ALCALL DALLYCALL GOMOV AH,4CHINT 21HGO PROC NEARLOP1:MOV DX,MY_03FD ;通信状态寄存器地址送DXIN AL,DXCALL DALLYTEST AL,20H ;检测发送器是否准备就绪 JZ LOP1LOP2:MOV DX,MY_03F8MOV AL,NUMOUT DX,ALCALL DALLYCALL BREAKJMP LOP2RETGO ENDPDALLY PROC NEARPUSH CXPUSH AXMOV CX,0100HD1: MOV AX,1000HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALLY ENDPBREAK PROC NEARMOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODES ENDSEND START二:自发自收MY_03F8 EQU 0E480HMY_03FB EQU 0E483HMY_03FD EQU 0E485HMY_03FC EQU 0E48CHDATAS SEGMENTSTR1 DB'this is good'LEN EQU $-STR1STR2 DB 20 DUP (0),'$';此处输入数据段代码DATAS ENDSSTACKS SEGMENTDW 10 DUP (0);此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AX,STACKSMOV SS,AX;初始化16550MOV DX,MY_03FB ;16550控制寄存器地址送DXMOV AL,80H ;置DLAB=1,设置除数寄存器OUT DX,ALCALL DALLYMOV DX,MY_03F8 ;除数寄存器地址送DXMOV AX,03C0H ;波特率为1200bit/sOUT DX,ALCALL DALLYMOV AL,AHINC DXOUT DX,ALCALL DALLYMOV DX,MY_03FB ;16550控制寄存器地址送DXMOV AL,1BH ;8位数据位,奇校验,1位停止位OUT DX,ALCALL DALLYMOV DX,MY_03FCMOV AL,03HOUT DX,ALCALL DALLYCALL GOLEA DX,STR2 ;显示str2MOV AH,09HINT 21HMOV AH,4CHINT 21HGO PROC NEARLEA BX,STR1LEA DI,STR2MOV CX,LENINC CXLOP1:DEC CXJZ DONELOP2:MOV DX,MY_03FDIN AL,DXTEST AL,20H ;测试发送是否就绪JZ LOP2MOV DX,MY_03F8MOV AL,[BX] ;取出发送区域的待发送数据 OUT DX,ALLOP3:MOV DX,MY_03FDIN AL,DXTEST AL,1EH ;数据是否有错误JNZ ERROR ;跳转错误处理TEST AL,01H ;查看接受缓存器是否有信息 JZ LOP3MOV DX,MY_03F8IN AL,DXMOV [DI],ALINC BXINC DIJMP LOP1CLC ;接收成功,清CY标志位JMP DONEERROR:STC ;接收不成功,置CY标志位DONE:RETGO ENDPDALLY: PUSH CXPUSH AXMOV CX,0100HD1: MOV AX,2000HD2: DEC AXJNZ D2 LOOP D1POP AXPOP CX RETCODES ENDSEND START。

微机接口实验报告16550串口控制器应用实验

微机接口实验报告16550串口控制器应用实验

【实验目的】掌握16550的工作方式及应用。

学习PC机串口的操作方法。

【试验设备】PC微机一台、TD-PIT+实验系统一套、示波器一台。

【实验内容】编写程序,向串口连续发送一个数据53H(“1”的个数为偶数)或57H(“1”的个数为奇数)。

将串口输出连接到示波器上,用示波器观察数据输出产生的波形,分析串行数据格式。

【实验原理】16550是一种连接任何类型虚拟串行接口的可编程通信接口,与Intel微处理器完全兼容的使用非常广泛的异步接收器/发送器(UART)。

它内置了16字节的FIFO缓冲,最大通讯速率可达115Kb/s,是现代基于微处理器设备包括PC机和许多调制解调器的最普遍的通信接口。

16550的引脚如图11-1所示,其内部结构如图11-2所示。

图11-1 16550引脚图1.端口地址的使用16550内部有11个寄存器,在芯片选择有效的前提下,由芯片的寄存器选择输入线A2,A0和A0来确定访问的寄存器,芯片中采用两条措施来解决端口地址少的问题(只有8个地址)。

(1)保持寄存器和接收数据寄存器共用一个地址,以“写入”访问前者、“读出”访问后者加以区分。

(2)除数寄存器的高字节与中断允许寄存器使用相同地址,高字节和接收数据寄存器、发送保持寄存器使用相同的地址,为了区分,借用线路控制寄存器的最高位DLAB位来区分。

访问除数寄存器时,令DLAB位为“1”;访问接收数据寄存器、发送保持寄存器和中断允许寄存器时,则将DLAB位置“0”。

具体说明如表11-1所示。

图11-2 16550的内部结构图DLAB A2A1A0 被访问的寄存器0 000 接收数据寄存器(读),发送保持寄存器(写)0 001 中断允许寄存器IER1 000 波特率除数寄存器(低字节)1 001 波特率除数寄存器(高字节)X 010 中断识别寄存器IIR(只读),FIFO控制器FCR(只写)X 011 线路控制寄存器LCRX 100 MODEM控制寄存器MCRX 101 线路状态寄存器LSRX 110 MODEM状态寄存器MSRX 111 Scratch寄存器2.(1)线路控制寄存器(LCR),主要用于指定异步串行通信的数据格式。

可编程串行通信接口芯片16550与8250

可编程串行通信接口芯片16550与8250
DSR CTS △RLSD △RI
D1
△DSR
D0
△CTS
△表示变化的状态
△允许发送(CTS) △ 数据装置就绪(DSR) △ 响铃指示 △ 数据载波检测(DCD)
2023年5月4日星期四
7.中断允许寄存器IER
反映了接收器和发送器以及Modem是否允许中 断的情况,通过设置可以指定其中的某些部件 允许中断。它是一个可读可写的寄存器。
其它引脚
1. 电源及时钟VCC,GND,XTLA1,XTLA2 2. 数据线:D7~D0 3. 片选信号:CS0,CS1和/CS2(输入) 4. 选通信号:
地址输入选通: /ADS 数据输入选通:DISTR和/DISTR(接/IOR) 数据输出选通:DOSTR和/DOSTR(接/IOW) 5. 主复位:MR 6. 接收时钟: =接收波特率的16倍 7. 清除发送: /CTS 8. 数据装置(MODEM)准备好: /DSR 9. 接收线路信号检测: /RLSD(有效时表示Modem检测数据载波 10.振铃指示:/RI 有效表示Modem已经接收到一个电话振铃信号
读/写操作 OUT (写) IN (读) IN(读)或 OUT(写) IN(读)或 OUT(写) IN(读)或 OUT(写) IN (读) IN(读)或 OUT(写) IN(读)或 OUT(写) IN(读) IN(读)
2023年5月4日星期四
2.串行接口初始化
串行接口初始化的任务: (1)设置波特率 (2)确定通信的具体格式 (3)设置操作方式 (4)设定是否使用中断、是否自测试操作等
D7 D6 D5 D4
IEE 0 0
0
0
1 允许中断 0 禁止中断 1 允许中断 0 禁止中断
Modem状态中断 接收字符代码错 或接收中止状态中断

16550与PC机串口通信实验

16550与PC机串口通信实验

;T16550-2.asm;16550与PC机串口通信实验;***************根据CHECK配置信息修改下列符号值*******************INTR_IV ADD EQU 01CCH ;INTR对应的中断矢量地址INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0F7H ;INTR对应的中断屏蔽字PCI_INTCSR EQU 9438H ;PCI卡中断控制寄存器地址IOY0 EQU 9C00H ;片选IOY0对应的端口始地址;****************************************************************MY16550_0 EQU IOY0+00H*4 ;16550数据缓冲寄存器端口地址MY16550_1 EQU IOY0+01H*4 ;16550中断允许寄存器端口地址MY16550_3 EQU IOY0+03H*4 ;16550线路控制寄存器端口地址PC_COM1_0 EQU 03F8H ;PC机COM1数据缓冲寄存器端口地址PC_COM1_1 EQU 03F9H ;PC机COM1中断允许寄存器端口地址PC_COM1_3 EQU 03FBH ;PC机COM1线路控制寄存器端口地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDA TA SEGMENTCS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量STR1 DB 'Communication with computer!$' ;字符串DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCLIMOV DX,PCI_INTCSRSUB DX,19HIN AL,DXMOV DX,PCI_INTCSR ;初始化PCI卡中断控制寄存器MOV AX,1F00H ;向PCI_INTCSR中写入003F1F00HOUT DX,AXADD DX,2MOV AX,003FHOUT DX,AXMOV AX,0000H ;替换INTR的中断矢量MOV ES,AXMOV DI,INTR_IV ADDMOV AX,ES:[DI]MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址MOV AX,OFFSET MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址ADD DI,2MOV AX,ES:[DI]MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址MOV AX,SEG MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口段地址MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位IN AL,DXMOV IM_BAK,AL ;保存INTR原中断屏蔽字AND AL,INTR_IMOUT DX,ALMOV DX,PC_COM1_3 ;设置PC机COM1线路控制寄存器MOV AL,80H ;准备设置波特率除数寄存器OUT DX,ALMOV DX,PC_COM1_0 ;设置COM1除数寄存器低字节0CHMOV AL,0CH ;000C对应9600 bit/sOUT DX,ALMOV DX,PC_COM1_1 ;设置COM1除数寄存器高字节00HMOV AL,00HOUT DX,ALMOV DX,PC_COM1_3 ;设置COM1线路控制寄存器,初始化数据格式MOV AL,1BH ;偶校验,1位停止位,字符宽度为8OUT DX,ALMOV DX,PC_COM1_1 ;设置中断允许寄存器MOV AL,00H ;中断不打开OUT DX,ALMOV DX,MY16550_3 ;设置16550线路控制寄存器MOV AL,80H ;准备设置波特率除数寄存器OUT DX,ALMOV DX,MY16550_0 ;设置除数寄存器低字节0CHMOV AL,0CH ;000C对应9600 bit/sOUT DX,ALMOV DX,MY16550_1 ;设置除数寄存器高字节00HMOV AL,00HOUT DX,ALMOV DX,MY16550_3 ;设置线路控制寄存器,初始化数据格式MOV AL,1BH ;偶校验,1位停止位,字符宽度为8OUT DX,ALMOV DX,MY16550_1 ;设置中断允许寄存器MOV AL,01H ;允许接收缓冲寄存器满产生中断OUT DX,ALSTIMOV BX,OFFSET STR1MOV CX,001CHSEND: MOV DX,PC_COM1_0 ;将字符串数据写入COM1发送缓冲寄存器MOV AL,[BX]OUT DX,ALINC BXCALL DALL YLOOP SENDQUIT: CLIMOV DX,PCI_INTCSR ;恢复PCI卡中断控制寄存器MOV AX,0000HOUT DX,AXMOV AX,0000H ;恢复INTR原中断矢量MOV ES,AXMOV DI,INTR_IV ADDMOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址MOV ES:[DI],AXADD DI,2MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址MOV ES:[DI],AXMOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字MOV AL,IM_BAKOUT DX,ALSTIMOV AX,4C00H ;返回到DOSINT 21HMYISR PROC NEAR ;中断处理程序MYISRMOV DX,MY16550_0 ;读取16550接收缓冲寄存器数据并显示IN AL,DXMOV AH,0EHINT 10HOVER: MOV DX,PCI_INTCSRSUB DX,19HIN AL,DXMOV DX,PCI_INTCSR ;清PCI卡中断控制寄存器标志位ADD DX,2MOV AX,003FHOUT DX,AXMOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令MOV AL,20HOUT DX,ALMOV AL,20HOUT 20H,ALIRETMYISR ENDPDALL Y PROC NEAR ;软件延时子程序PUSH CXPUSH AXMOV CX,0100HD1: MOV AX,2000HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND START。

TLC16550C芯片的介绍(R232串行口通讯)

TLC16550C芯片的介绍(R232串行口通讯)

2 Tlc16c550引脚
Tlc16c550是TI公司的异步通 信芯片,他具有以下特点:管 脚与TLc16c750兼容;最高可 达1M的波特率,且波特率发 生器可编程设定;由软件设 定的FIFO以减少CPU中断;有 可编程的串行数据发送格式: 数据位长度为5、6、7、8; 具有奇偶校验或无校验方式; 停止位长度为1、1.5、2;采 用44脚PLCC封装。其引脚如 右 图 所 示 。
0010 0000
3 4
THR空 Modem状态
读IIR或写 THR
检测到数据载波,检测到振铃,读MSR modem状态变化等
5.3.3FIFO控制寄存器
FIFO的操作是通过FCR来设置,其字段定义如下文所描述。当使用FIFO 时,UART中最多可存放16字节数据;反之则只能存放一个数据,即相 当于只有一个字节大小。 位6和7:接收FIFO的跟踪级别,确定产生FIFO中断的数据数目。00:一 和 字节;01:4字节;10:8字节;11:14字节。 位4,5:保留。 , : 位3:DMA模式,当FCR0=1时,控制RXRDY和TXRDY(从0到1)。 : 位2:发送FIFO复位。写1时会清除发送FIFO,并自动清0。 : 位1:接收FIFO复位。写1时会清除接收FIFO,并自动清0。 : 位0:FIFO使能。写1时使能接收和发送FIFO,清0时会清除接收和发送 : FIFO。 当使能FIFO后,其工作方式有两种:中断方式和查询方式。 首先分析中断方式。当接收FIFO使能,且接收线路状态中断和接收 数据就绪中断使能(即FCR0=1,IER0=1,IER2=1),接收中断产生的 过程如下:当FIFO中数据的数目达到跟踪级别,UART产生中断并且IIR 中出现接收数据就绪的标志。当FIFO中数据的数目低于跟踪级别后,中 断信号返回无效状态,接收数据就绪的标志也自动清除。当一个字符从 RSR送入接收FIFO时,LSR中的数据就绪位(LSR0)将置起;当FIFO 变空,该位会自动清除。

16550说明

16550说明

2020年3月7日2时35分
12 guzhaolin@
IER LSR THR
EQU 3F9H EQU 3FDH EQU 3F8H
;中断允许寄存器 ;通信线状态寄存器 ;发送缓冲器
MOV AL,00000110B MOV DX,IER OUT DX,AL
;以中断方式发送接收数据
MOV XXX: IN
16550初始化流程
16550串口芯片的初 始化编程就是设置波 特率、确定串行通信 的数据帧格式、使能 等。
2020年3月7日2时35分
线路控制寄存 器D7(即 基地址+3 DLAB)=1
写除数低8位 基地址+0
设置 波特 率
写除数高8位 基地址+1
线路控制寄存
器D7(即
基地址+3
DLAB)=0
设置数据位数、 停止位、校验 位
TEST JZ MOV MOV OUT
DX,LSR AL,DX AL,20H
XXX DX,THR AL,‘A’ DX,AL
;以查询方式发送数据 ;发送数据
2020年3月7日2时35分
13 guzhaolin@
1 除数寄存器(高字节)DLM 0 中断标识寄存器IIR(只读)
FIFO控制器FCR(只写)
1 传输线控制寄存器LCR
3F8H 3F9H 3FAH 3FBH
× 1 0 1 传输线状态寄存器LSR
3FDH
2020年3月7日2时35分
4 guzhaolin@
线路控制寄存器LCR
DLAB
D7 D6 D5 D4 D3
2020年3月7日2时35分
11 guzhaolin@
16550初始化程序

16550串行通信

16550串行通信

;T16550-1.asm00000000;16550串行通讯基础实验00000000;****************根据查看端口资源修改下列符号值*******************00000000 IOY0 EQU 9C00H ;片选IOY0对应的端口始地址00000000;*****************************************************************00000000 MY16550_0 EQU IOY0+00H*4 ;16550数据缓冲寄存器端口地址00000000 MY16550_1 EQU IOY0+01H*4 ;16550中断允许寄存器端口地址00000000 MY16550_3 EQU IOY0+03H*4 ;16550线路控制寄存器端口地址00000000STACK1 SEGMENT STACK00000000DW 256 DUP(?)00000000STACK1 ENDS00000000CODE SEGMENT00000000ASSUME CS:CODE00000000START: MOV DX,MY16550_3 ;设置16550线路控制寄存器00000000 MOV AL,80H ;准备设置波特率除数寄存器00000000OUT DX,AL00000000MOV DX,MY16550_0 ;设置除数寄存器低字节0CH 00000000MOV AL,0CH ;000C对应9600 bit/s0*******OUT DX,AL 00000000MOV DX,MY16550_1 ;设置除数寄存器高字节00H00000000MOV AL,00H00000000OUT DX,AL00000000MOV DX,MY16550_3 ;设置线路控制寄存器,初始化数据格式0000000 00MOV AL,1BH ;偶校验,1位停止位,字符宽度为800000000OUT DX,AL00000000MOV DX,MY16550_1 ;设置中断允许寄存器00000000MOV AL,00H ;中断不打开00000000OUT DX,AL00000000SEND: MOV DX,MY16550_0 ;向发送缓冲寄存器写数00000000 MOV AL,55H00000000OUT DX,AL 00000000CALL DALLY00000000MOV AH,1 ;判断是否有按键按下00000000INT 16H00000000JZ SEND ;无按键则跳回继续等待,有则退出00000000QUIT: MOV AX,4C00H ;结束程序退出00000000INT 21H00000000DALLY PROC NEAR ;软件延时子程序00000000PUSH CX00000000PUSH AX00000000MOV CX,0100H00000000D1: MOV AX,1000H00000000D2: DEC AX00000000JNZ D200000000LOOP D100000000POP AX00000000POP CX00000000RET00000000DALLY ENDP00000000CODE ENDS00000000END START00000000。

串行接口实验

串行接口实验

课程 _ __ __ 第 1 页共页系别_计算机科学与技术系____________ __ 实验日期年月日专业班级计算机科学与技术班_组别_________ 实验报告日期年月日姓名___ ___学号报告退发 ( 订正、重做 ) 同组人_____ ________ _____ 教师审批签字串行接口实验一、实验目的:⑴掌握16550的工作方式及应用。

⑵学习有关串行通讯的知识。

⑶学习PC机串口的操作方法。

二、实验设备:PC机一台、TD-PIT/TD-PIT-B实验装置两套,示波器一台。

三、实验内容1、串行通讯基础实验。

编写程序,向串口连续发送一个数据(55H),将串口输出连接到示波器上,用示波器观察数据输出产生的波形。

2、串口自发自收应用实验。

编写程序,将一串数据发至串口,再接收回来显示。

四、实验说明及步骤1. 串行通讯基础实验对16550进行编程,不断向发送寄存器送数,用示波器观察TXD信号脉冲变化,仔细分析波形,理解波形原理。

串行传输的数据格式可设定如下:传输波特率为9600Baud,每个字节有一个逻辑“0”的起始位,8位数据位,1位逻辑1的停止位。

16550串行通讯基础实验参考接线图如图所示。

具体实验步骤如下所述:(1)编写实验程序,连续向发送寄存器写55H。

(2)设计实验线路图,并将PCI总线扩展卡上的ADD-ON总线与仿真ISA总线进行连接,完成线路连接,并将TXD与实验装置GND同示波器相连接。

(3)打开实验箱电源,运行程序,在示波器上观察波形。

(4)可以先改变发送的数据,再仔细观察波形。

2、串口自发自收应用实验实验要求将16550 RXD与TXD连接起来,实现一个自发自收的功能。

编写一个程序向串口写数,再将收到到的数据显示在屏幕上。

16550串口自发自收应用实验参考接线图如下:具体实验步骤如下所示:(1)编写实验程序,连续向发送寄存器写A到Z,并完成接收和显示。

(2)设计实验线路图,并将PCI总线扩展卡上的ADD-ON总线与防真ISA总线进行连接,完成线路连接。

串行通信实验原理

串行通信实验原理

串行通信实验原理序串行通信技术是一种基本的数字通信技术,它已经广泛地应用于现代的数字通信系统中。

与并行通信相比,串行通信在处理速度高、传输距离远、信号线使用少等方面具有很大的优势,因此在现代计算机内部以及计算机与外部设备之间的通信中应用广泛。

串行通信实验是理解串行通信原理和掌握串行通信应用的基本途径之一。

本文将介绍串行通信实验的原理、步骤以及注意事项,希望能够对读者在学习串行通信方面起到一定的帮助。

一、实验原理1.串行通信的基本概念串行通信是一种数据传输的方式,数据信号按照一个比特一个比特地顺序传输,每个比特之间通过同步信号进行分隔。

与之相对应的是并行通信,其数据信号在多根信号线上并行传输。

串行通信具有传输距离远、传输速度快、线路简单等优点,因此被广泛应用于各种数字通信系统中。

2.串行通信的实现串行通信的实现需要用到一些重要的电路,包括移位寄存器、同步信号发生器等。

移位寄存器用于将数据按照顺序存入、读出,并进行位移操作;同步信号发生器则用于发生用于分隔数据的同步信号,使得发送方和接收方的时序保持一致。

三、实验步骤本实验以ASM51单片机为例,演示了串行通信的应用过程。

1.硬件连接将示波器的通道1连接到P1.0引脚上,通道2连接到P3.0引脚上,波形分别对应发送数据和接收数据。

2.编写程序编写程序,对串行通信的数据发送、接收、位移等进行设置和控制,具体实现过程如下:(1) 设置移位寄存器,将需要发送的数据从高位开始存入。

(2) 设置同步信号发生器,发生用于分隔数据的同步信号。

(3) 控制寄存器进行位移操作,将数据按照顺序读出并发送。

(4) 在接收方,需要通过串行口中断方式对接收到的数据进行判断和处理。

3.实验操作按照编写的程序对硬件进行操作,发送一些测试数据,观察示波器上的波形变化,以及数据是否正确接收和处理。

四、实验注意事项1.串行通信实验需要耐心和细心,对硬件和程序进行仔细的连接和设置。

2.在传输数据时,需要保证发送方和接收方的时序保持一致,否则可能会导致数据发送失败或者数据接收错误,因此需要认真设置同步信号发生器。

硬件实验四16550

硬件实验四16550
ቤተ መጻሕፍቲ ባይዱ
代码:
port equ 0ffe0h ier equ 0ffe1h lcr equ 0ffe3h lsr equ 0ffe5h code
;16C550端口基地址 ;中断使能寄存器地址 ;线路控制寄存器地址 ;线路状态寄存器地址
segment assume cs:code,ds:code
org 1000h start: mov dx,lcr mov al,80h out dx,al mov dx,port mov al,30h out dx,al mov dx,ier mov al,00h out dx,al mov dx,lcr mov al,03h out dx,al mov dx,ier mov al,00h out dx,al
mov [di],al inc si inc di loop GetTS jmp $ code ends end start
硬件实验
实验四16550串口自发自收实验
内容:利用实验系统的16C550接口芯片,采 用自发自收的方法,将内存单元 4000h~400Fh数据发送 5000h~500Fh单元。 提示: 1、16550模块为实验台增配模块,故一些实验台内部 连线未连接,实验连线较多。其中: • 138译码电路连接:输入端A.B.C,其中A与A3相 连,B与A4相连,C与A5相连,138使能控制输入端 G与GS相连.(GS的寻址范围为FFC0h~FFFFh)。 • 16C550单元的CS片选信号与138译码单元的Y4相 连。故16C550的口地址为FFE0H-FFE7H.
连线图:
• 16C550单元的A0、A1、A2分别与地址总 线区A0、A1、A2相连。 • 16C550单元的MR复位、WR写信号、RD 读信号分别与/CLR、IOW、IOR相连。 • 16C550单元的XIN与8253单元的CLK1相 连(频率=1.8432MHz)。 • 16C550单元的TXD与RXD连接以实现自 发自收。 • 将位于点阵显示单元的D0..D7用8芯扁平 线与数据总线相连。

串行接口芯片16550

串行接口芯片16550

2,线路状态寄存器(LSR:Line Status Register):只读存储器, 用来向CPU提供数据接收和发送时的状态。这些状态可以被CPU查 询,也可以触发中断请求。 LSR格式
D7 ER 错误 标志 D6 D5 D4 BI 中止识别 指示 D3 FE 接收格式 错 D2 PE 接收奇 偶错 D1 OE 过载出 错 D0 DR 接收数据 准备
串行接口的基本结构如下(续):
⑷ 输入缓冲寄存器:它从输入移位寄存器中接收并行数 据,然后由CPU取走。
⑸ 控制寄存器:它接收CPU送来的控制字,由控制字的 内容,决定通信时的传输方式以及数据格式等。例如采用 异步方式还是同步方式,数据字符的位数,有无奇偶校验, 是奇校验还是偶校验,停止位的位数等参数。 ⑹ 状态寄存器:状态寄存器中存放着接口的各种状态信 息,例如输出缓冲区是否空,输入字符是否准备好等。在 通信过程中,当符合某种状态时,接口中的状态检测逻辑 将状态寄存器的相应位置“1”,以便让CPU查询。
TEMT THRE 发送器 发送保 空 持寄存 器
0---
0---发
0---等 0--- 无中
止状态
0---正常
1---出错
0---正

0---正常 0---数据未
准备好
无错 送器不 待发送 误 空 器 1--FIFO 1---发 1---发 至少 送器空 送器就 绪 有一 个错 误
1---出错 1---出
DLAB 0 0 1 1 X X X X X X A2 A1 A0 被访问的寄存器 000 接收数据寄存器RBR(读); 发送保持寄存器THR(写) 001 中断允许寄存器IER 000 波特率除数寄存器(低字节) 001 波特率除数寄存器(高字节) 010 011 100 101 110 111 中断识别寄存器IIR(只读); FIFO控制器FCR(只写) 线路控制寄存器LCR MODEM控制寄存器MCR 线路状态寄存器LSR MODEM状态寄存器MSR 暂存

串行实验报告

串行实验报告

实验名称:串行通信实验实验目的:1. 了解串行通信的基本原理和常用接口。

2. 掌握串行通信的编程方法和数据传输过程。

3. 验证串行通信在实际应用中的可行性。

实验器材:1. PC机一台2. 串口通信模块(如USB转串口模块)3. 短路板4. 连接线若干5. 相关软件(如串口调试助手)实验原理:串行通信是指数据在一条线路上按位进行传输的通信方式。

与并行通信相比,串行通信具有线路简单、传输速率较低等特点。

在串行通信中,数据按照一定的顺序一位一位地传输,每个数据位占用一个固定的位时间。

串行通信通常采用以下接口:RS-232、RS-485、RS-422等。

本实验采用USB转串口模块实现串行通信。

实验步骤:1. 将USB转串口模块插入PC机USB接口。

2. 在PC机上安装驱动程序,确保模块正常工作。

3. 使用短路板将USB转串口模块与PC机的串口连接。

4. 打开串口调试助手,设置串口参数:波特率、数据位、停止位、校验位等。

5. 编写串行通信程序,实现数据发送和接收。

6. 运行程序,观察串口调试助手中的数据传输情况。

实验内容:1. 发送数据(1)编写发送数据函数,实现数据的串行发送。

(2)在PC机上发送一段文本数据,观察串口调试助手中的接收情况。

2. 接收数据(1)编写接收数据函数,实现数据的串行接收。

(2)在PC机上发送一段文本数据,观察串口调试助手中的接收情况。

实验结果与分析:1. 发送数据实验结果:在串口调试助手中成功接收到了发送的文本数据,证明发送数据功能正常。

2. 接收数据实验结果:在串口调试助手中成功接收到了发送的文本数据,证明接收数据功能正常。

结论:通过本次实验,我们掌握了串行通信的基本原理和编程方法,验证了串行通信在实际应用中的可行性。

在实验过程中,我们遇到了以下问题:1. 串口参数设置不正确导致数据无法正常传输。

2. 编程时,数据发送和接收函数编写不正确。

针对以上问题,我们进行了以下改进:1. 仔细阅读相关资料,正确设置串口参数。

基本接口技术实验—825016550串行接口应用实验

基本接口技术实验—825016550串行接口应用实验

8250\16550串行接口应用实验1、实验目的a)掌握8250\16550的工作方式及应用编程。

b)掌握8250\16550的典型应用电路接法。

c)学习有关串行通信的知识和PC机串口的操作方法。

d)掌握使用16550实现双机通信的软件编制和硬件连接技术。

e)2、实验设备PC机2台,TD-PIT/B实验装置一套。

3、关于8250\16550应用程序的说明a)使用PCI_BIOS.EXE获取实验用PCI总线扩展卡分配的地址空间:16550使用BASE2,偏移地址为80H~87H;PC机COM1的端口地址为03F8H~03FEH。

b)串行通信的数据格式可设定如下:传输波特率为9600Baud,每个字节由一个起始位、8位数据位、1位停止位、偶校验。

4、实验内容a)串口自环收发应用实验。

采用PC机的串口1,编写自环收发程序,完成A~Z 字母的发送再接收回来显示。

程序:b)串口自发自收应用实验。

完成硬件电路设计,并编写程序,完成实验平台的自发自收实验,发送A~Z字母到串口,再接收回来显示(硬件连接:TXD与RXD相连)。

程序:code segmentassume cs:code start:mov dx,0ea83hmov al,80hout dx,almov dx,0ea80hmov al,12out dx,alinc dxmov al,0out dx,almov al,1bhmov dx,0ea83hout dx,almov al,03hmov dx,0ea84hout dx,alrev: call breakmov dx,0ea85hin al,dxtest al,01hjz revmov dx,0ea80hin al,dxcmp al,31hjz exitmov ah,14int 10htr:mov ah,1int 21hmov dx,0ea80hout dx,aljmp rev break proc nearmov ah,06hmov dl,0ffhint 21hje returnmov ax,4c00hint 21h return:ret break endpexit:mov ax,4c00hint 21hcode endsend startc)串口双机通讯应用实验。

串口8250(16550) 微机原理

串口8250(16550) 微机原理
550编程分为两部分:初始化对话和操 作对话。 PC中串口I/O端口译码为:COM0为 3F8H~3FFH,COM2为2F8H~2FFH。
16550初始化



初始化对话出现在硬件或软件复位后 由两部分组成:编程线路控制寄存器和 波特率产生器。 线路控制寄存器选择数据位数、停止位 个数以及奇偶校验位 波特率产生器用一个确定发生器波特率 的除数进行编程。
发送串行数据
接收串行数据


为从16550中读取接收到的信息,需要测 试线路状态寄存器的DR位。 在接收数据时,需测试数据有无错误
接收串行数据
串口错误




16550检测到的错误类型是奇偶校验错误、 帧错误和超限错误。 奇偶校验错误表明接收到的数据包含错 误的奇偶校验位。 帧错误表明起始位和停止位不在正确的 位置上 超限错误表明数据已超出内部接收器 FIFO缓冲器。
线路控制寄存器



最右边两位选择数据位数 S为停止位位数:S=0使用1 位;S=1,则对于5个数据 位使用1.5位数据位,对于 6,7,8则使用2位 接下来3位一起用于发送偶 校验或奇校验、发送无奇偶 校验或发送奇偶校验位位置 中的1或0. 其余两位用于发送一个间隔 符以及选择对波特率除数进 行编程。
16550引脚功能
16550引脚功能
16550引脚功能
16550引脚功能
16550引脚功能


16550可控制调制解调器 MODEM将串行数据的TTL电平转换成可通过电 话系统的音频信号。 16550上有6个引脚用于调制解调器控制: DSR(data set ready), DTR(data terminal ready), CTS(clear-to-send), RTS(request-tosend), RI(ring indicator)和DCD(data carrier detect)。 调制解调器作为数据装置,16550作为数据终 端。

16550标准

16550标准

16550标准是一种串行通信协议,主要在计算机的串行端口通信中使用。

该标准定义了数据传输的速率、数据格式、控制流程等规范,使得不同的计算机之间可以通过串行端口进行通信。

在16550标准中,主要定义了以下内容:
1. 波特率:数据传输的速率,即每秒传输的位数。

2. 数据格式:包括数据位、停止位、校验位等。

3. 控制流程:包括数据的发送和接收的流程,以及各种控制信号的规范。

在实现上,16550标准通常由硬件和软件两部分组成。

硬件部分主要实现串行端口的物理连接和通信信号的发送与接收,而软件部分则主要实现数据格式的转换和通信协议的处理。

需要注意的是,随着计算机技术的发展,串行通信已经逐渐被并行通信和高速串行通信所取代。

因此,16550标准在当今的应用已经比较少,但是在某些特定的场合,例如嵌入式系统、仪器仪表等,仍然有一定的应用价值。

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

(一)实验名称
串行通信实验16550
(二)实验内容
1)串行通讯基础实验。

编写程序,向串口连续发送一个数据(55H),将串口输出连
接到示波器上,用示波器观察数据输出产生的波形。

2)串口自发自收应用实验。

编写程序,将一串数据发送至串口,再接收回来显示。

(三)实验目的
1)学习和掌握有关串行通信的知识
2)学习和体会16550的工作原理、工作方式,利用其进行应用编程
3)学习和掌握PC机串口的操作方法
(四)实验日期、时间和地点
2011—1—4 6,7节
2011-1-7 1,节
微机高级实验室
(五)实验环境(说明实验用的软硬件环境及调试软件)
PC机一台,PIT-B实验箱一套,TDPIT、td-debug软件环境一套
(六)实验步骤(只写主要操作步骤,要简明扼要,还应该画出程序流程图或实验电路的具体连接图)
一:
二:自发自收
(七)实验结果(经调试通过的源程序的所有代码,应包含必要的说明文字)
MY_03F8 EQU 0E480H
MY_03FB EQU 0E483H
MY_03FD EQU 0E485H
DATAS SEGMENT
NUM DB 55H;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
DW 10 DUP(0);此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;初始化16550
MOV DX,MY_03FB ;16550控制寄存器地址送DX
MOV AL,80H ;置DLAB=1,设置除数寄存器
OUT DX,AL
CALL DALLY
MOV DX,MY_03F8 ;除数寄存器地址送DX
MOV AX,03C0H ;波特率为1200bit/s
OUT DX,AL
CALL DALLY
MOV AL,AH
INC DX
OUT DX,AL
CALL DALLY
MOV DX,MY_03FB ;16550控制寄存器地址送DX
MOV AL,0BH ;8位数据位,奇校验,1位停止位
OUT DX,AL
CALL DALLY
CALL GO
MOV AH,4CH
INT 21H
GO PROC NEAR
LOP1:
MOV DX,MY_03FD ;通信状态寄存器地址送DX
IN AL,DX
CALL DALLY
TEST AL,20H ;检测发送器是否准备就绪 JZ LOP1
LOP2:
MOV DX,MY_03F8
MOV AL,NUM
OUT DX,AL
CALL DALLY
CALL BREAK
JMP LOP2
RET
GO ENDP
DALLY PROC NEAR
PUSH CX
PUSH AX
MOV CX,0100H
D1: MOV AX,1000H
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALLY ENDP
BREAK PROC NEAR
MOV AH,06H
MOV DL,0FFH
INT 21H
JE RETURN
MOV AX,4C00H
INT 21H
RETURN:RET
BREAK ENDP
CODES ENDS
END START
二:自发自收
MY_03F8 EQU 0E480H
MY_03FB EQU 0E483H
MY_03FD EQU 0E485H
MY_03FC EQU 0E48CH
DATAS SEGMENT
STR1 DB'this is good'
LEN EQU $-STR1
STR2 DB 20 DUP (0),'$';此处输入数据段代码DATAS ENDS
STACKS SEGMENT
DW 10 DUP (0);此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
;初始化16550
MOV DX,MY_03FB ;16550控制寄存器地址送DX
MOV AL,80H ;置DLAB=1,设置除数寄存器
OUT DX,AL
CALL DALLY
MOV DX,MY_03F8 ;除数寄存器地址送DX
MOV AX,03C0H ;波特率为1200bit/s
OUT DX,AL
CALL DALLY
MOV AL,AH
INC DX
OUT DX,AL
CALL DALLY
MOV DX,MY_03FB ;16550控制寄存器地址送DX
MOV AL,1BH ;8位数据位,奇校验,1位停止位
OUT DX,AL
CALL DALLY
MOV DX,MY_03FC
MOV AL,03H
OUT DX,AL
CALL DALLY
CALL GO
LEA DX,STR2 ;显示str2
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
GO PROC NEAR
LEA BX,STR1
LEA DI,STR2
MOV CX,LEN
INC CX
LOP1:
DEC CX
JZ DONE
LOP2:
MOV DX,MY_03FD
IN AL,DX
TEST AL,20H ;测试发送是否就绪
JZ LOP2
MOV DX,MY_03F8
MOV AL,[BX] ;取出发送区域的待发送数据 OUT DX,AL
LOP3:
MOV DX,MY_03FD
IN AL,DX
TEST AL,1EH ;数据是否有错误
JNZ ERROR ;跳转错误处理
TEST AL,01H ;查看接受缓存器是否有信息 JZ LOP3
MOV DX,MY_03F8
IN AL,DX
MOV [DI],AL
INC BX
INC DI
JMP LOP1
CLC ;接收成功,清CY标志位JMP DONE
ERROR:
STC ;接收不成功,置CY标志位DONE:
RET
GO ENDP
DALLY: PUSH CX
PUSH AX
MOV CX,0100H
D1: MOV AX,2000H
D2: DEC AX
JNZ D2 LOOP D1
POP AX
POP CX RET
CODES ENDS
END START。

相关文档
最新文档