6901|27

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串行通信问题 [复制链接]

要求单片机发送一个字节的数据给上位PC机,数据可以发送,但PC机接收到的数据有些不是我设的那个数据,例如发送21H,接收的数据有时为41H,有时为61H。
用的单片机是MC68HC908SR12C,内部总线频率是8MHz,采用的波特率是9600,部分程序如下:

        MOV        #%00110000,SCBR ;设置波特率是9600(8000000/(64*13*1))           
        MOV        #%01000000,SCC1        ;设置允许SCI,正常码输出、8位数据、无校验
        MOV        #%00001100,SCC2        ;设置允许发送、允许接收,查询方式收发
MAINLOOP:
        LDA        #$21
        BRCLR        7,SCS1,*  ;SCS1.7=0? 为0则等待
        STA        SCDR      ;否则发送数据

        BRCLR        1,FLAG,*  ;延时400ms
        BCLR        1,FLAG

        JMP MAINLOOP       
另外我用的是COMTOOLS做为串口调试工具,接收数据时提示帧错误,不知道是什么意思?
我才学单片机不久,还请各位高手赐教一下

最新回复

发一个0xAA,用示波器量一下串口波形,半个月前你这个问题就解决了。。。  详情 回复 发表于 2008-4-22 11:37
点赞 关注

回复
举报

64

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
示波器。。。
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
8M的时钟怎么分出来9600的波特率的?好像不准吧。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
串口发送注意以下设置:
波特率
校验位
数据位
停止位
这些参数都要注意,收发一致。

尽量排除一些物理上不稳定因素,比如接触不良,物件的摆放等等
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 jennyvenus 的回复:
8M的时钟怎么分出来9600的波特率的?好像不准吧。

是不准,分出来大约是9615,但串行通信好像有一定的容错空间吧,错一点应该没什么问题
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 1 楼 yangb_soso 的回复:
示波器。。。

我是想用示波器来着,但感觉挺麻烦,芯片上的引脚那么小,好像不太好引出来测波形
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 3 楼 jiazhen 的回复:
串口发送注意以下设置:
波特率
校验位
数据位
停止位
这些参数都要注意,收发一致。

尽量排除一些物理上不稳定因素,比如接触不良,物件的摆放等等

物理上的问题应该不会,因为我换过几个实验箱,结果都是这种现象,我估计可能是那几个参数的问题,因为我对波特率和停止位的设置拿不准,波特率是从8M分出来的,与标准总有点误差,心里总觉得这里会出问题;而那个停止位我在3个控制寄存器上瞅了好几遍也没发现哪个是设置停止位的,不知道这款单片机是不是不用设置停止位
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

8
 
另外补充一下,传输的数据出错的地方总是高四位,而低四位始终是正确的,挺奇怪的
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

9
 
误差会累加。。。比如你波特率误差5%,那么累积到最后一位数据就会误差45%
要严谨,不要不求甚解。。。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
串口波特率还是用那种标准的好,不然出来的数据容易出错!
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
应该是说时钟频率,用那些常用的,不然确实会出错!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 
起始位,校验位,数据位,停止位,这个是看你设置的模式啊

SCON中的
SM0,SM1  工作方式
0    0     方式0        8位
0    1     方式1       10位
1    0     方式2       11位
1    1     方式3       11位



 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
我也想用标准的波特率,但8M的频率没法分出标准的呀
这个单片机好像没有设置工作方式的,只有三个控制寄存器,就下面三个寄存器


 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

14
 
不好意思,发了两个SCC1寄存器的定义,第三个寄存器SCC3的定义如下:
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

15
 
今天去请教老师了,老师给了我一个示例程序,结果发送数据还是出错,再去找老师,老师一听也晕了,说有空了帮我看下,唉~~~~~,咋就这么难
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

16
 
会不会是大小端的问题
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
试试发0x55,0xaa看看.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

18
 
老师也问我发送0x55是什么了,这能说明什么问题吗?发送0x55收到的是0x95或0xB5.0xaa还没试过。

什么是大小端?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

19
 
发送0x55/0xAA的意义在于,
你可以从示波器上读出实际波特率。。。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

20
 
0x55==0101 0101 0xaa==1010 1010;
这样就能看出你的数据是在第几位发生错误了.
很显然0x95==1001 0101  0xb5==1011 0101;
是从第六位开始发生错误.可能是程序的原因,自己再试着调试看看.
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表