首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
单片机与计算机串行通信的心得体会
来源:本站整理  作者:佚名  2010-08-29 08:01:16



  COM1和COM2初始化后,将COM2的MODEM控制寄存器(2FCH)的D0、D1位置1,使COM2的DTR、RTS有效,从而使COM1的DSR、CTS有效。程序显示的结果是0,说明发送正确。通过改变程序中宏定义COM的值,可以改变COM1的DSR、CTS信号有效的组合。结果表明,只有COM=3时,即DSR和CTS都有效时,BIOScom才能发送成功。当COM取1、2或0,即DSR、CTS分别有效或全无效时,程序显示8000,表明发送失败。

  利用下列程序段对bioscom的接收功能进行测试:

    # include″dos. h″
    # include″bios. h″
    # define COM 1
    main ()
   {int a ;
   outportb (0x3fc ,0) ;
   outportb (0x2fc ,0) ;
   bioscom(0 ,0xa3 ,0) ;
   bioscom(0 ,0xa3 ,1) ;
   outportb (0x3fc ,COM) ;
   outportb (0x3f8 ,65) ;
   delay (10000) ;
   a = bioscom(2 ,0 ,1) ;
   printf (″%X , %c″,a &0x8000 ,a &0x00ff) ;
   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) ;
     }

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

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:21,558.59000 毫秒