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

📄 interfacing the serial - rs-232 port part1-2.htm

📁 Parallel Port description of the communication port
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                printf("Address assigned to COM%d is %Xh\n",a+1,address);
    *ptraddr++;
   }
}
</PRE></UL>
        <P><A name=13><FONT size=+1>Table of Registers</FONT><BR>
        <HR>
        </A>
        <P></P>
        <P>
        <CENTER>
        <TABLE border=1>
          <TBODY>
          <TR>
            <TD>
              <CENTER><B>Base Address</B></CENTER></TD>
            <TD>
              <CENTER><B>DLAB</B></CENTER></TD>
            <TD>
              <CENTER><B>Read/Write</B></CENTER></TD>
            <TD>
              <CENTER><B>Abr. </B></CENTER></TD>
            <TD>
              <CENTER><B>Register Name </B></CENTER></TD></TR>
          <TR>
            <TD rowSpan=3>
              <CENTER>+ 0</CENTER></TD>
            <TD>
              <CENTER>=0</CENTER></TD>
            <TD>
              <CENTER>Write</CENTER></TD>
            <TD>
              <CENTER>- </CENTER></TD>
            <TD>
              <CENTER>Transmitter Holding Buffer </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>=0</CENTER></TD>
            <TD>
              <CENTER>Read</CENTER></TD>
            <TD>
              <CENTER>- </CENTER></TD>
            <TD>
              <CENTER>Receiver Buffer </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>=1</CENTER></TD>
            <TD>
              <CENTER>Read/Write</CENTER></TD>
            <TD>
              <CENTER>- </CENTER></TD>
            <TD>
              <CENTER>Divisor Latch Low Byte </CENTER></TD></TR>
          <TR>
            <TD rowSpan=2>
              <CENTER>+ 1</CENTER></TD>
            <TD>
              <CENTER>=0</CENTER></TD>
            <TD>
              <CENTER>Read/Write</CENTER></TD>
            <TD>
              <CENTER>IER </CENTER></TD>
            <TD>
              <CENTER>Interrupt Enable Register </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>=1</CENTER></TD>
            <TD>
              <CENTER>Read/Write</CENTER></TD>
            <TD>
              <CENTER>- </CENTER></TD>
            <TD>
              <CENTER>Divisor Latch High Byte </CENTER></TD></TR>
          <TR>
            <TD rowSpan=2>
              <CENTER>+ 2</CENTER></TD>
            <TD>
              <CENTER>-</CENTER></TD>
            <TD>
              <CENTER>Read</CENTER></TD>
            <TD>
              <CENTER>IIR </CENTER></TD>
            <TD>
              <CENTER>Interrupt Identification Register</CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>-</CENTER></TD>
            <TD>
              <CENTER>Write</CENTER></TD>
            <TD>
              <CENTER>FCR </CENTER></TD>
            <TD>
              <CENTER>FIFO Control Register </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>+ 3</CENTER></TD>
            <TD>
              <CENTER>-</CENTER></TD>
            <TD>
              <CENTER>Read/Write</CENTER></TD>
            <TD>
              <CENTER>LCR </CENTER></TD>
            <TD>
              <CENTER>Line Control Register </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>+ 4</CENTER></TD>
            <TD>
              <CENTER>-</CENTER></TD>
            <TD>
              <CENTER>Read/Write</CENTER></TD>
            <TD>
              <CENTER>MCR </CENTER></TD>
            <TD>
              <CENTER>Modem Control Register </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>+ 5</CENTER></TD>
            <TD>
              <CENTER>-</CENTER></TD>
            <TD>
              <CENTER>Read</CENTER></TD>
            <TD>
              <CENTER>LSR </CENTER></TD>
            <TD>
              <CENTER>Line Status Register </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>+ 6</CENTER></TD>
            <TD>
              <CENTER>-</CENTER></TD>
            <TD>
              <CENTER>Read</CENTER></TD>
            <TD>
              <CENTER>MSR </CENTER></TD>
            <TD>
              <CENTER>Modem Status Register </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>+ 7</CENTER></TD>
            <TD>
              <CENTER>-</CENTER></TD>
            <TD>
              <CENTER>Read/Write</CENTER></TD>
            <TD>
              <CENTER>- </CENTER></TD>
            <TD>
              <CENTER>Scratch Register </CENTER></TD></TR></TBODY></TABLE><FONT 
        size=-1>
        <CENTER>Table 5 : Table of Registers</CENTER></FONT></CENTER>
        <P></P>
        <P><A name=14><FONT size=+1>DLAB ?</FONT><BR>
        <HR>
        </A>
        <P></P>
        <P>You will have noticed in the table of registers that there is a DLAB 
        column. When DLAB is set to '0' or '1' some of the registers change. 
        This is how the UART is able to have 12 registers (including the scratch 
        register) through only 8 port addresses. DLAB stands for Divisor Latch 
        Access Bit. When DLAB is set to '1' via the line control register, two 
        registers become available from which you can set your speed of 
        communications measured in bits per second.</P>
        <P>The UART will have a crystal which should oscillate around 1.8432 
        MHZ. The UART incorporates a divide by 16 counter which simply divides 
        the incoming clock signal by 16. Assuming we had the 1.8432 MHZ clock 
        signal, that would leave us with a maximum, 115,200 hertz signal making 
        the UART capable of transmitting and receiving at 115,200 Bits Per 
        Second (BPS). That would be fine for some of the faster modems and 
        devices which can handle that speed, but others just wouldn't 
        communicate at all. Therefore the UART is fitted with a Programmable 
        Baud Rate Generator which is controlled by two registers.</P>
        <P>Lets say for example we only wanted to communicate at 2400 BPS. We 
        worked out that we would have to divide 115,200 by 48 to get a workable 
        2400 Hertz Clock. The "Divisor", in this case 48, is stored in the two 
        registers controlled by the "Divisor Latch Access Bit". This divisor can 
        be any number which can be stored in 16 bits (ie 0 to 65535). The UART 
        only has a 8 bit data bus, thus this is where the two registers are 
        used. The first register (Base + 0) when DLAB = 1 stores the "Divisor 
        latch low byte" where as the second register (base + 1 when DLAB = 1) 
        stores the "Divisor latch high byte."</P>
        <P>Below is a table of some more common speeds and their divisor latch 
        high bytes &amp; low bytes. Note that all the divisors are shown in 
        Hexadecimal.</P>
        <P>
        <CENTER>
        <TABLE border=1>
          <TBODY>
          <TR>
            <TD>
              <CENTER><B>Speed (BPS) </B></CENTER></TD>
            <TD>
              <CENTER><B>Divisor (Dec) </B></CENTER></TD>
            <TD>
              <CENTER><B>Divisor Latch High Byte </B></CENTER></TD>
            <TD>
              <CENTER><B>Divisor Latch Low Byte </B></CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>50 </CENTER></TD>
            <TD>
              <CENTER>2304 </CENTER></TD>
            <TD>
              <CENTER>09h </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>300 </CENTER></TD>
            <TD>
              <CENTER>384 </CENTER></TD>
            <TD>
              <CENTER>01h </CENTER></TD>
            <TD>
              <CENTER>80h </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>600 </CENTER></TD>
            <TD>
              <CENTER>192 </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD>
            <TD>
              <CENTER>C0h </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>2400 </CENTER></TD>
            <TD>
              <CENTER>48 </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD>
            <TD>
              <CENTER>30h </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>4800 </CENTER></TD>
            <TD>
              <CENTER>24 </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD>
            <TD>
              <CENTER>18h </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>9600 </CENTER></TD>
            <TD>
              <CENTER>12 </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD>
            <TD>
              <CENTER>0Ch </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>19200 </CENTER></TD>
            <TD>
              <CENTER>6 </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD>
            <TD>
              <CENTER>06h </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>38400 </CENTER></TD>
            <TD>
              <CENTER>3 </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD>
            <TD>
              <CENTER>03h </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>57600 </CENTER></TD>
            <TD>
              <CENTER>2 </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD>
            <TD>
              <CENTER>02h </CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>115200 </CENTER></TD>
            <TD>
              <CENTER>1 </CENTER></TD>
            <TD>
              <CENTER>00h </CENTER></TD>
            <TD>
              <CENTER>01h </CENTER></TD></TR></TBODY></TABLE><FONT size=-1>Table 6 : 
        Table of Commonly Used Baudrate Divisors</FONT> </CENTER>
        <P></P>
        <P><A name=15></A><FONT size=+1>Interrupt Enable Register 
        (IER)</FONT></I><BR>
        <HR>

        <P></P>
        <P>
        <CENTER>
        <TABLE border=1 width="80%">
          <TBODY>
          <TR>
            <TD>
              <CENTER><B>Bit</B></CENTER></TD>
            <TD>
              <CENTER><B>Notes</B></CENTER></TD></TR>
          <TR>
            <TD>
              <CENTER>Bit 7</CENTER></TD>
            <TD>Reserved</TD></TR>
          <TR>
            <TD>
              <CENTER>Bit 6</CENTER></TD>
            <TD>Reserved</TD></TR>
          <TR>
            <TD>
              <CENTER>Bit 5</CENTER></TD>
            <TD>Enables Low Power Mode (16750)</TD></TR>
          <TR>
            <TD>
              <CENTER>Bit 4</CENTER></TD>
            <TD>Enables Sleep Mode (16750)</TD></TR>

⌨️ 快捷键说明

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