微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > C51两个定时器被占用怎么设置波特率

C51两个定时器被占用怎么设置波特率

时间:10-02 整理:3721RD 点击:
我用AT89C51设计转速测量系统,需要做一个串口通信,在proteus上的虚拟终端显示,但是C51的两个定时器已经被转速测量程序给占用了,我现在如何把其中一个定时器转换为用来设置波特率的
附上我现在还没加串口通信的代码,现在本地能显示
#include<reg51.h>
#define
uchar unsigned char
#define
uint unsigned int
uint
mm=00;
uint num;
uchar code
table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};
delay(uint
m)
{ uint
i,j;
  for(i=m;i>0;i--)
     for(j=60;j>0;j--);
}
xian_shi()   
{ uchar
qian,bei,shi,ge;
  uint jj;
  jj=mm;
  qian=jj/1000;
  bei=jj%1000/100;
  shi=jj%100/10;
  ge=jj%10;
P2=0x10;
   P0=table[qian];
   delay(1);
P2=0x20;
   P0=table[bei];
   delay(1);
P2=0x40;
   P0=table[shi];
   delay(1);
P2=0x80;
   P0=table[ge];
   delay(1);
   //P2=0;
}
timer_init()  
{   EA=1;
    ET0=1;
    ET1=1;
    TMOD=0X51;
    TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
    TH1=0;
    TL1=0;
    TR0=1;
    TR1=1;        
}
main()
{   
    timer_init();
    P0=0;     
   while(1)   
     {
         xian_shi();
         delay(2);  
     }
}
void
timer0() interrupt 1
{   TR0=0;
    TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
       if(num==19)
    {TR1=0;
       num=0;
    mm=0;
    mm|=TH1;
    mm=(mm<<8)|TL1;
       TH1=0;
    TL1=0;
    TR0=1;
    TR1=1;}
       else
       {
       num++;
       TR1=1;
       TR0=1;
       }
}
void
timer1() interrupt 3     
{   TR1=0;
    TR0=0;
    mm=0;  
}没办法要求不能换单片机哎~~
求大神指教,必有重谢~~
最好能帮我把串口通信的程序加进去~~
我现在的想法是通过C51接MAX232接COMPIM再接虚拟终端然后显示,求大神指正
急求急求~~必有重谢

分时复用,或者外接串口转换芯片,芯片资源就那么多

支持支持,谢谢小编!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top