《现代微机原理与接口技术接口第8章.ppt》由会员分享,可在线阅读,更多相关《现代微机原理与接口技术接口第8章.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、现代微机原理与接口技术现代微机原理与接口技术8.1 串行通信的基本概念串行通信的基本概念 串行通信是将数据的各个位一位一位地,通过串行通信是将数据的各个位一位一位地,通过单条单条1位宽的传输线按顺序分时传送,即通信双方位宽的传输线按顺序分时传送,即通信双方一次传输一个二进制位。串行通信与并行通信是一次传输一个二进制位。串行通信与并行通信是两种基本的数据通信方式。两种基本的数据通信方式。发送方在发送前要将并行数据转成串行数据,发送方在发送前要将并行数据转成串行数据,接收方接收后要完成串行数据到并行数据的转接收方接收后要完成串行数据到并行数据的转换。换。8.1.1 串行通信串行通信 第第 8 章章
2、 串行接口串行接口 1现代微机原理与接口技术现代微机原理与接口技术与并行通信相比,串行通信的优势与并行通信相比,串行通信的优势传输距离长,可达到数千公里传输距离长,可达到数千公里长距离内串行数据传送速率会比并行数据传送长距离内串行数据传送速率会比并行数据传送速率快,串行通信的通信时钟频率较并行通速率快,串行通信的通信时钟频率较并行通信容易提高。信容易提高。抗干扰能力强,串行通信信号间的互相干扰抗干扰能力强,串行通信信号间的互相干扰完全可以忽略。完全可以忽略。费用低。费用低。2现代微机原理与接口技术现代微机原理与接口技术8.1.2串行通信方式串行通信方式单工方式单工方式TR半双工方式半双工方式T
3、RRT全双工方式全双工方式TTRR3现代微机原理与接口技术现代微机原理与接口技术8.1.3 波特率与收波特率与收/发时钟发时钟 波特率波特率:单位时间内传送的二进制数据的位数,以:单位时间内传送的二进制数据的位数,以位位/秒(秒(b/s)表示,也称为数据位率。)表示,也称为数据位率。它是衡量串行它是衡量串行通信速率的重要指标通信速率的重要指标。收收/发时钟发时钟直接决定了通信线路上数据传输的速率,直接决定了通信线路上数据传输的速率,对于收对于收/发双方之间数据传输的同步有十分重要的作发双方之间数据传输的同步有十分重要的作用。用。一般在发送端是由发送时钟的一般在发送端是由发送时钟的下降沿下降沿使
4、送入移位使送入移位寄存器的数据串行移位输出。而接收端则是在接收寄存器的数据串行移位输出。而接收端则是在接收时钟的时钟的上升沿上升沿作用下将传输线上的数据逐位打入移作用下将传输线上的数据逐位打入移位寄存器。位寄存器。4现代微机原理与接口技术现代微机原理与接口技术 为了提高串行通信的抗干扰能力,往往用多为了提高串行通信的抗干扰能力,往往用多个时钟调制一个二进制数据,调制一个二进制个时钟调制一个二进制数据,调制一个二进制数据的收数据的收/发时钟个数称为发时钟个数称为波特率系数波特率系数n。收收/发时钟频率与波特率之间的关系:发时钟频率与波特率之间的关系:收收/发时钟频率发时钟频率=n波特率波特率一般
5、一般n取取1,16,32和和64等。对于异步通信,常采用等。对于异步通信,常采用n=16;对于同步通信,则必须取;对于同步通信,则必须取n=1。5现代微机原理与接口技术现代微机原理与接口技术8.1.4 信号调制解调信号调制解调 原因:原因:如果数字信号直接在公用电话网的传输线上如果数字信号直接在公用电话网的传输线上传送,高次谐波的衰减会很厉害,从而使信号到了接传送,高次谐波的衰减会很厉害,从而使信号到了接收端后将发生严重畸变和失真。收端后将发生严重畸变和失真。解决:解决:发送方使用发送方使用调制器调制器(Modulator),把要传),把要传送的送的数字信号数字信号调制转换为适合在线路上传输的
6、调制转换为适合在线路上传输的音频模音频模拟信号拟信号;接收方则使用;接收方则使用解调器解调器(Demodulator)从线)从线路上测出这个模拟信号,并还原成数字信号。路上测出这个模拟信号,并还原成数字信号。6现代微机原理与接口技术现代微机原理与接口技术调制方法:调制方法:按照调制技术的不同分为调频按照调制技术的不同分为调频(FM)、调幅()、调幅(AM)和调相()和调相(PM)三种,)三种,根据传输数字信号的变化规律去调整载波的频根据传输数字信号的变化规律去调整载波的频率、幅度或相位率、幅度或相位 7现代微机原理与接口技术现代微机原理与接口技术8.1.5 信道复用信道复用时分多路复用时分多路
7、复用TDM(Time Division Multiplexing),就,就是将一条物理传输线路按时间分成若干时间片轮换地是将一条物理传输线路按时间分成若干时间片轮换地为多个信号所占用,每个时间片由复用的一个信号占为多个信号所占用,每个时间片由复用的一个信号占用。用。频分多路复用频分多路复用FDM(Frequency Division Multiplexing)就是利用频率调制原理,将要同时传就是利用频率调制原理,将要同时传送的多个信号进行频谱搬移,使它们互不重叠地占送的多个信号进行频谱搬移,使它们互不重叠地占据信道频带的不同频率段,然后经发送器从同一信据信道频带的不同频率段,然后经发送器从同一
8、信道上同时或不同时地发送出去。道上同时或不同时地发送出去。计算机串行数据通信及其接口中使用时分多路复用计算机串行数据通信及其接口中使用时分多路复用系统。系统。8现代微机原理与接口技术现代微机原理与接口技术8.1.6 串行通信基本方式串行通信基本方式异步串行通信异步串行通信 在通信的数据流中,字符间异步,字符内在通信的数据流中,字符间异步,字符内部各位间同步。异步通信方式的部各位间同步。异步通信方式的“异步异步”主要主要体现在字符与字符之间通信没有严格的定时要体现在字符与字符之间通信没有严格的定时要求。然而,一旦传送开始,收求。然而,一旦传送开始,收/发双方则以预发双方则以预先约定的传输速率,在
9、时钟的作用下,传送这先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。个字符中的每一位。9现代微机原理与接口技术现代微机原理与接口技术同步串行通信同步串行通信 数据流中的字符与字符之间和字符内部的数据流中的字符与字符之间和字符内部的位与位之间都同步。同步串行通信是以数据块位与位之间都同步。同步串行通信是以数据块(字符块)为信息单位传送,而每帧信息包括(字符块)为信息单位传送,而每帧信息包括成百上千个字符,因此传送一旦开始,要求每成百上千个字符,因此传送一旦开始,要求每帧信息内部的每一位都要同步。帧信息内部的每一位都要同步。10现代微机原理与接口技术现代微机原理与接口技术8.2异步串行通
10、信协议异步串行通信协议11现代微机原理与接口技术现代微机原理与接口技术为了确保异步串行通信传输正确:为了确保异步串行通信传输正确:1 1)采用相反极性的起始位和停止位)采用相反极性的起始位和停止位/空闲位提供准确空闲位提供准确的时间基准的时间基准 2 2)接收器在每位的中心采样,以获得最大的收)接收器在每位的中心采样,以获得最大的收/发时发时钟频率偏差容限钟频率偏差容限 3 3)接收器采用比传送波特率更高频率的时钟来控制)接收器采用比传送波特率更高频率的时钟来控制采样时间,以提高采样的分辨能力和抗干扰能力。采样时间,以提高采样的分辨能力和抗干扰能力。12现代微机原理与接口技术现代微机原理与接口
11、技术例题:例题:异步传输异步传输7位位ASCII码,如果需要数据传输码,如果需要数据传输速率为速率为240字符字符/秒,使用秒,使用1位奇偶校验位和位奇偶校验位和1位位停止位,则:停止位,则:1)波特率应该是多少?)波特率应该是多少?2)有效数据位传输位是多少?)有效数据位传输位是多少?3)传输效率是多少?)传输效率是多少?答:答:1)波特率是)波特率是 (7位数据位位数据位+1位起始位位起始位+1位校验位位校验位+1位停止位位停止位)240 =2400b/s2)有效数据位传输位是)有效数据位传输位是:7240=1680b/s3)传输效率是:)传输效率是:1680/2400=70%13现代微机
12、原理与接口技术现代微机原理与接口技术8.3 串行接口串行接口RS-232C标准标准8.3.1 串行通信系统串行通信系统数据终端设备数据终端设备DTE数据源和目的地数据源和目的地数据通信设备数据通信设备DCE使数据符合线路要求使数据符合线路要求 14现代微机原理与接口技术现代微机原理与接口技术引脚引脚代号代号其他表示法其他表示法信号名信号名方向方向1AA(101)PG保护地保护地设备地设备地2BA(103)TxD,SD发送数据发送数据DTEDCE3BB(104)RxD接收数据接收数据DCEDTE4CA(105)RTS,RS请求发送请求发送DTEDCE5CB(106)CTS,CS允许允许/清除发清
13、除发送送DCEDTE6CC(108)DSR,MRDCE就绪就绪DCEDTE7AB(102)SG信号地信号地信号公共地信号公共地8CF(109)RLSD,DCD接收线路信号检测接收线路信号检测DCEDTE20CD(108.2)DTRDTE就绪就绪DTEDCE22CE(125)RI振铃指示振铃指示DCEDTE8.3.2 常用的常用的RS-232C信号线信号线15现代微机原理与接口技术现代微机原理与接口技术8.3.3 常用的常用的RS-232C连接连接1.使用使用MODEM16现代微机原理与接口技术现代微机原理与接口技术2.不使用不使用MODEM17现代微机原理与接口技术现代微机原理与接口技术3.简
14、单连接简单连接4.最简单连接最简单连接18现代微机原理与接口技术现代微机原理与接口技术8.3.4 电气特性电气特性1.应保证电平在应保证电平在(515)V之间之间 对于数据线:对于数据线:逻辑逻辑“1”(MARK)=-3V-15V,逻辑逻辑“0”(SPACE)=+3V+15V对于控制信号:对于控制信号:接通状态(接通状态(ON)即信号有效)即信号有效的电平的电平=+3V15V断开状态(断开状态(OUT)即信号无效)即信号无效的电平的电平=-3-15V。19现代微机原理与接口技术现代微机原理与接口技术2.必须进行电平转换必须进行电平转换 RS-232C接口采用的是负逻辑,其逻辑电平接口采用的是负
15、逻辑,其逻辑电平与与TTL电平不一样,不能兼容。因此,为了实现电平不一样,不能兼容。因此,为了实现与与TTL电路的连接,必须进行电平转换。电路的连接,必须进行电平转换。目前可以使用新型电平转换芯片目前可以使用新型电平转换芯片MAX232和和MAX232A(高速)双组(高速)双组RS-232C发送发送/接收器,接收器,实现实现TTL电平与电平与RS-232C电平双向转换。电平双向转换。20现代微机原理与接口技术现代微机原理与接口技术3.必须抗共模噪声干扰必须抗共模噪声干扰 RS-232C由于在发送器与接收器之间有公由于在发送器与接收器之间有公共信号地,不可能使用双端信号,因此共模噪共信号地,不可
16、能使用双端信号,因此共模噪声很容易引入信号系统中,且噪声幅度可高达声很容易引入信号系统中,且噪声幅度可高达好几伏,这是迫使好几伏,这是迫使RS-232C使用较高传输电压使用较高传输电压的主要原因。另一个原因是为了补偿传输线上的主要原因。另一个原因是为了补偿传输线上的信号衰减和沿线附加电平的影响。的信号衰减和沿线附加电平的影响。21现代微机原理与接口技术现代微机原理与接口技术4.4.处理好最大传输速率和最大传输线长度的关系处理好最大传输速率和最大传输线长度的关系 一般应用情况下,一般应用情况下,RS-232C的最高传输速率为的最高传输速率为20Kb/s,最大传输线长度为,最大传输线长度为30m。
17、22现代微机原理与接口技术现代微机原理与接口技术8.3.4 机械特性机械特性1.连接器连接器23现代微机原理与接口技术现代微机原理与接口技术24现代微机原理与接口技术现代微机原理与接口技术 在通信速率低于在通信速率低于20Kb/s时,时,RS-232C所能直接连所能直接连接的最大物理距离为接的最大物理距离为15m(50ft)。)。2.电缆长度电缆长度 使用特制的低电容电缆也能有效地提高电缆长度,使用特制的低电容电缆也能有效地提高电缆长度,可以达到可以达到150m(500ft)甚至更多。)甚至更多。RS-232C规定,若不使用规定,若不使用MODEM,则码元的畸变要,则码元的畸变要小于小于4%,
18、驱动器的负载电容应该小于,驱动器的负载电容应该小于2500pF,则单位,则单位(1ft)长度的电容值为)长度的电容值为NpF的电缆的长度应该是:的电缆的长度应该是:25现代微机原理与接口技术现代微机原理与接口技术8.4 异步通信适配器异步通信适配器 PC微机异步通信适配器是微机与微机、微机异步通信适配器是微机与微机、微机与微机与MODEM及微机与外设之间进行异步及微机与外设之间进行异步通信的接口。其核心是通信的接口。其核心是UART。常见的常见的UART主要有主要有INS8250、PC16450和和PC16550。此外,还有带更大缓冲的。此外,还有带更大缓冲的UART,称为称为PC16650和
19、和PC16750。26现代微机原理与接口技术现代微机原理与接口技术8.4.1 INS8250外部引脚外部引脚27现代微机原理与接口技术现代微机原理与接口技术1.并行数据并行数据I/O及其控制线及其控制线D7D0 8位双向三态数据线。位双向三态数据线。CS0,CS1和和 CS2 片选线。片选线。ADS 地址选通线地址选通线(锁存片选和内部寄存器选择锁存片选和内部寄存器选择)DISTR和和DISTR数据输入选通。数据输入选通。(读寄存器允许读寄存器允许)DOSTR和和DOSTR数据输出选通。数据输出选通。(写寄存器允许写寄存器允许)A0,A1和和A2 内部寄存器选择。内部寄存器选择。CSOUT 片
20、选输出。(片选输出。(为高表示该片被选中为高表示该片被选中)DDIS 驱动器禁止。驱动器禁止。(禁止处理器和禁止处理器和82508250在数据在数据线上的收发器动作线上的收发器动作)28现代微机原理与接口技术现代微机原理与接口技术2.串行数据串行数据I/O线线SOUT 串行数据输出。串行数据输出。SIN 串行数据输入。串行数据输入。XTAL1 外部时钟输入端。外部时钟输入端。XTAL2 基准时钟信号输出端。基准时钟信号输出端。BAUDOUT工作时钟输出。工作时钟输出。F工作时钟工作时钟=F基准时钟基准时钟除数寄存器除数寄存器=传送波特率传送波特率16RCLK 接收时钟输入。接收时钟输入。可和可
21、和BAUDOUT相接相接 29现代微机原理与接口技术现代微机原理与接口技术3.和和MODEM的握手信号线的握手信号线 RTS请求发送,输出线。请求发送,输出线。DSR数据设备就绪,输入线数据设备就绪,输入线 DTR数据终端就绪,输出线。数据终端就绪,输出线。RI振铃指示,输入线。振铃指示,输入线。RLSD接收线路信号检测,输入线。接收线路信号检测,输入线。CTS清除发送,输入线。清除发送,输入线。30现代微机原理与接口技术现代微机原理与接口技术4.中断请求,复位输入及其他信号线中断请求,复位输入及其他信号线 INTPRT 中断请求输出。中断请求输出。MR 主复位输入。主复位输入。OUT1和和O
22、UT2由用户指定的输出端。由用户指定的输出端。MODEM控制寄存器的第二、第三位决定。控制寄存器的第二、第三位决定。31现代微机原理与接口技术现代微机原理与接口技术UART内部结构内部结构 32现代微机原理与接口技术现代微机原理与接口技术DLABA2A1A0被访问的寄存器被访问的寄存器0000接收缓冲寄存器接收缓冲寄存器(读读),发送保持寄存器,发送保持寄存器(写写)0001中断允许寄存器中断允许寄存器1000波特率除数寄存器波特率除数寄存器(低字节低字节)1001波特率除数寄存器波特率除数寄存器(高字节高字节)X010中断识别寄存器中断识别寄存器(读读),FIFO控制器控制器(写写)X011
23、线路控制寄存器线路控制寄存器 X100MODEM控制寄存器控制寄存器X101线路状态寄存器线路状态寄存器X110MODEM状态寄存器状态寄存器X111Scratch寄存器寄存器DLAB是线路控制寄存器的是线路控制寄存器的D7位。位。33现代微机原理与接口技术现代微机原理与接口技术1.线路控制寄存器线路控制寄存器LCRD7 D6 D5 D4 D3 D2 D1 D0WLS0WLS1PENSTBEPSSPSBDLAB字符长度选择字符长度选择005位位016位位107位位118位位停止位选择停止位选择01位位11.5位位(D1D0=00)2位位(D1D000)奇偶校奇偶校验允许验允许奇偶校奇偶校验选择
24、验选择11偶校验偶校验01奇校验奇校验附加奇偶标志附加奇偶标志位选择位选择0不附加不附加1附加附加1位位中止设置中止设置1中止中止0正常正常除数寄存器除数寄存器访问允许访问允许0禁止禁止1允许允许A2A1A0=011 34现代微机原理与接口技术现代微机原理与接口技术2.线路状态寄存器线路状态寄存器LSRD7 D6 D5 D4 D3 D2 D1 D0DROEFEPEBITHRETSRE接收接收缓冲缓冲区满区满接收接收重叠重叠错错接收接收奇偶奇偶错错接收接收格式格式错错(无(无正确正确的停的停止位)止位)中止中止识别识别标志标志发送发送保持保持器空器空发送发送移位移位器空器空FIFO中中接收数据接
25、收数据错误错误(16550)A2A1A0=101 35现代微机原理与接口技术现代微机原理与接口技术3.发送保持寄存器发送保持寄存器THR 接收缓冲寄存器接收缓冲寄存器RBRD7 D0CPU来的来的8位数位数据并行进据并行进THRTHR低位到低位到高位串高位串行移位行移位到到SOUT引脚输引脚输出出D7 D0接收移位寄存器接收移位寄存器发送移位寄存器发送移位寄存器RBR低位到低位到高位从高位从SIN引脚引脚串行移串行移位进来位进来8位数据并行进位数据并行进CPU 发送方发送方接收方接收方DLAB=0,A2A1A0=00036现代微机原理与接口技术现代微机原理与接口技术4.波特率除数锁存器波特率除
26、数锁存器 这是一个软件控制的分频器,输出的工作时钟频这是一个软件控制的分频器,输出的工作时钟频率为率为16倍的波特率。倍的波特率。除数寄存器值除数寄存器值 =基准时钟频率基准时钟频率(16波特率)波特率)INS8250芯片输入的基准时钟频率为芯片输入的基准时钟频率为1.8432MHz,若波,若波特率为特率为4800b/s,则波特率除数为,则波特率除数为0018H,DLH中应填中应填00H,DLL中应填中应填18H。思考题:思考题:使用使用INS8250异步传输异步传输7位位ASCII码,如果需要数据码,如果需要数据传输速率为传输速率为240字符字符/秒,使用秒,使用1位奇偶校验位和位奇偶校验位
27、和1位停位停止位,波特率除数锁存器的值是多少?止位,波特率除数锁存器的值是多少?注意:注意:PC16550的基准时钟一般为的基准时钟一般为18.432MHz。DLAB=1,A2A1A0=001(高高)或或000(低低)37现代微机原理与接口技术现代微机原理与接口技术5.中断识别寄存器中断识别寄存器IIR D7 D6 D5 D4 D3 D2 D1 D0IPID1ID20未决未决中断中断指示指示0-有有1-无无中断中断类型类型标识标识超时中断超时中断0-不超时不超时1-超时超时允许允许64字节字节FIFO(16750)0-禁止禁止1-允许允许FIFO使使用指示用指示(16550)01-允许允许FI
28、FO但不可用但不可用11-允许允许FIFOA2A1A0=010(读)(读)38现代微机原理与接口技术现代微机原理与接口技术ID2 ID1中断类型中断类型优先权优先权11接收出错接收出错(重叠、奇偶错、格式错和重叠、奇偶错、格式错和中止中止)最高最高10接收缓冲器满接收缓冲器满次高次高01发送保持器空发送保持器空低低00MODEM状态状态(CTS、DSR、RI和和RLSD)改变改变最低最低39现代微机原理与接口技术现代微机原理与接口技术6.中断允许寄存器中断允许寄存器IER D7 D6 D5 D4 D3 D2 D1 D0I2EI1EI3E0类型类型2中中断断(接收接收缓冲器缓冲器满满)1-允许允
29、许0-屏蔽屏蔽类型类型1中断中断(发送发送保持器保持器空空)1-允许允许0-屏蔽屏蔽类型类型3中断中断(接收接收出错)出错)1-允许允许0-屏蔽屏蔽进入低进入低功耗模功耗模式式(16550)进入睡进入睡眠模式眠模式(16750)DLAB=0,A2A1A0=001 I0E0类型类型0中断中断(MODEM状态改状态改变变)1-运行运行0-屏蔽屏蔽40现代微机原理与接口技术现代微机原理与接口技术7.MODEM控制寄存器控制寄存器MCRA2A1A0=100 D7 D6 D5 D4 D3 D2 D1 D0DTRRTSOUT10数据数据终端终端就绪就绪请求请求发送发送辅助辅助输出输出1自动流自动流量控制量
30、控制(16750)环路环路检测检测(内内部自部自循环)循环)OUT20辅助辅助输出输出2,PC用做用做中断中断LOOP注意这里的注意这里的OUTi位极性和位极性和OUTi引脚相反。引脚相反。41现代微机原理与接口技术现代微机原理与接口技术8.MODEM状态状态寄存器寄存器MSRA2A1A0=110 D7 D6 D5 D4 D3 D2 D1 D0 CTS DSRTERIRLSDCTS位发位发生改生改变变DSR位发位发生改生改变变收到收到“振振铃指铃指示示”后沿后沿(下(下降沿)降沿)收到收到“数传机数传机就绪就绪”收到收到“清清除发除发送送”RLSDRIRLSD位位发生发生改变改变CTSDSR收
31、到收到“振振铃指铃指示示”收到收到“接接收线收线载波载波检测检测”42现代微机原理与接口技术现代微机原理与接口技术9.FIFO控制寄存器控制寄存器(FCR)A2A1A0=010(写)(写)16550后才有后才有D7 D6 D5 D4 D3 D2 D1 D0允许允许FIFO缓缓冲器冲器工作工作清除清除接收接收FIFO缓缓冲器冲器清除清除发送发送FIFO缓缓冲器冲器允许允许64字节字节FIFO(16750)保留保留DMA方方式选式选择择接收接收端中端中断触断触发器发器水平水平(LSB)接收接收端中端中断触断触发器发器水平水平(MSB)43现代微机原理与接口技术现代微机原理与接口技术触发器水平即是指
32、示在中断产生之前,接收缓冲触发器水平即是指示在中断产生之前,接收缓冲器应该装满多少个字节。器应该装满多少个字节。D7D6触发器水平触发器水平001字节字节014字节字节108字节字节1112字节字节44现代微机原理与接口技术现代微机原理与接口技术常用常用UART比较比较8250 16450165501665016750FIFO-16字节字节 32字节字节 64字节字节超时检测超时检测-低功耗模式低功耗模式-睡眠模式睡眠模式-自动流量控制自动流量控制-临时寄存器临时寄存器-45现代微机原理与接口技术现代微机原理与接口技术8.4.3 采用采用UART的异步通信适配器硬件逻辑的异步通信适配器硬件逻辑
33、1.PC机的串行口机的串行口串口串口号号COM1COM2COM3COM4基地基地址址3F82F83E82E8中断中断号号IRQ4 IRQ3 IRQ4 IRQ346现代微机原理与接口技术现代微机原理与接口技术2.PC机的串行口电路机的串行口电路47现代微机原理与接口技术现代微机原理与接口技术815芯片组芯片组中串口电平中串口电平转换电路转换电路48现代微机原理与接口技术现代微机原理与接口技术8.4.4 INS8250初始化初始化通过写除数寄存器通过写除数寄存器(端口(端口0和端口和端口1)设置波设置波特率特率通过写线路控制寄存器(端口通过写线路控制寄存器(端口3)设置通信数)设置通信数据格式。据
34、格式。通过写通过写MODEM控制寄存器控制寄存器MCR(端口端口4)设置设置MODEM控制字。控制字。通过写中断允许寄存器(端口通过写中断允许寄存器(端口1)设置中断)设置中断允许控制字。允许控制字。49现代微机原理与接口技术现代微机原理与接口技术movdx,3fbh;线路控制寄存器地址线路控制寄存器地址moval,80houtdx,al;使使DLAB=1,以便下面写除数,以便下面写除数;寄存器;寄存器movdx,3f8h;低位除数寄存器低位除数寄存器moval,0ch;9600波特率的除数低波特率的除数低8位位outdx,almoval,00incdx;高位除数寄存器高位除数寄存器outdx
35、,al50现代微机原理与接口技术现代微机原理与接口技术mov al,00011011b;偶校验、偶校验、1位停止位位停止位;8位数据位位数据位mov dx,3fbh;线路控制寄存器地址线路控制寄存器地址out dx,almov al,03h;mov dx,3fch;MODEM控制寄存器地址控制寄存器地址out dx,almov al,0;禁止中断禁止中断mov dx,3f9h;中断允许寄存器地址中断允许寄存器地址out dx,al51现代微机原理与接口技术现代微机原理与接口技术8.4.5 查询方式串行通信程序设计查询方式串行通信程序设计1.查询方式发送查询方式发送初始化初始化8250读读LSR
36、D5=1?发送一个字符发送一个字符发完?发完?结束结束YYNN52现代微机原理与接口技术现代微机原理与接口技术2.查询方式接收查询方式接收初始化初始化8250读读LSRD0=1?接收一个字符接收一个字符收完?收完?结束结束YYNN有错?有错?NY错误处理错误处理53现代微机原理与接口技术现代微机原理与接口技术1.通信中断初始化通信中断初始化8.4.6 中断方式串行通信程序设计中断方式串行通信程序设计修改中断向量,修改中断向量,按使用的端口按使用的端口COM1或或COM2,接管中断接管中断0CH或中断或中断0BH。确定确定INS8250操作方式,操作方式,设置中断允许寄存器相设置中断允许寄存器相
37、应位的允许或禁止,并允许中断操作(置应位的允许或禁止,并允许中断操作(置MCR的的D3=1)。)。确定起止式通信协议确定起止式通信协议,设置通信波特率及数据帧,设置通信波特率及数据帧传输格式。传输格式。开放通信中断开放通信中断,对,对8259A中断控制器的屏蔽寄存中断控制器的屏蔽寄存器编程(器编程(OCW1),),允许中断允许中断IRQ4或或IRQ3。54现代微机原理与接口技术现代微机原理与接口技术2.通信中断服务程序通信中断服务程序首首先先读读取取中中断断识识别别寄寄存存器器,判判断断中中断断源源,然然后后转转向向对对应应的的处处理理子子程程序序。判判断断中中断断源源,应应该该按按照照中中断
38、断优优先级别次序进行。先级别次序进行。当当中中断断识识别别寄寄存存器器D2D1=11时时,表表明明接接收收出出错错中中断断,需需要要再再读读取取线线路路状状态态寄寄存存器器,分分析析错错误误原原因因,再再进进行错误处理。行错误处理。可可能能出出现现多多个个中中断断源源同同时时引引发发中中断断。因因此此,每每处处理理完完一一种种中中断断源源后后,应应继继续续读读取取中中断断识识别别寄寄存存器器,检检测测D0是是否否为为“0”,当当D0=0时时,表表明明还还有有未未决决中中断断,应应该该继续分析中断源并进行中断处理。继续分析中断源并进行中断处理。从中断程序返回的条件是中断识别寄存器的从中断程序返回
39、的条件是中断识别寄存器的D0=1。55现代微机原理与接口技术现代微机原理与接口技术8.5 Win32串口编程串口编程8.5.1 Win32串口编程方法串口编程方法1.以文件方式打开串口以文件方式打开串口使用使用Win32 API中文件操作的有关函数来完成对串中文件操作的有关函数来完成对串口的访问。口的访问。2.使用现有的使用现有的ActiveX控件实现控件实现现在一般使用的是微软公司的现在一般使用的是微软公司的MSComm控件,它是控件,它是作为一个作为一个ocx来提供的。来提供的。3.直接嵌入汇编法直接嵌入汇编法这种方法只能用在这种方法只能用在Windows 98和和Windows 95操作
40、系操作系统下。在嵌入式汇编中,可直接对串口进行操作。统下。在嵌入式汇编中,可直接对串口进行操作。56现代微机原理与接口技术现代微机原理与接口技术(1)应用)应用CreateFile()来打开串口来打开串口HANDLE CreateFile(HANDLE CreateFile(LPCTSTRLPCTSTR lpFileName lpFileName,/文件名文件名 DWORDDWORD dwDesiredAccess dwDesiredAccess,/存取模式存取模式 DWORD DWORD dwShareModedwShareMode,/共享模式共享模式 LPSECURITY_ATTRIBUT
41、ESLPSECURITY_ATTRIBUTES lpSecurityAttributes lpSecurityAttributes,/NULL/NULL DWORDDWORD dwCreationDisposition dwCreationDisposition,/创建方法创建方法 DWORDDWORD dwFlagsAndAttributes dwFlagsAndAttributes,/文件属性和标志文件属性和标志 HANDLEHANDLE hTemplateFile hTemplateFile /临时文件句柄临时文件句柄 ););其中,其中,lpFileNamelpFileName指定要打
42、开的串口逻辑名,用字符串表示,指定要打开的串口逻辑名,用字符串表示,“COM1”“COM1”表示串口表示串口1 1,“COM2”“COM2”表示串口表示串口2 2。由于串口是硬件,所以由于串口是硬件,所以dwCreationDispositiondwCreationDisposition一般为一般为OPEN_EXISTINGOPEN_EXISTING。8.5.2以文件方式打开串口法以文件方式打开串口法57现代微机原理与接口技术现代微机原理与接口技术(2)初始化串口)初始化串口BOOL SetupComm(BOOL SetupComm(HANDLEHANDLE hFile hFile,/通信设备
43、句柄通信设备句柄DWORDDWORD dwInQueue dwInQueue,/输入缓冲区大小输入缓冲区大小 DWORDDWORD dwOutQueue dwOutQueue/输出缓冲区大小输出缓冲区大小 ););(3)关闭窗口)关闭窗口BOOL CloseHandle(BOOL CloseHandle(HANDLEHANDLE hObject hObject /需要关闭的设备句柄需要关闭的设备句柄 ););58现代微机原理与接口技术现代微机原理与接口技术(4)串口配置)串口配置BOOL GetCommState(BOOL GetCommState(HANDLEHANDLE hFile hFi
44、le,/通信设备句柄通信设备句柄LPDCBLPDCB lpDCB lpDCB/设备控制块设备控制块 ););BOOL SetCommState(BOOL SetCommState(HANDLEHANDLE hFile hFile,/通信设备句柄通信设备句柄LPDCBLPDCB lpDCB lpDCB/设备控制块设备控制块 ););59现代微机原理与接口技术现代微机原理与接口技术60现代微机原理与接口技术现代微机原理与接口技术(5)串口属性)串口属性BOOL GetCommProperties(BOOL GetCommProperties(HANDLEHANDLE hFile hFile,/通信
45、设备句柄通信设备句柄 LPCOMMPROPLPCOMMPROP lpCommProp lpCommProp/通信属性结构通信属性结构 ););61现代微机原理与接口技术现代微机原理与接口技术(6)读串口操作)读串口操作BOOL ReadFile(BOOL ReadFile(HANDLEHANDLE hFile hFile,/设备句柄设备句柄 LPVOIDLPVOID lpBuffer lpBuffer,/数据缓冲数据缓冲 DWORDDWORD nNumberOfBytesToRead nNumberOfBytesToRead,/读取的字节数读取的字节数 LPDWORDLPDWORD lpNum
46、berOfBytesRead lpNumberOfBytesRead,/实际读的字节数实际读的字节数 LPOVERLAPPEDLPOVERLAPPED lpOverlapped lpOverlapped /overlapped/overlapped结构结构););(7)写串口操作)写串口操作BOOL WriteFile(BOOL WriteFile(HANDLEHANDLE hFile hFile,/设备句柄设备句柄 LPVOIDLPVOID lpBuffer lpBuffer,/数据缓冲数据缓冲 DWORDDWORD nNumberOfBytesToWrite nNumberOfBytesT
47、oWrite,/写的字节数写的字节数 LPDWORDLPDWORD lpNumberOfBytesWrite lpNumberOfBytesWrite,/实际写的字节数实际写的字节数 LPOVERLAPPEDLPOVERLAPPED lpOverlapped lpOverlapped /overlapped/overlapped结构结构););62现代微机原理与接口技术现代微机原理与接口技术(8)异步)异步I/O操作操作异步(重叠)异步(重叠)I/OI/O操作是指应用程序可以在后台读或写数据,而操作是指应用程序可以在后台读或写数据,而在前台做其他事情。要异步操作,需要使用,这首先要在前台做其他
48、事情。要异步操作,需要使用,这首先要CreateFileCreateFile()()函数的函数的dwFlagAndAttributesdwFlagAndAttributes参数中使用参数中使用FILE_FLAG_OVERLAPPEDFILE_FLAG_OVERLAPPED标识,读写串口必须指定标识,读写串口必须指定OVERLAPPEDOVERLAPPED结构:结构:typedef struct _OVERLAPPED typedef struct _OVERLAPPED ULONG_PTR Internal;ULONG_PTR Internal;/操作系统保留操作系统保留ULONG_PTR I
49、nternalHigh;ULONG_PTR InternalHigh;/操作系统保留操作系统保留 DWORD Offset;DWORD Offset;/文件传输的初始位置文件传输的初始位置DWORD OffsetHigh;DWORD OffsetHigh;/文件传输的高位字文件传输的高位字HANDLE hEvent;HANDLE hEvent;/I/O/I/O操作完成后触发的事操作完成后触发的事件件 OVERLAPPED;OVERLAPPED;63现代微机原理与接口技术现代微机原理与接口技术异步异步I/OI/O操作可以用操作可以用GetOverlappedResult()GetOverlapp
50、edResult()函数来获得结果函数来获得结果BOOL GetOverlappedResult(BOOL GetOverlappedResult(HANDLEHANDLE hFile hFile,/设备句柄设备句柄 LPOVERLAPPEDLPOVERLAPPED lpOverlapped lpOverlapped,/overlapped/overlapped结构结构 LPDWORDLPDWORD lpNumberOfBytesTransferred lpNumberOfBytesTransferred,/传送的字节传送的字节数数 BOOLBOOL bWait bWait /指定函数是否等待