导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→单片机窜口问题[zheng_wei339]

 *第41853篇: 单片机窜口问题

  
楼 主:zheng_wei339 2006年7月5日20:57
 单片机窜口问题
我是一个新手,在我作单片机窜口试验的时候,发现我的通讯成功率很低。在使用9600b
时,误码率约70%。当低于4800b的时候,误码率更高。低于1200b的时候,无法通信。
具体表现为,在4800b以上时,收到的数据和发送的数据大多头尾相反,比如发送 11 22 33 44 则接收为44 11 22 33,但也能收到正确数据,当低于2400b时则收到的全是乱码,当低于1200b时,则无法通信
我使用的晶振11。0592,并用频率计调准。采用MAX232ACXE  和 自治的分立元件232接口,效果一样,请大家帮我分析一下是什么原因。
谢谢
  
2楼:glg18598 2006年7月6日01:30
 你用的什么单片呀,说一下51的吧,,晶振11.0....
你用的什么单片呀,说一下51的吧,,晶振11.0592,波特率9600,SMOD=0时TH1=0XFD,误差0%;SMOD=1时TH1=OXFA,误差0%,呵呵,,你的定时,时长是多少,呀,。。。
  
3楼:zheng_wei339 2006年7月6日10:12
 我详细说一下
我用的正是51,所有设置和你说得的一样,并且将晶体振荡器的一侧的电容,换成5/25pf
的可调电容,以方便调节频率。在程序编写时,采用窜口工作方式1,接收采用窜口中断
程序如下:
org 0000h
ljmp satar
org 0023h
ljmp zd
org 0100

satar:mov tmod,#20h
       mov th1,#0fdh
       mov tl1,#0fdh
       mov pcon,#00h    ;晶振11。0592mhz,波特率9600
       setb ea          ;cpu 开中断
     setb es          ;开窜行中断
     clr et1          ;ti中断关
     setb tr1         
       mov scon,#50h
       ajmp satar
;中断接收
zd:   mov r0,#04h
       mov r1,#30h
 loop:jnb ri,$
       clr ri
       mov a,sbuf
       mov @r1,a
       inc r1
       djnz r0,loop
;发射       
           mov r0,#04h
  mov r1,#30h
 loop1:       mov a,@r1
  mov sbuf,a
                 jnb ti,$
  clr ti
                 inc r1
  djnz r0,loop1
  reti
end
另外,当我改成接收为一个字节数据时,比如pc发ox0d,单片机在9600b时,在8位数据,一个停止位,无效验的情况下,接收数据大多为ox8d,偶尔才有ox0d.在7位数据,一个停止位,无效验的情况下,接收数据大多为ox4d,偶尔才有ox0d.由此,我也怀疑波特率不准
,又换了刚买的3个11.0592晶振,且没用频率计调,效果一样。单片机我也换了。
我实在想不出该怎么调试了,请帮忙分析一下可能的原因。
谢谢

  
4楼:CnRedLeaf 2006年7月6日10:48
 用不着 clr et1
还有就是mov scon,#50h 应该放在set es前面
ajmp satar不是每个循环都要初始化吗


>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:moden 卡 tone 音资料的读取

[下一篇主题]:protel使用过程中的一个大问题