简单问题 求解答

2020-01-26 12:50发布

是这样的,程序是板子发送数据,计算机通过串口调试助手获得数据,但是获得的和发送的不一样  频率也不一样 大家帮忙看一下
程序如下
#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();
}}}串口界面如下
QQ截图20131029111902.png (42.69 KB, 下载次数: 0) 下载附件 2013-10-29 11:19 上传
求解答 谢谢啦
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
lcw_swust
1楼-- · 2020-01-26 13:59
Send(Tab);
改为
Send(Tab[i]);

TI=1;
改为
TI=0;
binaimei2007
2楼-- · 2020-01-26 19:43
你用的是多大晶振?看看你SCON配置的对吗 Send(Tab)???  
kxqrscy
3楼-- · 2020-01-26 20:21
 精彩回答 2  元偷偷看……
kxqrscy
4楼-- · 2020-01-26 21:59
lcw_swust 发表于 2013-10-29 11:28
Send(Tab);
改为
Send(Tab);

恩 还有一个错误就是SCON应该=0x40   大哥  再问一下,
TMOD=0x10;
SCON=0x40;
PCON=0x00;
TH1=FDH;
TL1=FDH;
TR1=1;
这段程序为什么这样写,就是有点搞不明白设置波特率为什么还要设置TMOD  跟TMOD有什么关系啊  我很菜鸟的
lcw_swust
5楼-- · 2020-01-26 22:35
kxqrscy 发表于 2013-10-29 12:47
恩 还有一个错误就是SCON应该=0x40   大哥  再问一下,
TMOD=0x10;
SCON=0x40;

通常波特率是与TIMER1的溢出率相关的,而TIMER1(以及TIMER0)的工作模式是由TMOD决定的。
kxqrscy
6楼-- · 2020-01-27 00:23
lcw_swust 发表于 2013-10-29 13:01
通常波特率是与TIMER1的溢出率相关的,而TIMER1(以及TIMER0)的工作模式是由TMOD决定的。 ...

好的  谢了

一周热门 更多>