kxqrscy 发表于 2013-10-29 11:20:00

简单问题 求解答

是这样的,程序是板子发送数据,计算机通过串口调试助手获得数据,但是获得的和发送的不一样频率也不一样 大家帮忙看一下
程序如下
#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();
}}}串口界面如下

求解答 谢谢啦

lcw_swust 发表于 2013-10-29 11:28:48

Send(Tab);
改为
Send(Tab);

TI=1;
改为
TI=0;

binaimei2007 发表于 2013-10-29 11:31:51

你用的是多大晶振?看看你SCON配置的对吗 Send(Tab)???

kxqrscy 发表于 2013-10-29 11:52:12

binaimei2007 发表于 2013-10-29 11:31 static/image/common/back.gif
你用的是多大晶振?看看你SCON配置的对吗 Send(Tab)???

我已经找到错误所在了,谢谢了不是串口设置问题是定时器TMOD有点问题 还有前面TI复位有点问题谢谢啦

kxqrscy 发表于 2013-10-29 12:47:16

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有什么关系啊我很菜鸟的

lcw_swust 发表于 2013-10-29 13:01:20

kxqrscy 发表于 2013-10-29 12:47 static/image/common/back.gif
恩 还有一个错误就是SCON应该=0x40   大哥再问一下,
TMOD=0x10;
SCON=0x40;


通常波特率是与TIMER1的溢出率相关的,而TIMER1(以及TIMER0)的工作模式是由TMOD决定的。

kxqrscy 发表于 2013-10-29 13:04:59

lcw_swust 发表于 2013-10-29 13:01 static/image/common/back.gif
通常波特率是与TIMER1的溢出率相关的,而TIMER1(以及TIMER0)的工作模式是由TMOD决定的。 ...

好的谢了
页: [1]
查看完整版本: 简单问题 求解答