阅读:3146回复:41
郁闷!调2131的232调了3天都没有通,帮帮我!
我用AN2131SC调试一个简单的232串口通讯,我已经用了3天,现在还是没有通,主要是Cypress公司的 C51 程序代码,汇编程序自己也写过,但总是不通,郁闷呀!MAX232的各个引脚的电平都正常,串口线也检查了好多遍,2131芯片进行BLUK和ISO传输正常。就是找不出原因来。哪位能够提供一点AN2131串口的汇编调试程序。最好是完全调试成功了的,谢了各位。或者指点一下可能还有哪些问题我现在可能没有考虑到的。 拜托了,各位大哥大姐!
|
|
|
沙发#
发布于:2004-03-11 22:23
我也做,怎么没通,给我联系吧,HELP!QQ:6611555,E-MAIL:arthurcao0429@yahoo.com.cn.
|
|
|
板凳#
发布于:2004-03-11 15:14
谢谢大家的帮助! :D
|
|
|
地板#
发布于:2004-03-10 16:34
God!!!
|
|
|
地下室#
发布于:2004-03-10 16:12
成功了,谢谢。串口线断了,郁闷!换了一根,谢谢各位。
|
|
|
5楼#
发布于: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; } |
|
|
6楼#
发布于:2004-03-10 16:03
你有MSN吗?我的MSN在下面。波特率还是不匹配!
|
|
|
7楼#
发布于:2004-03-10 16:02
你有MSN吗?我的MSN在下面。
|
|
|
8楼#
发布于:2004-03-10 15:58
MAX232的T1out上面也有波形,一样的,就是是232电平。不过计算机还是收不到数据。昨天也是这样的。
|
|
|
9楼#
发布于:2004-03-10 15:55
恩,打开使能位,是哪个使能位?PC^0,PC^1 ? 还是.....?如果你有时间的话,可以看看我的代码?现在有波形了。我把代码几乎完全删掉了,只有这一块,昨天我是用的中断,和现在一样,还比较好看的波形,波特率的。
|
|
|
10楼#
发布于:2004-03-10 15:26
我没有完整的代码。
但如果TXD没有波形,有可能你使发送使能有效。 |
|
|
11楼#
发布于:2004-03-10 14:43
恩,是查询方式。我在前面设置了PORTCCFG=0x03 。我是怀疑PC口不是交替功能。sbuf0或者sbuf1里面数据都写进去了,波特率现在好点,只有1%的误差。但是Txd上面就没有波形产生。计算机收不到数据是正常。2131的硬件部分我都检查了几遍了。你写过这种代码吗?我想要一个完整的调试成功的代码看看。先谢了。
|
|
|
12楼#
发布于:2004-03-10 14:09
这个是查询方式。不适合作中断方式。
|
|
|
13楼#
发布于:2004-03-10 13:47
恩,当while(TI==0)的时候,TI=0.当发送后TI=1。这时必须要有软件来清除这个标志位呀。使TI=0呀。我debug的时候。程序在这里跑飞了。我的Txd引脚上面就一直是低电平,用示波器看。
[编辑 - 3/10/04 by author22] |
|
|
14楼#
发布于:2004-03-10 13:43
所以while(TI == 0)呀,
因为它不会立刻变成1,所以这个while的时间会持续一个字节发送的时间。然后清掉它。否则,连续发送会重叠。 |
|
|
15楼#
发布于:2004-03-10 13:40
我是方式1呀,应该是发完了自动置TI位为1呀,然后程序使它变为0,清除发送标志位呀。
|
|
|
16楼#
发布于:2004-03-10 13:22
12M的。我是方式1呀,应该是发完了自动置TI位为1呀,然后程序使它变为0,清除发送标志位呀。
[编辑 - 3/10/04 by author22] [编辑 - 3/10/04 by author22] |
|
|
17楼#
发布于:2004-03-10 13:19
应该是:
while(TI == 0); TI = 0; 表示等到数据发完才返回。(因为数据发完TI会由0变1的). 你的晶振是多少,这很关键!!! |
|
|
18楼#
发布于: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] |
|
|
19楼#
发布于:2004-03-10 12:03
我第一次给了一部分分,没有给完。现在给分为什么不能给分呀?
昏! |
|
|
上一页
下一页