打印

请问下有关单片机串口通讯的问题

[复制链接]
1835|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lijiawei|  楼主 | 2008-12-29 23:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SendCardData    EQU        30H
ReciCardData    EQU        60H
          ORG    0000H
        
                                        
START:     LCALL   WaitDelay 
           LCALL   Commu_Test

               

Commu_Test:
    ;----------------------------
    ;command::AA FF 01 01 A1 F4
    ;----------------------------
     
        ;----------------------------
        MOV     SendCardData +  0, #0AAH
        MOV     SendCardData +  1, #0FFH;开始标志
        MOV     SendCardData +  2, #01H;机号
        MOV     SendCardData +  3, #01H;待发送数据字节数
        MOV     SendCardData +  4, #0A1H;命令字
        MOV     SendCardData +  5, #0F4H;校验字
        LCALL   SoftUART_PutByte
            
            LCALL   SoftUART_GetByte
             MOV    P0, #00FH; 
                
        RET



SoftUART_PutByte:
MOV     SP,#60H         ; 设定堆栈区
          MOV     SCON,#01010000B ; 设定串列方式 MODE1,接收时 REN=1
        MOV     TMOD,#20H       ; 设定计时器1 为 模式2
     
          MOV     TH1,#0FDH       ; 设定波特率为     57600
          SETB    TR1             ; 计时器1 ,开始计时
          SETB     TI
      MOV     R0,#SendCardData
          MOV     R7,#6
        
AGAIN:
          MOV      SBUF,@R0          ;送发送缓冲区
          JNB     TI,$           ;等待发送完成
          CLR     TI
      INC     R0           ;发送下一个
      
          DJNZ    R7,AGAIN
          RET

  SoftUART_GetByte:
  MOV     SP,#60H         ; 设定堆栈区
          MOV     SCON,#01010000B ; 设定串列方式 MODE1,接收时 REN=1
        MOV     TMOD,#20H       ; 设定计时器1 为 模式2
               
          MOV     TH1,#0FDH        ; 设定波特率为 4800
          SETB    TR1             ; 计时器1 ,开始计时
          SETB TI

      MOV     R0,#SendCardData
     
      MOV     R7,#6
AGAIN1:
         
          JNB     RI,$            
          CLR     RI
         MOV      A,SBUF         
      MOV     @R0,A       
      
      INC     R0
      DJNZ    R7,AGAIN1
       
          RET    
          WaitDelay:
      
        MOV     R6,#50
MtDly_Loop2:
        MOV     R7,#100
        DJNZ    R7,$
        DJNZ    R6,MtDly_Loop2
        DJNZ    R5,     WaitDelay
        RET           
  END
请问下为什么用串口调试助手看发送的指令时预计是AA FF 01 01 A1 F4
但总是观察出两串AA FF 01 01 A1 F4 AA FF 01 01 A1 F4?

相关帖子

沙发
耕在此行| | 2008-12-30 11:08 | 只看该作者

程序多 没耐心看

自己慢慢调吧。
程序是调出来的。直接写出来的还不算。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

11

帖子

0

粉丝