打印

请问有那位师兄师姐告诉我一下怎么把这个程序的波特率改

[复制链接]
2315|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lijiawei|  楼主 | 2008-12-28 03:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ov, vr, se, Card, LPC
MOV     SP,#60H         ; 设定堆栈区
          MOV     SCON,#01010000B ; 设定串列方式 MODE1,接收时 REN=1
        MOV     TMOD,#20H       ; 设定计时器1 为 模式2
          ORL     PCON,#10000000B ; SMOD=1
          MOV     TH1,#0F4H       ; 设定波特率为 4800
          SETB    TR1             ; 计时器1 ,开始计时
      MOV     R0,#SendCardData
          MOV     R7,#6
请问有那位师兄师姐告诉我一下怎么把这个程序的波特率改为9600

相关帖子

沙发
zyok| | 2008-12-28 03:43 | 只看该作者

找个51波特率计算软件...

使用特权

评论回复
板凳
vwwj| | 2008-12-28 15:49 | 只看该作者

要根据你的定时器1的时钟源计算溢出时间

    时钟源应该是系统时钟分频来的,没有知道时钟源和定时器性质,是没法计算的

使用特权

评论回复
地板
fanxing789| | 2008-12-28 18:14 | 只看该作者

我在实验

晶振11.0592      mov      TH1,#0FDH  
                 mov      tl1,#0fdh     自动重装      
晶振22.1184      mov      th1,#0fah

使用特权

评论回复
5
DONGXU| | 2008-12-28 20:21 | 只看该作者

这样做

当晶体频率为11.0592m,SMOD=1,TH1=0F4H时波特率为 4800.
因此只要把TH1=0FAH波特率就是9600

使用特权

评论回复
6
gx_huang| | 2008-12-29 12:26 | 只看该作者

这个问题也需要问吗?

使用特权

评论回复
7
lijiawei|  楼主 | 2008-12-29 22:48 | 只看该作者

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

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?

使用特权

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

本版积分规则

8

主题

11

帖子

0

粉丝