在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DS18B20和51單片機連接的匯編程序免費下載

Wildesbeast ? 來源:單片機教程網 ? 作者:單片機教程網 ? 2020-09-06 10:52 ? 次閱讀

匯編程序僅適合單個DS18B20和51單片機的連接,晶振為12MHZ左右

DQ:DS18B20的數據總線接腳

FLAG1:標志位,為“1”時表示檢測到DS18B20

TEMPER_NUM:保存讀出的溫度數據

TEMPER_LEQU36H

TEMPER_HEQU35H

DQBITP1.7

; DS18B20初始化匯編程序

;//*****************************************//

INIT_1820:

SETBDQ

NOP

CLRDQ

MOVR0,#06BH

TSR1:

DJNZR0,TSR1; 延時

SETBDQ

MOVR0,#25H

TSR2:

JNBDQ,TSR3

DJNZR0,TSR2

LJMPTSR4; 延時

TSR3:

SETBFLAG1; 置標志位,表示DS1820存在

LJMPTSR5

TSR4:

CLRFLAG1; 清標志位,表示DS1820不存在

LJMPTSR7

TSR5:

MOVR0,#06BH

TSR6:

DJNZR0,TSR6; 延時

TSR7:

SETBDQ

RET

;//*****************************************//

; 重新寫DS18B20暫存存儲器設定值

;//*****************************************//

RE_CONFIG:

JBFLAG1,RE_CONFIG1; 若DS18B20存在,轉RE_CONFIG1

RET

RE_CONFIG1:

MOVA,#0CCH; 發SKIP ROM命令

LCALLWRITE_1820

MOVA,#4EH; 發寫暫存存儲器命令

LCALLWRITE_1820

MOVA,#00H; TH(報警上限)中寫入00H

LCALLWRITE_1820

MOVA,#00H; TL(報警下限)中寫入00H

LCALLWRITE_1820

MOVA,#1FH; 選擇9位溫度分辨率

LCALLWRITE_1820

RET

;//*****************************************//

; 讀出轉換后的溫度值

;//*****************************************//

GET_TEMPER:

SETBDQ; 定時入口

LCALLINIT_1820

JBFLAG1,TSS2

RET; 若DS18B20不存在則返回

TSS2:

MOVA,#0CCH; 跳過ROM匹配

LCALLWRITE_1820

MOVA,#44H; 發出溫度轉換命令

LCALLWRITE_1820

LCALLINIT_1820

MOVA,#0CCH; 跳過ROM匹配

LCALLWRITE_1820

MOVA,#0BEH; 發出讀溫度命令

LCALLWRITE_1820

LCALLREAD_1820

MOVTEMPER_NUM,A; 將讀出的溫度數據保存

RET

;//*****************************************//

; 讀DS18B20的程序,從DS18B20中讀出一個字節的數據

;//*****************************************//

READ_1820:

MOVR2,#8

RE1:

CLRC

SETBDQ

NOP

NOP

CLRDQ

NOP

NOP

NOP

SETBDQ

MOVR3,#7

DJNZR3,$

MOVC,DQ

MOVR3,#23

DJNZR3,$

RRCA

DJNZR2,RE1

RET

;//*****************************************//

; 寫DS18B20的程序

;//*****************************************//

WRITE_1820:

MOVR2,#8

CLRC

WR1:

CLRDQ

MOVR3,#6

DJNZR3,$

RRCA

MOVDQ,C

MOVR3,#23

DJNZR3,$

SETBDQ

NOP

DJNZR2,WR1

SETBDQ

RET

;//*****************************************//

; 讀DS18B20的程序,從DS18B20中讀出兩個字節的溫度數據

;//*****************************************//

READ_18200:

MOVR4,#2; 將溫度高位和低位從DS18B20中讀出

MOVR1,#36H; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)

RE00:

MOVR2,#8

RE01:

CLRC

SETBDQ

NOP

NOP

CLRDQ

NOP

NOP

NOP

SETBDQ

MOVR3,#7

DJNZR3,$

MOVC,DQ

MOVR3,#23

DJNZR3,$

RRCA

DJNZR2,RE01

MOV@R1,A

DECR1

DJNZR4,RE00

RET

;//*****************************************//

; 將從DS18B20中讀出的溫度數據進行轉換

;//*****************************************//

TEMPER_COV:

MOVA,#0F0H

ANLA,TEMPER_L; 舍去溫度低位中小數點后的四位溫度數值

SWAPA

MOVTEMPER_NUM,A

MOVA,TEMPER_L

JNBACC.3,TEMPER_COV1; 四舍五入去溫度值

INCTEMPER_NUM

TEMPER_COV1:

MOVA,TEMPER_H

ANLA,#07H

SWAPA

ORLA,TEMPER_NUM

MOVTEMPER_NUM,A; 保存變換后的溫度數據

LCALLBIN_BCD

RET

;//*****************************************//

; 將16進制的溫度數據轉換成壓縮BCD碼

;//*****************************************//

BIN_BCD:

MOVDPTR,#TEMP_TAB

MOVA,TEMPER_NUM

MOVCA,@A+DPTR

MOVTEMPER_NUM,A

RET

TEMP_TAB:

DB00H,01H,02H,03H,04H,05H,06H,07H

DB08H,09H,10H,11H,12H,13H,14H,15H

DB16H,17H,18H,19H,20H,21H,22H,23H

DB24H,25H,26H,27H,28H,29H,30H,31H

DB32H,33H,34H,35H,36H,37H,38H,39H

DB40H,41H,42H,43H,44H,45H,46H,47H

DB48H,49H,50H,51H,52H,53H,54H,55H

DB56H,57H,58H,59H,60H,61H,62H,63H

DB64H,65H,66H,67H,68H,69H,70H

;//*****************************************//

下面還介紹一個ds18b20匯編程序

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

FLAG1 BIT F0 ;DS18B20存在標志位

DQ BIT P1.7

TEMPER_L EQU 29H

TEMPER_H EQU 28H

A_BIT EQU 35H

B_BIT EQU 36H

;************ds18b20匯編程序起始********************

ORG 0000H

AJMP MAIN

ORG 0100H

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

MAIN:

LCALL INIT_18B20

;LCALL RE_CONFIG

LCALL GET_TEMPER

AJMP CHANGE

;**********DS18B20復位程序*****************

INIT_18B20: SETB DQ

NOP

CLR DQ

MOV R0,#0FBH

TSR1: DJNZ R0,TSR1 ;延時

SETB DQ

MOV R0,#25H

TSR2: JNB DQ ,TSR3

DJNZ R0,TSR2

TSR3: SETB FLAG1 ;置標志位,表明DS18B20存在

CLR P2.0 ;二極管指示

AJMP TSR5

TSR4: CLR FLAG1

LJMP TSR7

TSR5: MOV R0,#06BH

TSR6: DJNZ R0,TSR6

TSR7:SETB DQ ;表明不存在

RET

;********************設定DS18B20暫存器設定值**************

;RE_CONFIG:

;JB FLAG1,RE_CONFIG1

;RET

;RE_CONFIG1: MOV A,#0CCH ;放跳過ROM命令

;LCALL WRITE_18B20

;MOV A,#4EH

;LCALL WRITE_18B20 ;寫暫存器命令

;MOV A,#00H ;報警上限中寫入00H

;LCALL WRITE_18B20

;MOV A,#00H ;報警下限中寫入00H

; LCALL WRITE_18B20

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

; LCALL WRITE_18B20

; RET

;*****************讀轉換后的溫度值****************

GET_TEMPER:

SETB DQ

LCALL INIT_18B20

JB FLAG1,TSS2

RET ;若不存在則返回

TSS2: MOV A,#0CCH ;跳過ROM

LCALL WRITE_18B20

MOV A,#44H ;發出溫度轉換命令

LCALL WRITE_18B20

LCALL DISPLAY ;延時

LCALL INIT_18B20

MOV A,#0CCH ;跳過ROM

LCALL WRITE_18B20

MOV A,#0BEH ;發出讀溫度換命令

LCALL WRITE_18B20

LCALL READ2_18B20 ;讀兩個字節的溫度

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程序,讀出兩個字節的溫度*********

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

;************讀出的溫度進行數據轉換**************

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 ;調用數碼管顯示子程序

; setb P2.0

LJMP MAIN

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

DISPLAY: mov a,29H;將29H中的十六進制數轉換成10進制

mov b,#10 ;10進制/10=10進制

div ab

mov b_bit,a ;十位在a

mov a_bit,b ;個位在b

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

mov r0,#4

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

dplop: mov a,a_bit ;取個位數

MOVC A,@A+DPTR ;查個位數的7段代碼

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

clr p2.5;開個位顯示

acall d1ms ;顯示1ms

setb p2.5

mov a,b_bit ;取十位數

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

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

clr p2.4;開十位顯示

acall d1ms ;顯示1ms

setb p2.4

djnz r1,dplop ;100次沒完循環

djnz r0,dpl1 ;4個100次沒完循環

ret

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

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

DJNZ R7,$

RET

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6060

    文章

    44833

    瀏覽量

    645165
  • DS18B20
    +關注

    關注

    10

    文章

    782

    瀏覽量

    81857
  • 匯編程序
    +關注

    關注

    0

    文章

    58

    瀏覽量

    16372
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    51單片機匯編程序

    51單片機匯編程序包。
    發表于 01-06 14:12 ?16次下載

    51單片機匯編程序有哪些?51單片機匯編程序集詳細資料免費下載

    本文檔的主要內容詳細介紹的是51單片機匯編程序有哪些?51單片機匯編程序集詳細資料
    發表于 09-06 16:31 ?55次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>匯編程序</b>有哪些?<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>匯編程序</b>集詳細資料<b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    如何使用使用單片機DS18B20進行LED顯示的程序免費下載

    本文檔的主要內容詳細介紹的是如何使用使用單片機DS18B20進行LED顯示的程序免費下載。
    發表于 10-11 08:00 ?13次下載
    如何使用使用<b class='flag-5'>單片機</b><b class='flag-5'>DS18B20</b>進行LED顯示的<b class='flag-5'>程序</b><b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    使用51單片機DS18B20設計溫度傳感器數碼管顯示的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機DS18B20設計溫度傳感器數碼管顯示的程序免費下載
    發表于 08-27 17:29 ?29次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>及<b class='flag-5'>DS18B20</b>設計溫度傳感器數碼管顯示的<b class='flag-5'>程序</b><b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    使用51單片機控制數碼管的匯編程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機控制數碼管的匯編程序免費下載。
    發表于 08-14 17:32 ?11次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>控制數碼管的<b class='flag-5'>匯編程序</b><b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    51單片機DS18B20數字溫度傳感器驅動程序免費下載

    本文檔的主要內容詳細介紹的是51單片機DS18B20數字溫度傳感器驅動程序免費下載
    發表于 07-29 17:36 ?25次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>DS18B20</b>數字溫度傳感器驅動<b class='flag-5'>程序</b><b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    使用51單片機驅動DS18B20溫度傳感器的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機驅動DS18B20溫度傳感器的程序免費下載。
    發表于 07-10 17:40 ?28次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>驅動<b class='flag-5'>DS18B20</b>溫度傳感器的<b class='flag-5'>程序</b><b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    使用51單片機點亮全部LED的匯編程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機點亮全部LED的匯編程序免費下載。
    發表于 07-04 17:41 ?2次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>點亮全部LED的<b class='flag-5'>匯編程序</b><b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    DS18B20測溫程序的C語言程序免費下載

    本文檔的主要內容詳細介紹的是利用51單片機設計DS18B20測溫程序的C語言程序免費
    發表于 06-26 17:43 ?7次下載
    <b class='flag-5'>DS18B20</b>測溫<b class='flag-5'>程序</b>的C語言<b class='flag-5'>程序</b><b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    使用51單片機實現DS18B20溫度傳感器溫度顯示的例程合集免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現DS18B20溫度傳感器溫度顯示的例程合集免費下載。
    發表于 03-09 08:00 ?59次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>實現<b class='flag-5'>DS18B20</b>溫度傳感器溫度顯示的例程合集<b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    使用51單片機實現數字溫度傳感器DS18B20應用的完整代碼合集免費下載

    使用51單片機實現數字溫度傳感器DS18B20應用的完整代碼合集免費下載
    發表于 03-12 16:43 ?81次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>實現數字溫度傳感器<b class='flag-5'>DS18B20</b>應用的完整代碼合集<b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    DS18B20溫度計原理圖和PCB及單片機程序免費下載

    本文檔的主要內容詳細介紹的是DS18B20溫度計原理圖和PCB及單片機程序免費下載。
    發表于 06-16 16:22 ?82次下載
    <b class='flag-5'>DS18B20</b>溫度計原理圖和PCB及<b class='flag-5'>單片機</b><b class='flag-5'>程序</b><b class='flag-5'>免費</b><b class='flag-5'>下載</b>

    使用STC單片機實現DS18B20溫度計的C51配套例程免費下載

    本文檔的主要內容詳細介紹的是使用STC單片機實現DS18B20溫度計的C51配套例程免費下載。
    發表于 03-16 10:12 ?42次下載

    51單片機DS18B20[

    一文讀懂DS18B20溫度傳感器及編程對于新手而言 DS18B20基本概念僅做了解最重要的是利用單片機DS18B20進行
    發表于 11-11 17:36 ?149次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>之<b class='flag-5'>DS18B20</b>[

    51單片機-DS18B20單片

    51單片機-DS18B20單片51單片機-DS18B20
    發表于 11-21 11:51 ?86次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>-<b class='flag-5'>DS18B20</b><b class='flag-5'>單片</b>
    主站蜘蛛池模板: 亚洲图片欧美色图 | 欧美午夜寂寞影院安卓列表 | 欧美黄色影院 | 亚洲成人99| cao草棚视频网址成人 | chinese国产一区二区 | 丁香月婷婷 | 久操视频在线免费观看 | 国产亚洲美女 | 中文字幕在线观看一区 | 国产色婷婷精品综合在线手机播放 | 国产天堂网 | 六月婷婷导航福利在线 | a成人| 成在线人视频免费视频 | 国产伦精品一区二区三区高清 | 午夜免费啪视频观看网站 | 操操操干干干 | 色多多视频在线播放 | 色成年激情久久综合 | 人人做人人爽人人爱秋霞影视 | 婷婷综合五月中文字幕欧美 | 天堂网中文在线 | 亚洲天堂ww | 久久天天躁狠狠躁夜夜不卡 | 精品福利 | 久久综合欧美 | 伊人狠狠丁香婷婷综合色 | 免费看三级黄色片 | 免费观看国产网址你懂的 | 色就操 | 午夜精品久久久久久久四虎 | 青楼社区51在线视频视频 | a久久| 男女一进一出无遮挡黄 | 精品新一区二区三区四区 | 亚洲hhh| 欧美三级在线免费观看 | 天天综合天天色 | 亚洲综合视频一区 | 小说老卫陈红张敏陈法蓉 |