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



   参数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) ;
     下面是写串口函数和读串口函数:
     void outcom(int com ,char ch)
     {int st-a ,io-a ;
     st-a = (com - 1) ? 0x2fd :0x3fd ;
     io-a = (com - 1) ? 0x2f8 :0x3f8 ;
     while ( ! (inportb (st-a) &0x20) ) ;
     outportb (io-a ,ch) ;
     }
     int incom(int com ,char 3 ch)
     {int st-a ,io-a ;
     st-a = (com - 1) ? 0x2fd :0x3fd ;
     io-a = (com - 1) ? 0x2f8 :0x3f8 ;
     if (inportb (st-a) &0x01)
     { 3 ch = inportb (io-a) ;
      return 1 ;}
     else return 0 ;
     }

     outcom函数将ch从com指定的串口发送出去,incom函数从com指定的串口读取字符,若成功则返回1并改写ch单元。Incom函数不等待串口接收完毕,若无数据可读则立即返回,可以在主调函数中等待。

  现在,我们可以用右图所示的连接进行计算机和单片机之间的串行通信了,使用如下程序可以实现通信的实验:

     # include″dos. h″
     # include″bios. h″
     main ()
     {int i ;
     char ch = 65 ;
     initcom(1 ,2400) ;
     for (i = 0 ;i < 256 ;i + + )
     {outcom(1 ,i) ;
      printf (″%c″,i) ;
      while ( ! incom(1 , &ch) ) ;
      printf (″- %c″,ch) ;
      }
      printf (″\ n″) ;
      getch () ;
      }

     该程序发送一个字符后,等待接收,若发送的字符和接收的字符一致,表明通信成功。

  读者可以在此基础上定义通信协议,完成串口通信的功能。

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

关键词:

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

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