7326|22

59

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串口通讯中方式3,第九位RB8总是零 [复制链接]

如题.
  不管是在软件上调试(奇校验),还是在硬件上,RB8总是零.比如我发9,RB8==0,发7也是0
  请各位帮帮忙。谢谢
void STR_int(void) interrupt 4 using 2
{  
  if(RI)
  {
    on=0;
    ES=0;
ACC=SBUF;
if(P==RB8)
{
  save=SBUF;
  i++;
}
if(i>=80)
{
  bit1=0;
  bit2=1;
  i=0;
}
RI=0;
ES=1;
on=1;
return;
  }
  if(TI)
  {  
  j++;
if(j>=V)
{
  bit1=1;
  bit2=1;
  j=0;
}
else
{
  _nop_();
  ACC=save[j];
  TB8=P;
  SBUF=save[j];
}
TI=0;
  }
}

最新回复

我不骗人,我的那个代码真的调试过了 LZ 小兵保证  详情 回复 发表于 2008-11-17 17:52
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你是接收哪里来的数据,如果是PC机来那肯定总是0
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你用带奇偶检验位的就有1了。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
一般来说哈

单片机和PC通信,不用那个位

还不如自己做个加和校验或是异或和校验来得实在

因为:
1。系统中,单字节通信的可能性很少。基本上都是多字节一帧地发

2。如果真的有干扰,这样的去干扰的办法还不如一整帧做来得实在

3。在系统灵活性上,有了限制,能用通用的就用通用的吧,会体会到它的好处的。呵呵
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
我只是小流量通讯:一小时一次通讯不超80字节只作记录用;
      
     我是用虚拟串口和Keil捆绑在一起,用串口调试软件调试的,在虚拟通讯下也是零;  
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

6
 
过两天和你一起抓一下这个问题看

偶,好像之前没有太关心这个

谢谢LZ
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

8
 


  1. #include
  2. #include

  3. unsigned char SendBuf = 0;
  4. unsigned char RBuf = 0;
  5. void UARTISR(void) interrupt 4
  6. {
  7.     if (TI)
  8.     {
  9.         TI = 0;
  10.         ACC = SendBuf++;
  11.         TB8 = P;

  12.         SBUF = ACC;
  13.         ;
  14.                
  15.     }
  16.    
  17.     if (RI)
  18.     {
  19.          RI = 0;
  20.                
  21.         if (RB8)
  22.         {
  23.             P1 = 0xff;
  24.         }
  25.         else
  26.         {
  27.             P1 = 0X00;
  28.         }
  29.     }
  30. }


  31. int main()
  32. {
  33.     //定时器波特率:9600,18.432MHz
  34.     TMOD = 0x20;
  35.     TH1 = 0xFB;
  36.     TL1 = 0xFB;
  37.     TR1 = 1;

  38.     //工作方式3
  39.     SCON = 0xD0;
  40.     PCON = 0x00;

  41.     //允许接收及初始化
  42.     REN = 1;
  43.     TB8 = 0;
  44.     RB8 = 0;

  45.     //开中断
  46.     ES = 1;
  47.     EA = 1;

  48.        
  49.    
  50.     while (1);
  51.    
  52.    
  53.     return 0;
  54. }
复制代码


LZ我这段代码调试通过了的

我用串口助手送入不同的标志位,片子做了不同的响应

能收到那个标志位

发送那边我用软件调试,也OK的


具体你看看你的配置方面的东西
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
你看我用你的CODE调试的.也是这样.不知道我这里.那里设置不对.我已把调试情况录成了图片.
你看一下.
不好意思.不知道怎样上附图片.你能给邮箱吗.麻烦你看一下.谢谢!!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(中级)

10
 
邮箱:lbing7@gmail.com

那LZ你说说你怎么送进那个标志位的?

你的调试方法,流程是什么?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
我已发了.看一下吧.
除了图片上的那些.其它的地方.什么也没设置.
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

12
 
LZ我看到你发的图了

也看了你的串口工具了

呵呵

232口里面的标志位,不是自动生成的

而是通过软件设置(在串口工具里就是手动设置)

你“人工”计算你要发的数据的校验位后

在你的串口工具中:校验位:0DD这一个一拉框里选择对应的值

再发送看

呵呵

如果要改动这个,需要自动地修正这个位

那只能重写串口工具来实现

好像问题就只在这里吧

 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

13
 
上面的高手们,你们误导楼主了吧

PC与51通讯RB8不可能全是零啊?!

PC的串口有多种设置的,可以是校验码,也可以发指定码

不然PC与51的多机通讯如何识别地址与数据呀?!

我没用C,所以搞不明白楼主是代码问题,还是设置问题,不敢胡说

只是不想有人被误导“你是接收哪里来的数据,如果是PC机来那肯定总是0”

 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

14
 
没误导哈

我都说了,我这边都正常的,可以响应RB8

只是PC上的那个RB8位怎么修改的方式问题

呵呵
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

15
 
你好。你再看一下图。我在串口里已经设置了奇校验。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

16
 
12楼的前后矛盾。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

17
 
up
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

18
 
up
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 14 楼 qdicao 的回复:
你好。你再看一下图。我在串口里已经设置了奇校验。


换成偶的
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

20
 
也是一样。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表