中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

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

        PIC16F877A控制DS18B20匯編程序

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

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

        ;*******************************************************
        ;二進制轉(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
        ;=================================================

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

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

        ;********************************************
        ;延時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"
        ;===============================================

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

        ;***********************************************************
        ;寫子程序
        ;************************************************************
        WR18B20
        MOVWF COMD ;把要寫的數(shù)據(jù)寫到COMD內(nèi)
        MOVLW D'8'
        MOVWF COUNT2 ;大循環(huán)8次
        WR0 BSF STATUS,RP0 ;使當前體為體1
        BCF DIR ;使數(shù)據(jù)位為輸出
        BCF STATUS,RP0 ;使當前體為體0
        BCF DQ ;拉低數(shù)據(jù)線
        NOP
        NOP
        MOVLW D'2'
        MOVWF COUNT1 ;延時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 ;進位位置0
        RRF COMD,1 ;帶進位位,COMD向右移一位
        MOVLW D'20' ;延時60us
        MOVWF COUNT1
        WR2 DECFSZ COUNT1,1
        GOTO WR2
        BSF DQ ;拉高數(shù)據(jù)線,空閑狀態(tài)
        BSF STATUS,RP0 ;使當前體為體1
        BSF DIR ;使數(shù)據(jù)位為輸入
        BCF STATUS,RP0 ;使當前體為體0
        DECFSZ COUNT2,1 ;8次循環(huán)到了則跳出
        GOTO WR0
        RETLW 00H
        ;====================================================

        ******************
        ;讀18B20子程序
        ;**********************************************************
        RE18B20
        MOVLW 8
        MOVWF COUNT2
        RE0 BSF STATUS,RP0 ;使當前體為體1
        BCF DIR ;使數(shù)據(jù)位為輸出
        BCF STATUS,RP0 ;使當前體為體0
        BCF DQ
        MOVLW 2
        MOVWF COUNT1
        RE1 DECFSZ COUNT1,1
        GOTO RE1
        BSF STATUS,RP0 ;使當前體為體1
        BSF DIR ;使數(shù)據(jù)位為輸入
        BCF STATUS,RP0 ;使當前體為體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' ;延時60us
        MOVWF COUNT1
        RE2 DECFSZ COUNT1,1
        GOTO RE2
        DECFSZ COUNT2,1
        GOTO RE0
        BSF DQ
        RETLW 00H
        ;======================================================

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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉