单片机与计算机串行通信的心得体会

[09-14 01:27:09]   来源:http://www.88dzw.com  电子制作   阅读:8878

文章摘要: printf (″\ n″) ; getch () ; } 可以得出如下结论:当cmd=0时,bioscom函数对串口初始化,写通信线控制寄存器和除数寄存器,设置数据帧格式和波特率,并写中断允许寄存器,清除所有中断允许位,串口读写只能工作于程序查询方式,但不写MODEM控制寄存器;当cmd=1时,bioscom函数发送数据,改写MODEM控制寄存器,使DTR、RTS信号有效,并查询MODEM状态寄存器,等待DSR、CTS两个回答信号,只有在一定延时内,两个回答信号都有效才发送成功;当cmd=2时,bioscom函数接收数据,改写MODEM控制寄存器使DTR有效,并查询M

单片机与计算机串行通信的心得体会,标签:电子小制作,http://www.88dzw.com
   printf (″\ n″) ;
   getch () ;   
   }

    可以得出如下结论:当cmd=0时,bioscom函数对串口初始化,写通信线控制寄存器和除数寄存器,设置数据帧格式和波特率,并写中断允许寄存器,清除所有中断允许位,串口读写只能工作于程序查询方式,但不写MODEM控制寄存器;当cmd=1时,bioscom函数发送数据,改写MODEM控制寄存器,使DTR、RTS信号有效,并查询MODEM状态寄存器,等待DSR、CTS两个回答信号,只有在一定延时内,两个回答信号都有效才发送成功;当cmd=2时,bioscom函数接收数据,改写MODEM控制寄存器使DTR有效,并查询MODEM状态寄存器,等待DSR回答信号,同样需在一定延时内得到回答否则接收失败;当cmd=3时,bioscom函数读取通信线状态寄存器和MODEM状态寄存器,并返回。

  弄清了bioscom函数的执行过程,就可以用左图所示的连接进行通信,使串口的DTR和DSR短接,RTS和CTS短接,这样,只要bioscom使DTR、RTS有效,便可得到所需的回答信号。在这种连接下,前面给出的不能通信的程序就可以正常通信了。

  那么,能否用右图所示的简单三线连接进行计算机和单片机的串行通信呢,答案是肯定的。只要用上述程序中给出的inportb和outportb两个函数直接驱动8250即可,其说明如下:

     unsigned char inportb (int portid) ;
     void char inportb (int portid ,unsigned char value) ;
     portid 是硬件端口地址;Value 是发送的字符数据。
     下面是笔者编写的初始化、写串口、读串口函数。
     void initcom(int com ,int bps)
     {int co-a ,io-a ;
     char ch ;
     switch (bps)
     {case 110 :ch = 0x03 ;break ;
     case 150 :ch = 0x23 ;break ;
     case 300 :ch = 0x43 ;break ;
     case 600 :ch = 0x63 ;break ;
     case 1200 :ch = 0x83 ;break ;
     case 2400 :ch = 0xa3 ;break ;
     case 4800 :ch = 0xc3 ;break ;
     case 9600 :ch = 0xe3 ;break ;
     default :ch = 0xa3 ;
     }
     co-a = (com - 1) ? 0x2fc :0x3fc ;
     io-a = (com - 1) ? 0x2f8 :0x3f8 ;
     bioscom(0 ,ch ,com - 1) ;
     outportb (co-a ,0) ;
     inportb (io-a) ;
     }

www.88dzw.com

   参数com是串口号,COM1为1,COM2为2。bps是所需的波特率。这里是用BIOScom函数实现初始化的大部分功能。若按照前边给出的8250初始化步骤,可以用下列程序段对COM1进行初始化:

     outportb (0x3fb ,0x80) ;
     outportb (0x3f9 ,0) ;
     outportb (0x3f8 ,0x30) ;
     outportb (0x3fb ,0x03) ;
     outportb (0x3f9 ,0) ;
     outportb (0x3fc ,0) ;

上一页  [1] [2] [3] [4]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作