打印

单线通讯中的同步和波特率问题

[复制链接]
2044|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21ID|  楼主 | 2010-2-27 09:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.发送子程序   list p=16c65,f=inhx8m
portb  equ6
trisb  equ 16h
status equ3
rp0    equ5
        org0x100
fs    bsf   status,rp0;选存储体1
       bcf   trisb,6    ;置RB6为输出
       bcf   status,rp0;恢复存储体0
       bsf    portb,6   ;发准备信号“1”
       movlw0x08
       movwf1f       ;置发送字长
       call   ystb      ;延时同步
       movlw0x10
       movwf1c
fs1  bcf    portb,6   ;发16个起始位
       decfsz1c,1
       goto   fs1
ts    call   ystj      ;延时调节波特率
       rrf    16h,1     ;发送字节移位
      btfsc  status,0
       goto    ty
       movlw0x10
       movwf1c
fs2  bcf    portb,6   ;位为0,发16个“0”
       decfsz1c,1
       goto   fs2
       goto     tr
ty    movlw0x10
       movwf1c
fs3  bsf    portb,6   ;位为1,发16个“1”
       decfsz1c,1
      goto         fs3
tr    decfsz1f,  1
      goto    ts        ;发送未完,延时发下一位
       return          ;发送结束返回
      end
    2.接收子程序
   list p=16c65,f=inhx8m
portb  equ6
trisb  equ 16h
status equ 3
rp0    equ5
         org   0x200
js    bsf    status,rp0  ;选存储体1
      bsf     trisb,4     ;置RB4为输入
      bcf    status,rp0  ;恢复存储体0
js1  btfss   portb,4    ;检测收到“1”否
      goto    js1        ;未收到“1”继续检测
      movlw0x08      ;置接收字长8位
      movwf1f
loop1 movlw0x08      ;置循环次数8
       movwf1d
loop  btfsc  portb,4    ;检测起始位
        goto   loop1     ;未收到“0”重置8次循环
       decfsz1d,1
       goto   loop       ;收到“0”继续检测
jz    call     ystb       ;收到8个“0”,延时同步,接收数据
        btfsc    portb,4     ;测试接收位
        goto   jy
      bcf    status,0    ;收到“0”置c=0
      goto   j1
jy    bsf    status,0    ;收到“1”置c=1
j1    rrf     14h,1      ;接收位移入14h
      decfsz  1f,1
      goto   jz         ;未接收完,延时接收下一位
        return            ;接收完返回
        end

上面的程序貌似是匠人写的吧,我想问一个延时同步和延时调节波特率是什么?作用呢?

相关帖子

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

本版积分规则

157

主题

912

帖子

5

粉丝