author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2004-03-10 11:33
串口程序是很简单的,我估计是是你波特率没算对,注意波特率要受CKCON的影响哦


这个位是CLK24/4,CLK24/12不会有这么大的差距吧。我认为该考虑的地方我都考虑了,一定是哪里丢了一点。可不可以把你串口通讯的代码发一份给 我看看。先谢了!邮箱在下面!
我的Vc代码仓库:[url]http://sh.b211.net[/url]
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2004-03-10 11:38
用户被禁言,该主题自动屏蔽!
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2004-03-10 11:58
谢谢pengenwen。我给分了。 :D
我的Vc代码仓库:[url]http://sh.b211.net[/url]
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2004-03-10 12:03
我第一次给了一部分分,没有给完。现在给分为什么不能给分呀?
昏!
我的Vc代码仓库:[url]http://sh.b211.net[/url]
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2004-03-10 12:57
大哥。这两句话是什么意思呀?
            while(TI == 0);
    TI = 0;
应该是
          while(TI == 1);
    TI = 0;

现在程序不是死在 这里吗?

我改了以后呢,现在计算机还是收不到数据。
我把上面的程序加到了我的 TD_Init (void)
函数里面。Txd引脚上面没有波特率产生。
 并且我拔了MAX232也是一样。



[编辑 -  3/10/04 by  author22]
我的Vc代码仓库:[url]http://sh.b211.net[/url]
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2004-03-10 13:19
应该是:
while(TI == 0);
TI = 0;
表示等到数据发完才返回。(因为数据发完TI会由0变1的).

你的晶振是多少,这很关键!!!
A strong man can save himself. A great man can save another.
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2004-03-10 13:22
12M的。我是方式1呀,应该是发完了自动置TI位为1呀,然后程序使它变为0,清除发送标志位呀。



[编辑 -  3/10/04 by  author22]

[编辑 -  3/10/04 by  author22]
我的Vc代码仓库:[url]http://sh.b211.net[/url]
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2004-03-10 13:40
我是方式1呀,应该是发完了自动置TI位为1呀,然后程序使它变为0,清除发送标志位呀。
我的Vc代码仓库:[url]http://sh.b211.net[/url]
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2004-03-10 13:43
所以while(TI == 0)呀,
因为它不会立刻变成1,所以这个while的时间会持续一个字节发送的时间。然后清掉它。否则,连续发送会重叠。
A strong man can save himself. A great man can save another.
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2004-03-10 13:47
恩,当while(TI==0)的时候,TI=0.当发送后TI=1。这时必须要有软件来清除这个标志位呀。使TI=0呀。我debug的时候。程序在这里跑飞了。我的Txd引脚上面就一直是低电平,用示波器看。

[编辑 -  3/10/04 by  author22]
我的Vc代码仓库:[url]http://sh.b211.net[/url]
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2004-03-10 14:09
这个是查询方式。不适合作中断方式。
A strong man can save himself. A great man can save another.
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2004-03-10 14:43
恩,是查询方式。我在前面设置了PORTCCFG=0x03 。我是怀疑PC口不是交替功能。sbuf0或者sbuf1里面数据都写进去了,波特率现在好点,只有1%的误差。但是Txd上面就没有波形产生。计算机收不到数据是正常。2131的硬件部分我都检查了几遍了。你写过这种代码吗?我想要一个完整的调试成功的代码看看。先谢了。
我的Vc代码仓库:[url]http://sh.b211.net[/url]
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2004-03-10 15:26
我没有完整的代码。
但如果TXD没有波形,有可能你使发送使能有效。
A strong man can save himself. A great man can save another.
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
33楼#
发布于:2004-03-10 15:55
恩,打开使能位,是哪个使能位?PC^0,PC^1 ? 还是.....?如果你有时间的话,可以看看我的代码?现在有波形了。我把代码几乎完全删掉了,只有这一块,昨天我是用的中断,和现在一样,还比较好看的波形,波特率的。
我的Vc代码仓库:[url]http://sh.b211.net[/url]
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
34楼#
发布于:2004-03-10 15:58
 MAX232的T1out上面也有波形,一样的,就是是232电平。不过计算机还是收不到数据。昨天也是这样的。
我的Vc代码仓库:[url]http://sh.b211.net[/url]
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
35楼#
发布于:2004-03-10 16:02
你有MSN吗?我的MSN在下面。
我的Vc代码仓库:[url]http://sh.b211.net[/url]
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
36楼#
发布于:2004-03-10 16:03
你有MSN吗?我的MSN在下面。波特率还是不匹配!
我的Vc代码仓库:[url]http://sh.b211.net[/url]
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
37楼#
发布于:2004-03-10 16:05
那基本上就剩波特率和D9(相当于奇偶校验)的问题了。
switch(ucParity)
{
case COMM_PARITY_NONE:
SCON = 0x70;
break;
case COMM_PARITY_MARK:
SCON = 0xf8;
break;
case COMM_PARITY_SPACE:
SCON = 0xd0;
break;
case COMM_PARITY_ODD:
case COMM_PARITY_EVEN:
default:
// ReportFatalError(pErrorParity);
break;
}
A strong man can save himself. A great man can save another.
author22
驱动小牛
驱动小牛
  • 注册日期2003-08-20
  • 最后登录2018-04-07
  • 粉丝0
  • 关注0
  • 积分391分
  • 威望85点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
38楼#
发布于:2004-03-10 16:12
成功了,谢谢。串口线断了,郁闷!换了一根,谢谢各位。
我的Vc代码仓库:[url]http://sh.b211.net[/url]
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
39楼#
发布于:2004-03-10 16:34
God!!!
A strong man can save himself. A great man can save another.
游客

返回顶部