日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 技術(shù)學(xué)院 > 熱搜器件
[導(dǎo)讀]**********************************FLAG1 BIT F0 ;DS18B20存在標(biāo)志位DQ BIT P1.7TEMPER_L EQU 29HTEMPER_H EQU 28HA_BIT EQU 35HB_BIT EQU 36H;************程序起始********************ORG 0000HAJMP MAINORG 010

**********************************

FLAG1 BIT F0 ;DS18B20存在標(biāo)志位

DQ BIT P1.7

TEMPER_L EQU 29H

TEMPER_H EQU 28H

A_BIT EQU 35H

B_BIT EQU 36H

;************程序起始********************

ORG 0000H

AJMP MAIN

ORG 0100H

;**************主程序開始************

MAIN:

LCALL INIT_18B20

;LCALL RE_CONFIG

LCALL GET_TEMPER

AJMP CHANGE

;**********DS18B20復(fù)位程序*****************

INIT_18B20: SETB DQ

NOP

CLR DQ

MOV R0,#0FBH

TSR1: DJNZ R0,TSR1 ;延時(shí)

SETB DQ

MOV R0,#25H

TSR2: JNB DQ ,TSR3

DJNZ R0,TSR2

TSR3: SETB FLAG1 ;置標(biāo)志位,表明DS18B20存在

CLR P2.0 ;二極管指示

AJMP TSR5

TSR4: CLR FLAG1

LJMP TSR7

TSR5: MOV R0,#06BH

TSR6: DJNZ R0,TSR6

TSR7:SETB DQ ;表明不存在

RET

;********************設(shè)定DS18B20暫存器設(shè)定值**************

;RE_CONFIG:

;JB FLAG1,RE_CONFIG1

;RET

;RE_CONFIG1: MOV A,#0CCH ;放跳過(guò)ROM命令

;LCALL WRITE_18B20

;MOV A,#4EH

;LCALL WRITE_18B20 ;寫暫存器命令

;MOV A,#00H ;報(bào)警上限中寫入00H

;LCALL WRITE_18B20

;MOV A,#00H ;報(bào)警下限中寫入00H

; LCALL WRITE_18B20

;MOV A,#1FH ;選擇九位溫度分辨率

; LCALL WRITE_18B20

; RET

;*****************讀轉(zhuǎn)換后的溫度值****************

GET_TEMPER:

SETB DQ

LCALL INIT_18B20

JB FLAG1,TSS2

RET ;若不存在則返回

TSS2: MOV A,#0CCH ;跳過(guò)ROM

LCALL WRITE_18B20

MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令

LCALL WRITE_18B20

LCALL DISPLAY ;延時(shí)

LCALL INIT_18B20

MOV A,#0CCH ;跳過(guò)ROM

LCALL WRITE_18B20

MOV A,#0BEH ;發(fā)出讀溫度換命令

LCALL WRITE_18B20

LCALL READ2_18B20 ;讀兩個(gè)字節(jié)的溫度

RET

;***************寫DS18B20程序************

WRITE_18B20:

MOV R2,#8

CLR C

WR1:

CLR DQ

MOV R3,#6

DJNZ R3,$

RRC A

MOV DQ,C

MOV R3,#23

DJNZ R3,$

SETB DQ

NOP

DJNZ R2,WR1

SETB DQ

RET

;***********讀18B20程序,讀出兩個(gè)字節(jié)的溫度*********

READ2_18B20:

MOV R4,#2 ;低位存在29 H,高位存在28H

MOV R1,#29H

RE00: MOV R2,#8

RE01: CLR C

SETB C

NOP

NOP

CLR DQ

NOP

NOP

NOP

SETB DQ

MOV R3,#7

DJNZ R3,$

MOV C,DQ

MOV R3,#23

DJNZ R3,$

RRC A

DJNZ R2,RE01

MOV @R1,A

DEC R1

DJNZ R4,RE00

RET

;************讀出的溫度進(jìn)行數(shù)據(jù)轉(zhuǎn)換**************

CHANGE: MOV A,29H

MOV C,28H.0 ;將28H中的最低位移入C

RRC A

MOV C,28H.1

RRC A

MOV C,28H.2

RRC A

MOV C,28H.3

RRC A

MOV 29H,A

;setb p2.0

LCALL DISPLAY ;調(diào)用數(shù)碼管顯示子程序

; setb P2.0

LJMP MAIN

;*******************DISPLAY******

DISPLAY: mov a,29H;將29H中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制

mov b,#10 ;10進(jìn)制/10=10進(jìn)制

div ab

mov b_bit,a ;十位在a

mov a_bit,b ;個(gè)位在b

mov dptr,#TAB ;指定查表啟始地址

mov r0,#4

dpl1: mov r1,#250 ;顯示1000次

dplop: mov a,a_bit ;取個(gè)位數(shù)

MOVC A,@A+DPTR ;查個(gè)位數(shù)的7段代碼

mov p0,a ;送出個(gè)位的7段代碼

clr p2.5;開個(gè)位顯示

acall d1ms ;顯示1ms

setb p2.5

mov a,b_bit ;取十位數(shù)

MOVC A,@A+DPTR ;查十位數(shù)的7段代碼

mov p0,a ;送出十位的7段代碼

clr p2.4;開十位顯示

acall d1ms ;顯示1ms

setb p2.4

djnz r1,dplop ;100次沒完循環(huán)

djnz r0,dpl1 ;4個(gè)100次沒完循環(huán)

ret

;***********************************

D1MS: MOV R7,#80 ;1MS延時(shí)(按12MHZ算)

DJNZ R7,$

RET

;*************************

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉