新聞中心

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

        PIC16F877A控制DS18B20匯編程序

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

        ;***********************************************
        ;功能實現(xiàn):通過來讀取溫度,顯示在2位LED上,精確到1度
        ;硬件連接:(1)RC0-RC7接共陽數(shù)碼管的段碼A-H
        ; RA0-RA3接共陽數(shù)碼管的位碼DIG0-DIG3
        ;***************************************************

        ;****************************************************
        ;定義單片機型號為
        ;程序包含文件:P16F877A.INC
        ;定義配置字
        ;*********************************************************
        LIST P=16F877A ;定義本程序所使用的芯片為
        #INCLUDE "P16F877A.INC" ;定義本程序包含該文件

        __CONFIG 3F72H ;晶振配置HS,看門狗禁止,上電延時使能,掉電復(fù)位使能
        ;低電壓編程禁止,代碼不保護

        #DEFINE DQ PORTB,2
        #DEFINE DIR TRISB,2

        CBLOCK 20H
        Y1
        Y2
        COUNT1
        COUNT2
        COMD
        DATE
        BIN_L ;要進行轉(zhuǎn)換的字節(jié)
        GE ;轉(zhuǎn)換后的個位
        SHI ;轉(zhuǎn)換后的十位
        DATE_L
        DATE_H
        ENDC

        ;*****************************************************
        ;復(fù)位矢量定義(對于16F877A)
        ;***************************************************
        ORG 0000H ;復(fù)位矢量地址
        GOTO MAIN ;程序跳轉(zhuǎn)到MAIN主程序
        ;----------------------------------------------------------------------

        ;***************************************************
        ;主程序區(qū)
        ;************************************************
        ORG 0005H
        MAIN
        NOP
        CALL INTIAL
        START BTFSS DQ ;數(shù)據(jù)線空閑狀態(tài)為高電平
        GOTO $-1
        CALL RESET ;復(fù)位
        MOVLW 0CCH ;跳過讀ROM命令
        CALL WR18B20
        MOVLW 44H ;溫度轉(zhuǎn)換
        CALL WR18B20
        CALL DELAY_750US ;延時750us
        CALL RESET ;復(fù)位
        MOVLW 0CCH ;跳過讀ROM命令
        CALL WR18B20
        MOVLW 0BEH ;讀內(nèi)部RAM中的9字節(jié)內(nèi)容
        CALL WR18B20
        NOP
        CALL RE18B20 ;讀數(shù)據(jù)
        MOVF DATE,W
        MOVWF DATE_L ;讀低8位
        CALL RE18B20 ;讀數(shù)據(jù)
        MOVF DATE,W
        MOVWF DATE_H ;讀高8位
        MOVF DATE_L,W
        ;------------------------顯示處理--------------------------------------
        RRF DATE_H,F
        RRF DATE_L,F
        RRF DATE_H,F
        RRF DATE_L,F
        RRF DATE_H,F
        RRF DATE_L,F
        RRF DATE_H,F
        RRF DATE_L,F
        MOVF DATE_L,W
        MOVWF BIN_L ;把高8位的低4位和低8位的高4位組合起來
        CALL DISPLAY ;調(diào)用數(shù)碼管顯示程序
        GOTO START

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

        ;************************************************
        ;初始化和消影
        ;***********************************************************
        INTIAL BSF STATUS,RP0 ;定義當(dāng)前體為體1,對方向寄存器進行修改
        MOVLW 07H
        MOVWF ADCON1 ;關(guān)閉A口的模擬通道
        MOVLW 00H
        MOVWF TRISC ;段碼顯示口為輸出口
        MOVLW 0F0H
        ANDWF TRISA,1 ;使位碼(RA0-RA3)為輸出口
        BSF DIR ;使數(shù)據(jù)線為輸入
        BCF STATUS,RP0 ;使當(dāng)前體為體0
        MOVLW 0FFH ;關(guān)閉段碼
        MOVWF PORTC
        MOVLW 0FFH ;關(guān)閉位碼
        MOVWF PORTA
        BTFSS DQ ;數(shù)據(jù)線空閑狀態(tài)為高電平
        GOTO $-1
        CALL RESET ;復(fù)位DS18B20
        MOVLW 0CCH ;跳過讀ROM命令
        CALL WR18B20
        MOVLW 44H ;溫度轉(zhuǎn)換
        CALL WR18B20
        CALL DELAY_750US ;延時750us
        CALL RESET ;復(fù)位DS18B20
        MOVLW 0CCH ;跳過讀ROM命令
        CALL WR18B20
        MOVLW 0BEH ;讀內(nèi)部RAM中的9字節(jié)內(nèi)容
        CALL WR18B20
        NOP
        NOP
        CALL RE18B20 ;讀數(shù)據(jù)
        CALL RE18B20 ;讀數(shù)據(jù)
        CALL DELAY_MAX ;延時600ms
        CALL DELAY_MAX
        CALL DELAY_MAX
        RETLW 00H
        ;===================================================

        ;**************************************************
        ;顯示所測得的溫度子程序
        ;**********************************************
        DISPLAY
        CALL _BCD
        MOVF SHI,W
        ANDLW 0FH
        CALL TABLE ;調(diào)用查表指令
        MOVWF PORTC ;顯示十位段碼
        BCF PORTA,0 ;選通十位顯示位碼
        CALL DELAY
        BSF PORTA,0 ;關(guān)閉十位顯示位碼
        MOVF GE,W
        ANDLW 0FH
        CALL TABLE ;調(diào)用查表指令
        MOVWF PORTC ;顯示個位段碼
        BCF PORTA,1 ;選通個位顯示位碼
        CALL DELAY
        BSF PORTA,1 ;關(guān)閉個位顯示位碼
        RETLW 00H


        上一頁 1 2 下一頁

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

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 杨浦区| 潜江市| 额敏县| 稷山县| 普格县| 黄骅市| 菏泽市| 桐梓县| 扶风县| 孟村| 潞城市| 高邮市| 温州市| 邳州市| 建湖县| 修水县| 霍邱县| 扎鲁特旗| 肥东县| 桦南县| 广西| 黔南| 大荔县| 黄山市| 迭部县| 惠来县| 青浦区| 河西区| 丹寨县| 根河市| 伊川县| 宕昌县| 邳州市| 新宁县| 张北县| 东光县| 黑河市| 神池县| 德惠市| 集贤县| 台州市|