use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1888回复:16

51串口传输模式中,要对传输的位进行控制,我该如何做?

楼主#
更多 发布于:2002-03-11 12:13
   51串口传输模式中,要对传输的位进行控制,我该如何做?
如,1(start bit) + 8(data bit) + 1(verify bit) + 1(stop bit)

在上面我该如何对检验位(verify bit)控制并使它送出去?
我是否要用 Vxd 技术。 在window下面,能不能用VC实现?
Wxy8030
驱动小牛
驱动小牛
  • 注册日期2002-03-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-11 14:37
51的串口传输模式中,方式2和方式3都是11位传输,发送的第10位由SCON中的TB8决定,如果作为奇偶校验位,那么你需要先算出你发送的数的位和是奇还是偶,然后决定TB8是0还是1,然后再发送出去;接受的第10位在SCON的RB8中,如果作为奇偶校验,你也要算出接受的数的位和是奇还是偶,再和RB8对照!
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-11 15:41
to: Wxy8030
    你说的很对。
    比如说工作在方式3时,我如何用PC机来发送给51片一串信息,使得可以控制发送出去的第10位?比如使它为1或0
   我对Vxd一点都不了解,我不知道在PC机中能不能用VC一类的编程来实现?
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-13 16:42
我倒,这边怎么没有人回答我的问题```````~~~~~~
Snare
驱动小牛
驱动小牛
  • 注册日期2002-01-31
  • 最后登录2002-08-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-03-13 18:36
单片几我不知道,不过PC下,如果是98用VC没问题,也可以用vxd
2000下不行
我就是我,没什么可说的。
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-03-14 07:44
to: Snare
   就上面所说得,如我想控制那个(verify bit)位,那我该如何来实现。能不能说说思路,我真的很想知道。
   特些谢谢Snare了。实现了,有机会可以请客,真的。
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-03-14 07:46
对了,可以暂时在职98下实现。
Wxy8030
驱动小牛
驱动小牛
  • 注册日期2002-03-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-03-14 13:02
对不起老兄,PC机上的程序我是用VB做的,用VB实现你说的问题很简单!不过我不太懂VC.
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-03-22 16:47
to: Wxy8030
   你在PC下实现的,你用VB实现了对检验位的操作吗?
   对检验位的操作中,你能很好的把它改写吗?在PC上你能接收到从8051发过来的第九位(检验位)吗?并能不能对改写了的检验位进行很好的数据发送?这中间当然不能影响到要发送的数据内容。
   请问下你在VB下是如何实现的?
   谢谢!
jep
jep
驱动小牛
驱动小牛
  • 注册日期2001-12-26
  • 最后登录2017-08-12
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望30点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2002-03-23 11:18
应该是在MSCOMM控件中设置通信方式和是否进行奇偶校验,如果有校验的话,直接由主板上的8253来做,与你的软件编程无关。
我认为是这样,愿共同探讨。
use_id
驱动中牛
驱动中牛
  • 注册日期2002-03-11
  • 最后登录2006-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-03-25 13:12
to: jep
    你说的很对,一般的软件编程只设置好协议就可。
    但问题是,我要用软件编程检测从串口接收来的数据对应的校验位的值是多少。
    同时也自己设置发送数据时对应的校验位的值。

你说我用软件编程能实现吗?
501lsc
驱动牛犊
驱动牛犊
  • 注册日期2001-10-04
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-03-26 17:28
现在的主板上是16550控制串口,和你编程不发生什么关系。
zhangkf
驱动牛犊
驱动牛犊
  • 注册日期2001-07-26
  • 最后登录2002-05-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-03-27 06:02
网上有篇文章<<在windows95下PC机和单片机的串行通信>>,找来看看,挺好的,正合你胃口。(Sorry,我忘了出处了,可用MAX232和N80C196KB做检索)。我也在学单片机,希望能联系,多指教。 :)
Yoush
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2005-01-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-03-28 14:02
Use inline assembly, write/read hardware port directly.
其实,笨鸟先飞也不见得能早入林. 但如果后飞则一定晚入林.
drivecat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2008-08-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-03-31 13:34
  1。如果你的校验位只是做校验的话那就简单用控件
  2。如果你的校验位有特殊的用法,对51没问题,pc有最蹉的方法:在每写一个字节时根据内容选偶校验或奇校验,读取时也一样,要用中断方式。用vxd当然好,如果你的编程不错,而且颧骨高,印堂发亮,一定可以编一个很通用的接口,
不怕笨死的熊。
Yoush
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2005-01-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-04-01 13:08
 1。如果你的校验位只是做校验的话那就简单用控件
  2。如果你的校验位有特殊的用法,对51没问题,pc有最蹉的方法:在每写一个字节时根据内容选偶校验或奇校验,读取时也一样,要用中断方式。用vxd当然好,如果你的编程不错,而且颧骨高,印堂发亮,一定可以编一个很通用的接口,

Agree with point 1.
在每写一个字节时根据内容选偶校验或奇校验,读取时也一样
no need, just use Stick Parity Bit.

And you can use inline assembly under Win98. very easy.
其实,笨鸟先飞也不见得能早入林. 但如果后飞则一定晚入林.
Yoush
驱动牛犊
驱动牛犊
  • 注册日期2002-01-14
  • 最后登录2005-01-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-04-01 14:23
 1。如果你的校验位只是做校验的话那就简单用控件
  2。如果你的校验位有特殊的用法,对51没问题,pc有最蹉的方法:在每写一个字节时根据内容选偶校验或奇校验,读取时也一样,要用中断方式。用vxd当然好,如果你的编程不错,而且颧骨高,印堂发亮,一定可以编一个很通用的接口,


Agree with point 1.

  在每写一个字节时根据内容选偶校验或奇校验,读取时也一样,要用中断方式
--------no need, just use Stick Parity Bit.

You can use inline assembly under win98 instead VXD,very easy.

I don\'t know whether you need to read parity bit. If no, just use API--\"SetCommState\" to set Stick Parity bit.
其实,笨鸟先飞也不见得能早入林. 但如果后飞则一定晚入林.
游客

返回顶部