專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
;************************************************************************
;<<溫度計(jì)-基于DS18B20>>
;時(shí)間:2006.3.6
;程序文件名:“DS18B20.asm”
;功能實(shí)現(xiàn):通過DS18B20來讀取溫度,顯示在2位LED上,精確到1度
;硬件連接:(1)RC0-RC7接共陽數(shù)碼管的段碼A-H
; RA0-RA3接共陽數(shù)碼管的位碼DIG0-DIG3
;***********************************************************************
;***********************************************************************
;定義單片機(jī)型號(hào)為PIC16F877A
;程序包含文件:P16F877A.INC
;定義配置字
;***********************************************************************
LIST P=16F877A ;定義本程序所使用的芯片為PIC16F877A
#INCLUDE "P16F877A.INC" ;定義本程序包含該文件
__CONFIG 3F72H ;晶振配置HS,看門狗禁止,上電延時(shí)使能,掉電復(fù)位使能
;低電壓編程禁止,代碼不保護(hù)
#DEFINE DQ PORTB,2
#DEFINE DIR TRISB,2
CBLOCK 20H
Y1
Y2
COUNT1
COUNT2
COMD
DATE
BIN_L ;要進(jìn)行轉(zhuǎn)換的字節(jié)
GE ;轉(zhuǎn)換后的個(gè)位
__CONFIG 3F72H ;晶振配置HS,看門狗禁止,上電延時(shí)使能,掉電復(fù)位使能
;低電壓編程禁止,代碼不保護(hù)
#DEFINE DQ PORTB,2
#DEFINE DIR TRISB,2
CBLOCK 20H
Y1
Y2
COUNT1
COUNT2
COMD
DATE
BIN_L ;要進(jìn)行轉(zhuǎn)換的字節(jié)
GE ;轉(zhuǎn)換后的個(gè)位
__CONFIG 3F72H ;晶振配置HS,看門狗禁止,上電延時(shí)使能,掉電復(fù)位使能
;低電壓編程禁止,代碼不保護(hù)
#DEFINE DQ PORTB,2
#DEFINE DIR TRISB,2
CBLOCK 20H
Y1
Y2
COUNT1
COUNT2
COMD
DATE
BIN_L ;要進(jìn)行轉(zhuǎn)換的字節(jié)
GE ;轉(zhuǎn)換后的個(gè)位
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,對(duì)方向寄存器進(jìn)行修改
MOVLW 07H
MOVWF ADCON1 ;關(guān)閉A口的模擬通道
MOVLW 00H
MOVWF TRISC ;段碼顯示口為輸出口
MOVLW 0F0H
ANDWF TRISA,1 ;使位碼(RA0-RA3)為輸出口
BSF DIR ;使數(shù)據(jù)線為輸入
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,對(duì)方向寄存器進(jìn)行修改
MOVLW 07H
MOVWF ADCON1 ;關(guān)閉A口的模擬通道
MOVLW 00H
MOVWF TRISC ;段碼顯示口為輸出口
MOVLW 0F0H
ANDWF TRISA,1 ;使位碼(RA0-RA3)為輸出口
BSF DIR ;使數(shù)據(jù)線為輸入
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é)束