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

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

自己DIY无线数据收发…

89C2051带音乐的电子…

51单片机C语言学习

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

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


相关文章:

VB与C++或VB与C的区别

  • 上一个文章:

  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖一个用与串口调试程序〗的最新评论:

    串口调试程序没有经过测试,仅提供出来供大家参考

    /*定义为中断方式串口处理*/
    #define INTERSENDSTR
    /*不为8032系列芯片 */
    //#define CHIP_8032

    #i nclude <absacc.h>
    #i nclude <reg51.h>
    #i nclude <string.h>
    #i nclude "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

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

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