导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:at89c52的串口通信问题[求助][zjz]

 *第6519篇: C51编程:at89c52的串口通信问题[求助]

  
楼 主:zjz 2002年11月26日09:32
 C51编程:at89c52的串口通信问题[求助]
我写了一个简单的串口测试程序:89c52收到两个字节,然后原样返回给pc机。但89c52返回的字
节总不对,如pc机发送“2440”(两个十六机制字节),89c52返回的却是“24FF”。代码如
下,请各位大侠指点问题所在,谢谢!          
          org     0000h
          ljmp    test_main
          org     0023h
          ljmp    test_serial
          
          org     0050h
test_main:
          mov     sp,#80h
          MOV     PCON,#80H         ;SMOD=1
          MOV     SCON,#0D0H        ;SerialPortWorking three,SM2=0
          MOV     TMOD,#22H         ;TimerWorking two
          MOV     TL1, #0FAH        ;BaudRate=9600bps
          MOV     TH1, #0FAH
          SETB    TR1
          SETB    ES
          setb    ea
wait:     sjmp    wait
  
test_serial:   
          clr     ea
          mov     r0,#2
          mov     r1,#65h
loop1:    clr     ri
          mov     a,sbuf
          mov     @r1,a
          inc     r1
          jnb     ri,$
          djnz    r0,loop1
          clr     ri
          mov     r0,#2
          mov     r1,#65h         
loop2:    mov     a,@r1
          mov     sbuf,a
          jnb     ti,$
          clr     ti
          inc     r1
          djnz    r0,loop2
          nop
          nop
          setb     ea
          reti
          end

  
2楼:lenglianxi 2002年11月26日10:23
 回复
你的程序有2个问题:
1: 单片机串口用到了多机通讯位,不知道你对PC机的奇偶校验位怎么设置的。
2: 你这个程序实际上是收到PC的3个字节后,然后返回给PC前2个字节,第3个字节丢失.
  
3楼:zjz 2002年11月26日10:51
 谢谢!我没有用校验,直接收、发。R0减了两次就为0,应该是只收到两个字节吧!
  
4楼:lenglianxi 2002年11月27日08:34
 回复
如果你不用校验, 应当
mov scon, #050h


test_serial:   
          clr     ea;进入中断,已经收到1个字节
          mov     r0,#2
          mov     r1,#65h
loop1:    clr     ri
          mov     a,sbuf
          mov     @r1,a
          inc     r1
          jnb     ri,$;等待第2个字节接收
          djnz    r0,loop1;第1次循环时,已收到2个字节


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

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


[上一篇主题]:闲聊:为什么21ic这几天上不去了?

[下一篇主题]:硬件:求助:哪位大侠能给我一份ericsson的PKF4910A模块电源芯片的引脚资料,我的邮箱he