色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          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 ;定義當前體為體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 ;使當前體為體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)閉