在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC16F877A控制DS18B20匯編程序

      PIC16F877A控制DS18B20匯編程序

      作者: 時(shí)間:2012-11-27 來源:網(wǎng)絡(luò) 收藏

      ;======================================================

      ;*******************************************************
      ;二進(jìn)制轉(zhuǎn)BCD碼
      ;****************************************************
      _BCD CLRF SHI ;保存地址清零
      CLRF GE
      MOVF BIN_L,F ;組合碼自己給自己賦值,測試是否為0
      SKPNZ ;不為0則跳到下一步
      RETLW 00H
      SHI_ MOVLW D'10'
      SUBWF BIN_L,W ;BIN_L減10,結(jié)果存到W寄存器
      BTFSS STATUS,C ;執(zhí)行減法后,如果無借位
      GOTO GE_
      MOVWF BIN_L
      INCF SHI
      GOTO SHI_
      GE_ MOVF BIN_L,W
      MOVWF GE
      RETLW 00H
      ;=================================================

      ;**********************************************************
      ;延時(shí)200ms
      ;************************************************************
      DELAY_MAX
      MOVLW 0FFH
      MOVWF Y1
      MOVLW 0FFH
      MOVWF Y2
      DECFSZ Y2
      GOTO $-1
      DECFSZ Y1
      GOTO $-5
      RETLW 00H
      ;==========================================

      ;***************************************************
      ;延時(shí)6ms
      ;*****************************************************
      DELAY
      MOVLW 03FH
      MOVWF Y1
      MOVLW 020H
      MOVWF Y2
      DECFSZ Y2
      GOTO $-1
      DECFSZ Y1
      GOTO $-5
      RETLW 00H
      ;==============================================

      ;********************************************
      ;延時(shí)750us子程序
      ;**********************************************************
      DELAY_750US
      MOVLW 09H
      MOVWF Y1
      MOVLW 01AH
      MOVWF Y2
      DECFSZ Y2
      GOTO $-1
      DECFSZ Y1
      GOTO $-5
      RETLW 00H
      ;=========================================

      ;*******************************************************
      ;查表子程序,用于顯示段碼數(shù)字
      ;數(shù)碼管為共陽數(shù)碼管
      ;********************************************************
      TABLE
      ADDWF PCL,F
      RETLW 0C0H ;"0"
      RETLW 0F9H ;"1"
      RETLW 0A4H ;"2"
      RETLW 0B0H ;"3"
      RETLW 99H ;"4"
      RETLW 92H ;"5"
      RETLW 82H ;"6"
      RETLW 0F8H ;"7"
      RETLW 80H ;"8"
      RETLW 90H ;"9"
      ;===============================================

      ;***********************************************************
      ;復(fù)位和應(yīng)答子程序
      ;************************************************************
      RESET BSF STATUS,RP0 ;使當(dāng)前體為體1
      BCF DIR ;使數(shù)據(jù)位為輸出
      BCF STATUS,RP0 ;使當(dāng)前體為體0
      BSF DQ ;拉高數(shù)據(jù)位
      NOP ;空循環(huán)
      BCF DQ ;拉低數(shù)據(jù)位
      MOVLW D'200' ;延時(shí)600us
      MOVWF Y1
      DECFSZ Y1
      GOTO $-1
      BSF STATUS,RP0 ;使當(dāng)前體為體1
      BSF DIR ;使數(shù)據(jù)位為輸入
      BCF STATUS,RP0 ;使當(dāng)前體為體0
      MOVLW D'30' ;延時(shí)90us
      MOVWF Y1
      DECFSZ Y1
      GOTO $-1
      BTFSC DQ ;主機(jī)接收到低電平應(yīng)答脈沖,跳轉(zhuǎn)到下一句
      GOTO RESET
      MOVLW D'80' ;延時(shí)240us
      MOVWF Y1
      DECFSZ Y1
      GOTO $-1
      BTFSS DQ ;主機(jī)接收到高電平應(yīng)答脈沖,跳轉(zhuǎn)到下一句
      GOTO RESET
      RETLW 00H ;返回00H,復(fù)位應(yīng)答結(jié)束
      ;=================================================

      ;***********************************************************
      ;寫子程序
      ;************************************************************
      WR18B20
      MOVWF COMD ;把要寫的數(shù)據(jù)寫到COMD內(nèi)
      MOVLW D'8'
      MOVWF COUNT2 ;大循環(huán)8次
      WR0 BSF STATUS,RP0 ;使當(dāng)前體為體1
      BCF DIR ;使數(shù)據(jù)位為輸出
      BCF STATUS,RP0 ;使當(dāng)前體為體0
      BCF DQ ;拉低數(shù)據(jù)線
      NOP
      NOP
      MOVLW D'2'
      MOVWF COUNT1 ;延時(shí)9us
      WR1 DECFSZ COUNT1,1
      GOTO WR1
      BTFSC COMD,0 ;COMD最低位為0則跳轉(zhuǎn)到下一句
      BSF DQ ;拉高數(shù)據(jù)線
      BTFSC COMD,0 ;COMD最低位為0則跳轉(zhuǎn)到下一句
      NOP
      BCF STATUS,C ;進(jìn)位位置0
      RRF COMD,1 ;帶進(jìn)位位,COMD向右移一位
      MOVLW D'20' ;延時(shí)60us
      MOVWF COUNT1
      WR2 DECFSZ COUNT1,1
      GOTO WR2
      BSF DQ ;拉高數(shù)據(jù)線,空閑狀態(tài)
      BSF STATUS,RP0 ;使當(dāng)前體為體1
      BSF DIR ;使數(shù)據(jù)位為輸入
      BCF STATUS,RP0 ;使當(dāng)前體為體0
      DECFSZ COUNT2,1 ;8次循環(huán)到了則跳出
      GOTO WR0
      RETLW 00H
      ;====================================================

      ******************
      ;讀18B20子程序
      ;**********************************************************
      RE18B20
      MOVLW 8
      MOVWF COUNT2
      RE0 BSF STATUS,RP0 ;使當(dāng)前體為體1
      BCF DIR ;使數(shù)據(jù)位為輸出
      BCF STATUS,RP0 ;使當(dāng)前體為體0
      BCF DQ
      MOVLW 2
      MOVWF COUNT1
      RE1 DECFSZ COUNT1,1
      GOTO RE1
      BSF STATUS,RP0 ;使當(dāng)前體為體1
      BSF DIR ;使數(shù)據(jù)位為輸入
      BCF STATUS,RP0 ;使當(dāng)前體為體0
      NOP
      BTFSS DQ ;如果數(shù)據(jù)線為高電平,則C=1
      BCF STATUS,C
      BTFSC DQ ;如果數(shù)據(jù)線為低電平,則C=0
      BSF STATUS,C
      RRF DATE,1 ;數(shù)據(jù)依次存在DATE上
      MOVLW D'20' ;延時(shí)60us
      MOVWF COUNT1
      RE2 DECFSZ COUNT1,1
      GOTO RE2
      DECFSZ COUNT2,1
      GOTO RE0
      BSF DQ
      RETLW 00H
      ;======================================================

      ;==============================================
      END ;程序結(jié)束


      上一頁 1 2 下一頁

      關(guān)鍵詞: PIC16F877A DS18B20 匯編程序

      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉