中国IEEE
关于我们 | 会员登陆 | 收藏本站 | 留 言 薄
 

 | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 视频教程 | ieee | 
热门搜索关键字: 单片机教程 | 三极管微电子 |  C语言汇编语言SCADA元器件IEEE |
cnieee.com baidu
栏目导航  
栏目更新推荐  
·自己DIY无线数据收发模块(RTU。DT…
·ARM与嵌入式系统的定位
·89C2051带音乐的电子闹钟(已测试OK…
·51单片机C语言学习
·自制51单片机试验板
·计算机与单片机串口通信源程序
·关于I2C总线和I2C总线的光电隔离措…
·DSP芯片也称数字信号处理器与单片机…
点击TOP(10)  
·89C2051带音乐的电子闹钟(已测试OK…
·51单片机C语言学习
·自制51单片机试验板
图片文章  

自己DIY无线数据收发…

89C2051带音乐的电子…

51单片机C语言学习

自制51单片机试验板
 
您现在的位置: 中国IEEE中国电气电子工程师网 >> 单片机知识 >> 硬件知识 >> 正文

计算机与单片机串口通信源程序
文章来源:中国IEEE整理 点击数: 更新时间:2008-8-17 【字体:
(欢迎光临中国IEEE,希望本文能对您有所帮助http://www.cnieee.com)


相关文章:

没有相关文章

  • 上一个文章:

  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖计算机与单片机串口通信源程序〗的最新评论:
    一个单片机与PC机通信的程序,pc机程序用c语言来编写,单片机程序用汇编语言来编写

    1. PC机编程
    PC采用Toubr C 进行编写。程序如下:
    #include<stdio.h>
    #define    port     0x3f8                    /*利用串口1进行通信*/
    int ch[15];
    main ()
    {
      int a;
      int i,j;
      int b[6]={88,15,38,26,20,0};
      char c;
      clrscr();
      outportb(port+3,0x80);                    /*准备设置波特率*/
      outportb(port,0x0C);                    /*波特率设置为9 600 bps*/
      outportb(port+1,0x00);
      outportb(port+3,0x03);                    /*8位数据位,奇偶检验,1位停止位*/
      outportb(port+1,0x00);                    /*关中断*/
      inportb(port+5);                        /*读一次线路状态寄存器,使其复位*/
      {
        printf("\t\tsend data or receive data: (s or r?)\n\n\n");
        c=getchar();
         switch(c)
         {
          case ’s’:
          case ’S’:
          {
          while(!(inportb(port+5)&0x20));            /*发送保持器满则等待*/
           outportb(port,0x01);                /*否则发送数据01通知单片机准备接收*/
           for(i=0;i<6;i++)                    /*共发送6个数据*/
        {
          a=b[i];
          while(!(inportb(port+5)&0x20))
          delay(100);                        /*发送保持器满,等待*/
          outportb(port,a);                    /*发送a*/
          printf("%d\n",a);                    /*显示a*/
          while(!(inport(port+5)&1));            /*接收单片机送回的数据*/
          ch[i]=inport(port);                    /*保存*/
          }
          delay(10);
          for(j=0;j<8;j++)                    /*显示接收的回送数据*/
          printf("\n%d\n",ch[j]);
          getch();
          break;
          }
          case’r’:                            /*接收数据*/
          case’R’:
          {
            while(!(inportb(port+5)&0x20));       
            outportb(port,0x02);                /*发送数据02通知单片机发送数据*/
            for(j=0;j<9;j++)                    /*共接收9个数据*/
            {
             while(!(inportb(port+5)&1));
            ch[j]=inportb(port);
            }
            for(j=0;j<9;j++)
            printf("\n %d\n",ch[j]);
            getch();
            break;
            }
           }
        }
    }
    2. 单片机与PC机通信之单片机程序
    LIST        P=16F876
    #INCLUDE     P16F876.INC
    CBLOCK 0X24
    COUNT   
    TEMP
    ENDC
            ORG    0X0000
            NOP
    START    GOTO    MAIN
            ORG        0X020
    MAIN    MOVLW    0X30                ;将RAM单元初始化
            MOVWF    FSR
            BCF        STATUS,RP0
            MOVLW    0X22
            MOVWF    COUNT
    INTRAM    MOVF    COUNT,0
            MOVWF    INDF
            INCF        COUNT,1
            INCF        FSR,1
            BTFSS    FSR,7
            GOTO    INTRAM
            BANKSEL    TXSTA            ;波特率设置为9 600 bps
            MOVLW    0X19
            MOVWF    SPBRG            ;异步高速方式
            MOVLW    0X04
            MOVWF    TXSTA
            BCF    STATUS,RP0
            MOVLW    0X80                ;串行口使能
            MOVWF    RCSTA
            MOVLW    0X30
            MOVWF    FSR
            BSF        RCSTA,CREN        ;接收允许
            BSF        STATUS,RP0
            BSF        TXSTA,TXEN        ;发送允许
            BCF        STATUS,RP0
    WAIT    BTFSS    PIR1,RCIF        ;接收PC机命令
            GOTO    WAIT
            MOVF    RCREG,0
            MOVWF    TEMP
            MOVWF    INDF
            INCF    FSR
            DECFSZ    TEMP            ;接收到的数据为1,则接收
            GOTO    TXW                ;否则发送数据
            MOVLW    0X06
            MOVWF    TEMP
    WAIT1    BTFSS    PIR1,RCIF        ;接收一个数据
            GOTO    WAIT1
            MOVF    RCREG,0
            MOVWF    COUNT
            MOVWF    TXREG
    LOOPTX    BTFSS    PIR1,TXIF        ;将接收到的数据送回PC机
            GOTO    LOOPTX
            MOVF    COUNT,0
            MOVWF    INDF   
            INCF        FSR
             DECFSZ    TEMP
            GOTO    WAIT1
            GOTO    OVER            ;处理完毕
    TXW        MOVLW    0X09                ;向PC机发送9个数据
            MOVWF    TEMP
            MOVLW    0X30
            MOVWF    FSR
    TXW0    MOVF    INDF,0
            MOVWF    TXREG
            INCF        FSR
    TXW1    BTFSS    PIR1,TXIF
            GOTO    TXW1
            DECFSZ    TEMP
            GOTO    TXW0   
    OVER    BCF        RCSTA,CREN        ;通信任务完成,关接受和发送允许
            BSF        STATUS,RP0
            BCF        TXSTA,TXEN
            BCF        STATUS,RP0
            CALL    LED                ;调用显示子程序,将发送(或接收)的数据显示出来
            END                        ;程序完

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明网站地图 | 名站导航 | 管理登录 | 
    本站资源部分来自互联网,如侵权,将予以删除; 欢迎同类网站做友情链接,QQ留言单片机交流群:14084521(满)59905828,2786387

    中国IEEE 中国电气电子工程师网 版权所有 鲁ICP备08006092号