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再接虚拟终端然后显示,求大神指正
急求急求~~必有重谢
附上我现在还没加串口通信的代码,现在本地能显示
#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再接虚拟终端然后显示,求大神指正
急求急求~~必有重谢
分时复用,或者外接串口转换芯片,芯片资源就那么多
支持支持,谢谢小编!