导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:请高手帮忙![wyninbo]

 *第7180篇: C51编程:请高手帮忙!

  
楼 主:wyninbo 2002年12月23日14:35
 C51编程:请高手帮忙!
请教几个很菜的问题:
1.我把T1作为串口比特率发生器,T0采用方式3进行定时,怎样进行初始化?怎样相应T0的2个
定时器?请高手给段C51的源码.
2.请高手帮我看看下面的程序,若是把T0设为方式1,可以串口输出数据;若改为其他工作方式
则不行,为什么啊?

#include <reg52.h>
#define uchar unsigned char
uchar idata r_buf[11],t_buf[32];
uchar data r_in,r_out,t_in,t_out,x,y,z;
bit r_full,t_empty,t_done;
uchar code m[]={"A012345678"};

serial() interrupt 4 using 1
{
    if(TI)
    {
           TI=0;
           if ( r_out < 10 )
           {   SBUF=m[r_out];    
                r_out++;
               }
           else
               r_out = 0;       
        }
    if(RI)
    {
        RI=0;
        if(r_in<8)
        { r_buf[r_in]=SBUF;
          if (r_buf[r_in]=='9')
              z++;
          r_in++;         
        }
        else
          r_in=0;
    }

}

void loadmsg( )            //接收
{    
    
//    RI=1;

}

void processmsg(void)        //发送

    for(x=0;x<200;x++)        //34
        for(y=0;y<x;y++);;
    
    TI=1;
}

void time0() interrupt 1    //T0
{
    x++;
    TL0=0x00;;
}

void time02() interrupt 3    //T1
{
    y++;
}

main()
{
    TMOD=0x21;        //定时器1,方式2,8位自装入定时
    TH1=0xa0;        //600波特率11.0592MHz
    SCON=0x50;        //允许接收
    PCON=0x80;
    TL0=0x00;  TH0=0x00;
    TR0=1;       TR1=1;
    ES=1;
    ET1=0;
    ET0=1;
    EA=1;
    t_empty=t_done=0;
    r_full=0;
    r_out=t_in=t_out=y=x=z=0;
    r_in=1;            //接受和发送缓冲置空
    TI=1;
    RI=1;
    SBUF = 0;
    for(;;)
    {
        processmsg();    //发送
        loadmsg();    //接收
    }
}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:硬件:关于6502仿真器!!!急

[下一篇主题]:硬件:disk I/O error