英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3229|回复: 1
打印 上一主题 下一主题

单总线通信

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-24 14:00:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用了两片pic12f629模拟单总线通信,一个模拟主机,一个模拟从机,当从机向主机发送数据“0”时,总线上的电平在1.0v左右,这样主机就认为接受到了“1”,而当主机发送复位脉冲从机应答的时候总线上的电平却能降到0v,这是为什么呢?

主机接收代码:
RECEIVE_START
   RRF INDF,1
   BSF STATUS,RP0 ;BANK1
   BCF (TRISB^80H),RB0 ;设置RB0口为输出状态
   BCF STATUS,RP0 ;BANK0
   BCF PORTB,RB0
   MOVLW 0EH ;DELAY 46US
   MOVWF DELAY_COUNT1
   DECFSZ DELAY_COUNT1,1
   GOTO $-1
;-----设置RB0口为输入状态,释放总线
   
   BSF PORTB,RB0

   BSF STATUS,RP0 ;BANK1
   BCF (TRISB^80H),RB0 ;
   BCF STATUS,RP0 ;BANK0

;就在这个时刻之后从机发送信号,如果发送“0”则总线上电平是1v
;---------------------------
   
MOVLW 06H  ;主机延时20us后开始采样
   MOVWF DELAY_COUNT1
   DECFSZ DELAY_COUNT1,1
   GOTO $-1
   BTFSS PORTB,RB0
   GOTO RECORD_0
   GOTO RECORD_1
RECORD_0
   MOVLW 07H  ;巡检42us
   MOVWF DELAY_COUNT1
   BTFSC PORTB,RB0
   GOTO RECEIVE_FAILER
   DECFSZ DELAY_COUNT1,1
   GOTO $-3
   BCF INDF,07H
   GOTO BIT_END
RECORD_1
   MOVLW 07H  ;巡检42us
   MOVWF DELAY_COUNT1
   BTFSS PORTB,RB0
   GOTO RECEIVE_FAILER
   DECFSZ DELAY_COUNT1,1
   GOTO $-3
   BSF INDF,07H
   GOTO BIT_END
BIT_END
   MOVLW 18H ;在120us内检测从器件的高电平信号
   MOVWF DELAY_COUNT1
   BTFSC PORTB,RB0
   GOTO STOP_BIT
   DECFSZ DELAY_COUNT1,1
   GOTO $-3
   GOTO RECEIVE_FAILER
STOP_BIT
   MOVLW 06H  ;巡检32us
   MOVWF DELAY_COUNT1
   BTFSS PORTB,RB0
   GOTO RECEIVE_FAILER
   DECFSZ DELAY_COUNT1,1
   GOTO $-3
2#
 楼主| 发表于 2009-3-24 14:00:56 | 只看该作者
;-----设置RB0口为输入状态,释放总线
   
   BSF PORTB,RB0

   BSF STATUS,RP0 ;BANK1
   BCF (TRISB^80H),RB0 ;                       //RB0还是输出啊?
   BCF STATUS,RP0 ;BANK0
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-5-17 20:34 , Processed in 0.049827 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表