简单问题 求解答
是这样的,程序是板子发送数据,计算机通过串口调试助手获得数据,但是获得的和发送的不一样频率也不一样 大家帮忙看一下程序如下
#include<reg52.h>
unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void Send(unsigned char dat)
{SBUF=dat;
while(TI==0)
;
TI=1;
}
void delay(void)
{
unsigned char m,n;
for(m=0;m<200;m++);
for(n=0;n<250;n++);
}
void main(void)
{unsigned char i;
TMOD=0x10;
SCON=0x40;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
TR1=1;
while(1)
{
for(i=0;i<8;i++)
{Send(Tab);
delay();
}}}串口界面如下
求解答 谢谢啦
Send(Tab);
改为
Send(Tab);
TI=1;
改为
TI=0;
你用的是多大晶振?看看你SCON配置的对吗 Send(Tab)??? binaimei2007 发表于 2013-10-29 11:31 static/image/common/back.gif
你用的是多大晶振?看看你SCON配置的对吗 Send(Tab)???
我已经找到错误所在了,谢谢了不是串口设置问题是定时器TMOD有点问题 还有前面TI复位有点问题谢谢啦 lcw_swust 发表于 2013-10-29 11:28 static/image/common/back.gif
Send(Tab);
改为
Send(Tab);
恩 还有一个错误就是SCON应该=0x40 大哥再问一下,
TMOD=0x10;
SCON=0x40;
PCON=0x00;
TH1=FDH;
TL1=FDH;
TR1=1;
这段程序为什么这样写,就是有点搞不明白设置波特率为什么还要设置TMOD跟TMOD有什么关系啊我很菜鸟的 kxqrscy 发表于 2013-10-29 12:47 static/image/common/back.gif
恩 还有一个错误就是SCON应该=0x40 大哥再问一下,
TMOD=0x10;
SCON=0x40;
通常波特率是与TIMER1的溢出率相关的,而TIMER1(以及TIMER0)的工作模式是由TMOD决定的。 lcw_swust 发表于 2013-10-29 13:01 static/image/common/back.gif
通常波特率是与TIMER1的溢出率相关的,而TIMER1(以及TIMER0)的工作模式是由TMOD决定的。 ...
好的谢了
页:
[1]