⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8250'.htm

📁 8250扩展串口的单片机C51例程和相关资料。
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0079)http://202.194.193.6/csnews/bkjx/doc/weijijiekou/second/chapter12/c2-12-5-5.htm -->
<HTML><HEAD><TITLE>微型计算机原理</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK 
href="8250'.files/Book_Contents.css" rel=stylesheet type=text/css>
<SCRIPT language=JavaScript>
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
// -->
</SCRIPT>

<SCRIPT language=JavaScript src="8250'.files/newWindow.js">
</SCRIPT>

<META content="MSHTML 5.00.3700.6699" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff text=#000000>
<TABLE border=0 height=249 width="100%">
  <TBODY>
  <TR>
    <TD vAlign=top width="100%">
      <DIV align=center></DIV>
      <P class=Title_3>12.5.5 中断方式异步串行通信编程</P>
      <DIV align=left>
      <P align=left><FONT color=#000000>  一.要求 <BR><BR>   
      甲乙两台PC机采用中断方式进行异步串行通信共传送3840字节。发送和接收缓冲区的首址分别定为5000:8000H及5000:4000H。8250的中断请求线连到8259的IRQ4端,中断类型号为0CH。 
      <BR>   通信格式为:字长8位,停止位1位,奇校验,数据传输率为9600bit/S。 <BR><BR>   二.接口硬件 <BR><BR>   
      分两部分考虑,一部分是以8250为核心建立CPU与RS-232C之间的适配器接口电路;另一部分是两台PC机之间的连接。<BR>   
      1.PC/XT异步通信适配器 <BR>   适配器原理框图见图12.26。适配器除INS 
      8250芯片外,还设有振荡器(18.432MHz)经10分频后提供外部时钟信号以及在8250与RS-232C之间采用SN75150和SN75154实现TTL与RS-232C之间的电平转换,另外将8250的RCLK与<IMG 
      height=20 src="8250'.files/BOUDOUT.jpg" 
      width=69>引脚外部连接使发送和接收时钟相同,并且用OUT2信号来控制8250的中断请求引脚INTRPT的输出。该引脚接到8259A的IR4输入端口,表明所使用的是第一个串口COM1。 
      <BR>   2.两台PC机之间的连接 <BR>   
      由于是近距离通信,可不用MODEM,只要把两机异步通信适配器的发送数据端2和接收数据端3互相交叉连接,把信号地(7)对接起来就行。这种方式称为零调制解调器方式如图12.18所示。<BR>   
      3.异步通信中断程序 <BR>  根据通信中断程序的特点,并结合一般中断处理的编程原则与方法,异步通信中断编程,一般包括: <BR>   
      (1)通信中断初始化 <BR>   
      ①修改中断向量表,按使用的串口COM1和COM2,接管中断0CH或中断0BH,使新的中断向量指向自行编制的通信中断程序。 <BR>   
      ②确定8250操作方式,设置中断允许寄存器相应位的允许或禁止(选择中断源类型),并允许中断操作(置MODEM控制寄存器<IMG height=20 
      src="8250'.files/out2.jpg" width=44>有效(D3=1))。<BR>   
      ③确定起止式通信协议,设置通信波特率及数据帧传输格式。<BR>   
      ④开放通信中断,对8259A-5中断控制器的屏蔽寄存器编程(OCW1),允许中断IRQ4或IRQ3。 <BR>   (2)通信中断主程序 
      <BR>   访该程序无法给出统一的模式,完全随用户应用的要求自行编制。<BR>   (3)通信中断服务程序 <BR>   
      该程序是中断处理的核心。一般分成如下三段: <BR>   
      ①判断发生中断的中断源类型,通过读取中断标识寄存器的标识位,找到相应中断服务程序的入口地址。<BR>   
      ②中断处理,对不同的中断类型,进行不同的处理:如果是接收器数据寄存器就绪中断(D2D1D0=100),则从8250数据寄存器读取数据;如果是发送器保持寄存器空中(D2D1D0=010),则从内存读取字符写到8250保持寄存器;如果是接收数据出错引起的中断(D2D1D0=110),则从8250线路状态寄存器读取状态进行分析,根据错误或间断,作出相应的处理;如果是MODEM状态变化引起的中断(D2D1D0=000),则从8250的MODEM状态寄存器读取状态进行分析,根据状态变化,作出相应的处理。 
      <BR>   ③判断有否尚未处理的中断。每种中断源处理后;要继续判别中断标识寄存器的最低位 
      IP是否为0。若为0,则再输入标识位指示的相应中断处理;若为1,则结束中断处理(通常发中断结束命令EOI到中断控制器),并以IRET返回被中断的通信子程序。 
      <BR>   程序分主模块和中断服务程序两部分。程序中使用了6个字型变量,其中RV-BYTE和 
      RV-POINT单元分别存放待收数据的个数及接收缓冲区的地址指针;TR-BYTE和TR-POINT单元分别存放待发数据的个数及发送缓冲区的地址指针;INT-SEG和INT-OFF单元分别存放原中断向量段基址及偏移地址。具体程序如下: 
      <BR><BR>   STACK   SEGMENT    STACK'STACK' <BR>          DW  256 
       DUP(0)<BR>   STACK   ENDS<BR>          ORG  5000H <BR>   DATA    
      SEGMENT'DATA' <BR>        INT-SEG   DW ? <BR>           INT-OFF   DW ? 
      <BR>        RV -POINT         DW    4000H <BR>        TR-POINT          DW 
         8000H <BR>        RV-BYTE          EQU    3840 <BR>        TR-BYTE    
            EQU    3840 <BR>  DATA    ENDS <BR>  CODE   SEGMENT 'CODE' <BR>   
      ASSUME CS:CODE,DS:DATA,SS:STACK <BR>   START:          MOV   AX,DATA 
               ;建立数据段寻址 <BR>                  MOV  DS,AX 
                ;保存中断向量,接管中断0CH <BR>                  MOV  AL,0CH 
                ;指定中断号0CH即COM1〕 <BR>                  MOV  AH,35H 
                ;获取中断0CH向量 <BR>                  INT  21H <BR>                  
      MOV  INT-OFF,BX         ;将返回的向量ES:BX <BR>                  MOV  BX,ES 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -