电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

DS18B20在16F877A上的实现(4)

来源:-- 作者:-- 浏览:321

标签:

摘要: ;***********************************************************************;DS18B20复位和应答子程序 ;***********************************************************************RESET BSF&

;***********************************************************************
;DS18B20复位和应答子程序

 

;***********************************************************************
RESET    BSF       STATUS,RP0     ;使当前体为体1
         BCF       DIR            ;使数据位为输出
         BCF       STATUS,RP0     ;使当前体为体0
         BSF       DQ             ;拉高数据位
         NOP                      ;空循环
         BCF       DQ             ;拉低数据位
         MOVLW     D'200'         ;延时600us
         MOVWF     Y1             
         DECFSZ    Y1
         GOTO      $-1
         BSF       STATUS,RP0     ;使当前体为体1
         BSF       DIR            ;使数据位为输入
         BCF       STATUS,RP0     ;使当前体为体0
         MOVLW     D'30'          ;延时90us
         MOVWF     Y1
         DECFSZ    Y1
         GOTO      $-1
         BTFSC     DQ             ;主机接收到低电平应答脉冲,跳转到下一句
         GOTO      RESET      
         MOVLW     D'80'          ;延时240us
MOVWF     Y1
         DECFSZ    Y1
         GOTO      $-1
         BTFSS     DQ             ;主机接收到高电平应答脉冲,跳转到下一句
         GOTO      RESET
         RETLW     00H            ;返回00H,复位应答结束
;========================================================================

 

;***********************************************************************
;写DS18B20子程序
;***********************************************************************
WR18B20
         MOVWF     COMD           ;把要写的数据写到COMD内
         MOVLW     D'8'
         MOVWF     COUNT2         ;大循环8次
WR0      BSF       STATUS,RP0     ;使当前体为体1
         BCF       DIR            ;使数据位为输出
         BCF       STATUS,RP0     ;使当前体为体0
         BCF       DQ             ;拉低数据线
         NOP
         NOP
         MOVLW     D'2'
         MOVWF     COUNT1         ;延时9us
WR1      DECFSZ    COUNT1,1
         GOTO      WR1   
         BTFSC     COMD,0         ;COMD最低位为0则跳转到下一句
         BSF       DQ             ;拉高数据线
         BTFSC     COMD,0         ;COMD最低位为0则跳转到下一句
         NOP

BCF       STATUS,C         ;进位位置0
         RRF       COMD,1          ;带进位位,COMD向右移一位
         MOVLW     D'20'           ;延时60us
         MOVWF     COUNT1
WR2      DECFSZ    COUNT1,1
         GOTO      WR2
         BSF       DQ             ;拉高数据线,空闲状态
         BSF       STATUS,RP0     ;使当前体为体1
         BSF       DIR            ;使数据位为输入
         BCF       STATUS,RP0     ;使当前体为体0   
         DECFSZ    COUNT2,1       ;8次循环到了则跳出
         GOTO      WR0    
         RETLW     00H
;=======================================================================
   

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67