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

 | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 谷歌商城 | 视频教程 | ieee | 
热门搜索关键字: 单片机教程 | 三极管 | 二极管 |  C语言汇编语言SCADA元器件模拟电子 |
cnieee.com baidu
栏目导航  
栏目更新推荐  
·8051单片机C语言数据采集程序
·99计数器C语言版本
·3x4矩阵键盘的扫描程序(C语言)
·51单片机串口调试程序(C语言)
·一些常用的软件滤波方法(C语言)
·一些常用的软件滤波方法
·volatile用法
·嵌入式实时程序设计中C/C++代码的优…
点击TOP(10)  
  • 此栏目下没有热点文章
  • 图片文章  

    C语言嵌入式系统编程…

    C语言嵌入式系统编程…

    C语言嵌入式系统编程…
     
    您现在的位置: 中国IEEE中国电气电子工程师网 >> 单片机知识 >> 编程语言 >> 单片机C语言 >> 正文

    51单片机串口调试程序(C语言)
    文章来源:不详 点击数: 更新时间:2008-5-5 【字体:
    (欢迎光临中国IEEE,希望本文能对您有所帮助http://www.cnieee.com)


    相关文章:

    第一章  AT89S51单片机实验及实践系统板简介…
    利用串口对 89S 系列单片机编程…
    Keil C51使用详解3…
    Keil C51使用详解2…

  • 上一个文章:

  • 下一个文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖51单片机串口调试程序(C语言)〗的最新评论:
    /*定义为中断方式串口处理*/
    #define INTERSENDSTR
    /*不为8032系列芯片 */
    //#define CHIP_8032

    #include <absacc.h>
    #include <reg51.h>
    #include <string.h>
    #include "err.h"


    #ifdef INTERSENDSTR
    unsigned char xdata sSendComBuf[256],sRecComBuf[256];
    unsigned char data bOut,bIn,bSout,bSin;
    #else
    #define DEFSENDCHAR TI=0;SBUF=ACC;while(!TI);TI=0;
    #endif
    //bps设置 9600就是 PSetBps(96)(11.0592Mhz)

    unsigned char  PSetBps(unsigned int bps) SMALL
    {
    unsigned int t1;
    unsigned char t2;
    #ifdef INTERSENDSTR
    /*如果使用中断方式发送数据,必须等待发送数据完毕才能更换波特率 */
    while(bSin!=bSout)
    {
    ;
    }
    ES=0;
    #endif

    #ifdef CHIP_8032
    if(3456%bps)
    {
    return ERR_SET_BPS;
    }
    t1=3456/bps;
    t1--;t1=~t1;
    RCAP2H=t1/256;RCAP2L=t1;
    T2MOD=0x00;
    /*使用定时器2做波特率发生器 */
    T2CON=0x34;/*TF2=0;EXF2=0;RCLK=1;TCLK=1;EXEN2=0;TR2=1;C/T2=0;CP/RL2=0
    */
    #else
    t1=576/bps;
    if((576%bps)||((t1==0))||(t1>=2*256))
    {
    return ERR_SET_BPS;
    }
    if(t1>256)
    {
    PCON=00;
    t2=256-(288/bps);
    }
    else
    {
    PCON=0x80;
    t2=256-t1;
    }
    TH1=t2;TL1=t2;
    TR1=1;
    #endif
    /*模式3*/
    SM0=0;
    RI=0;TI=0;
    REN=1;
    SM1=1;
    SM2=1;
    #ifdef INTERSENDSTR
    bOut=bIn;
    bSout=bSin;
    ES=1;
    #endif
    return OK;
    }
    void PSendChar(unsigned char ch) SMALL
    {

    #ifdef INTERSENDSTR
    unsigned char tch;

    tch=bSin+1;
    while(tch==bSout)
    {
    ;
    }
    sSendComBuf[bSin]=ch;
    ES=0;
    if((bSout==bSin))
    {
    SBUF=sSendComBuf[bSin];
    bSin++;
    }
    else
    {
    bSin++;              
    }
    ES=1;
    #else
    ACC=ch;
    DEFSENDCHAR;
    #endif
    }
    unsigned char PGetChar() SMALL
    {
    unsigned char ch;
    #ifdef  INTERSENDSTR
    ch=sRecComBuf[bOut];
    bOut++;
    return ch;
    #else
    ch=SBUF;
    RI=0;
    #endif
    }
    bit PCharInCom() SMALL
    {
    #ifdef  INTERSENDSTR
    if(bIn!=bOut)
    {
    return 1;
    }
    return 0;
    #else
    return RI;
    #endif
    }
    void PSendString(unsigned char *st) SMALL
    {
    while(*st)
    {
    PSendChar(*st);
    st++;
    }
    }
    void PSendArray(unsigned char  *st,unsigned int  len) SMALL
    {
    unsigned int ii;
    for(ii=0;ii<len;ii++)
    {
    PSendChar(st[ii]);
    }
    }
    #ifdef  INTERSENDSTR
    void PSerialInt() interrupt 4
    {
    if(RI)
    {
    sRecComBuf[bIn]=SBUF;
    bIn++;
    RI=0;
    }
    if(TI)
    {
    TI=0;
    if(bSout!=bSin)
    {
    bSout++;
    }
    if(bSout!=bSin)
    {
    SBUF=sSendComBuf[bSout];
    }
    }
    }
    #endif
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明网站地图 | 名站导航 | 管理登录 | 
    本站资源部分来自互联网,如侵犯您的权利,我们将予以删除  鲁ICP备08006092号
    本站欢迎同类网站做友情链接,QQ留言
    中国IEEE 中国电气电子工程师网 版权所有