《微机接口实验报告16550串口控制器应用实验.doc》由会员分享,可在线阅读,更多相关《微机接口实验报告16550串口控制器应用实验.doc(6页珍藏版)》请在三一办公上搜索。
1、【实验目的】掌握16550的工作方式及应用。学习PC机串口的操作方法。【试验设备】PC微机一台、TD-PIT+实验系统一套、示波器一台。【实验内容】编写程序,向串口连续发送一个数据53H(“1”的个数为偶数)或57H(“1”的个数为奇数)。将串口输出连接到示波器上,用示波器观察数据输出产生的波形,分析串行数据格式。【实验原理】16550是一种连接任何类型虚拟串行接口的可编程通信接口,与Intel微处理器完全兼容的使用非常广泛的异步接收器/发送器(UART)。它内置了16字节的FIFO缓冲,最大通讯速率可达115Kb/s,是现代基于微处理器设备包括PC机和许多调制解调器的最普遍的通信接口。165
2、50的引脚如图11-1所示,其内部结构如图11-2所示。图11-1 16550引脚图1.端口地址的使用16550内部有11个寄存器,在芯片选择有效的前提下,由芯片的寄存器选择输入线A2,A0和A0来确定访问的寄存器,芯片中采用两条措施来解决端口地址少的问题(只有8个地址)。(1)保持寄存器和接收数据寄存器共用一个地址,以“写入”访问前者、“读出”访问后者加以区分。(2)除数寄存器的高字节与中断允许寄存器使用相同地址,高字节和接收数据寄存器、发送保持寄存器使用相同的地址,为了区分,借用线路控制寄存器的最高位DLAB位来区分。访问除数寄存器时,令DLAB位为“1”;访问接收数据寄存器、发送保持寄存
3、器和中断允许寄存器时,则将DLAB位置“0”。具体说明如表11-1所示。图11-2 16550的内部结构图表11-1 16550内部寄存器地址及其选择方法DLAB A2A1A0被访问的寄存器 0 000 接收数据寄存器(读),发送保持寄存器(写) 0 001 中断允许寄存器IER 1 000 波特率除数寄存器(低字节) 1 001 波特率除数寄存器(高字节) X 010 中断识别寄存器IIR(只读),FIFO控制器FCR(只写) X 011 线路控制寄存器LCR X 100 MODEM控制寄存器MCR X 101 线路状态寄存器LSR X 110 MODEM状态寄存器MSR X 111 Scr
4、atch寄存器 2. 寄存器控制字说明(1)线路控制寄存器(LCR),主要用于指定异步串行通信的数据格式。见表11-2。表11-2 LCR格式D6D5D4D3D2D1D0DLABSBSPEPSPENSTBWLS1WLS0除数存器访问允许中止设定附加奇偶标志位选择奇偶校验选择奇偶校验允许停止位选择字符长度选择1:允许0:禁止1:中止0:正常1:附加1位0:不附加11:偶校验01:奇校验X0:无校验0:1位停止位1:1.5或2位停止位(根据D1D0)区分)00:5位 01:6位10:7位 11:8位(2)线路状态寄存器(LSR),主要是向处理器提供有关数据传输的状态。见表11-3。表11-3 LS
5、R格式D7D6D5D4D3D2D1D0TSRETHREB1FEPEOEDRFIFO中接收数据错误发送移位寄存器空发送保持寄存器空中止识别指示接收格式错接收奇偶错接收重叠错接收缓冲区满(3)波特率除数寄存器,用该寄存器设置串行数据的传送波特率。除数寄存器值基准时钟频率(16波特率)16550芯片输入的基准时钟频率为1.8432MHz,若波特率为9600b/s,则除数寄存器值为000CH,DLH中应填00H,DLL中应填0CH。16550常用波特率参数见表11-4。表11-4 常用的波特率参数表DLAB A2A1A0被访问的寄存器 0 000 接收数据寄存器(读),发送保持寄存器(写) 0 001
6、 中断允许寄存器IER 1 000 波特率除数寄存器(低字节) 1 001 波特率除数寄存器(高字节) X 010 中断识别寄存器IIR(只读),FIFO控制器FCR(只写) X 011 线路控制寄存器LCR X 100 MODEM控制寄存器MCR X 101 线路状态寄存器LSR X 110 MODEM状态寄存器MSR X 111 Scratch寄存器 (4) 中断允许寄存器(IER),16550共有4级中断,按优先级从高到低依次为:接收出错中断、接收缓冲器满中断、发送保持寄存器空中断和MODEM输入状态改变中断。这些中断的允许或屏蔽由IER来控制。见表11-5。表11-5 IER格式D7
7、D6 D5D4D3 D2 D1 D0 0 0 00I0E I3E I1E I2E 类型0中断 MODEM状态改变1允许 0屏蔽 类型3中断接收出错 1允许 0屏蔽 类型1中断 发送保持器空1允许 0屏蔽 类型2中断 接收缓冲区满 1允许 0屏蔽 (5) 中断标识寄存器(IIR),当16550处于中断处理方式,IIR指出有无待处理的中断发生及其类型,并且封锁比此类优先级低的所有类型中断。见表11-6。表11-6 IIR格式D7D6D5D4D3D2D1D0-FIFO指示标志00超时中断中断类型标识未决中断指示00无FIFO01允许FIFO,但不可用11允许FIFO0不超时1 超时11接收出错10接
8、收缓冲器满01发送保持器空00MODEM状态改变0有1无(6) MODEM控制寄存器(MCR),MCR控制芯片的4个引脚的输出和芯片的环路检测。见表11-7。表11-7 MCR格式D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 环路检测 输出2 输出1 请求发送 数据终端就绪 0正常收发 1内部自循环 1OUT2置01OUT1置01RTS置01DTR置0 (7) MODEM状态寄存器(MSR),MSR反映UART与通信设备(如MODEM)之间联络信号的当前状态以及这些信号的变化情况。见表11-8。表11-8 MSR格式D7D6D5D4D3D2D1D0RLSDRIDSRCTSRLSD
9、TERIDSRCTS收到“接收线载波检测”收到“振铃指示”收到“数传机就绪”收到“清除发送”RLSD位发生改变收到“振铃指示后沿”DSR位发生变化CTS位发生变化说明: D71表示输入引脚RLSD0,MODEM收到来自电话线的载波信号。 D61表示输入引脚RI0,MODEM收到振铃信号。D51表示输入引脚DSR0,MODEM做好了发送准备,请16550准备接收。 D41表示输入引脚CTS0,MODEM做好了接收准备,16550可以发送数据。D3,D1,D0位为“1”是说明在上次读取MSR之后,MSR的D7,D5,D4中相应位发生了变化。D2位为“1”是说明输入到芯片的RI已由逻辑“1”状态变成
10、逻辑“0”状态。 (8) FIFO控制寄存器(FCR),16550增加了一个FIFO缓冲器,用于缓冲正在发出或接收的数据,这是早期的UART器件所没有的。FCR各位意义见表119。表11-9 FCR格式位意义位意义0允许FIFO缓冲器工作4保留1清除接收FIFO缓冲器5不用2清除发送FIFO缓冲器6接收端中断触发器水平(LSB)3DMA方式7接收端中断触发器水平(MSB)【实验说明及步骤】对16550进行编程,不断向发送寄存器写数,用示波器观察TXD信号脉冲变化,仔细分析波形,理解波形原理。串行传输的数据格式可设定如下:传输波特率为9600baut,每个字节有一个逻辑“0”的起始位,8位数据位
11、,1位逻辑“1”的停止位,如图11-3所示。实验步骤如下: (1)确认从PC机引出的两根扁平电缆已经连接在实验平台上; (2)首先运行CHECK程序,查看I/O空间始地址; (3)利用查出的地址编写程序,连续向发送寄存器写55H,然后编译链接; (4)参考图11-5所示连接实验线路。并将TXD与实验装置GND同示波器相连接; (5)运行程序,在示波器上观察波形;(6)可以改变发送的数据,再仔细观察波形。图11-3 16550串口应用实验参考程序流程图图11-4 串行传输的数据格式图11-5 16550串口应用实验参考接线图【汇编源程序】I0Y0EQU0DC00HMY16550_0EQUI0Y0
12、+00H*4MY16550_1EQUI0Y0+01H*4MY16550_3EQUI0Y0+03H*4STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,MY16550_3MOVAL,80HOUTDX,ALMOVDX,MY16550_0MOVAL, 0CHOUTDX,ALMOVDX,MY16550_1MOVAL,00HOUTDX,ALMOVDX,MY16550_3MOVAL,1BHOUTDX,ALMOVDX,MY16550_1MOVAL,00HOUTDX,ALSEND:MOVDX,MY16550_0MOVAL,53HOUTDX,ALCALLDALLYMOVAH,1INT16HJZSENDQUIT:MOVAX,4C00HINT21HDALLYPROCNEARPUSHCXPUSHAXMOVCX,0100HD1:MOVAX,1000HD2:DECAXJNZD2LOOPD1POPAXPOPCXRETDALLYENDPCODEENDSENDSTART【实验结果】截图: 53H奇校验波形图 53H偶校验波形图 57H奇校验波形图 57H偶校验波形图取一帧: 53H奇校验波形图(一帧) 53H偶校验波形图(一帧) 57H奇校验波形图(一帧) 57H偶校验波形图(一帧)