?? ds1620a.asm
字號:
;****************************************************************
;/* 這是DS1620的匯編程序, 文件名DS1620A.ASM */
;/* 功能:本程序主要是讀出DS1620芯片轉換后的溫度值,并把它放在 */
;/* 寄存器R1,R2中,R2中放高8位。注意,這兩個8 位共16位中,只 */
;/* 有低9位有效。這里測溫范圍是-55℃~125℃。 */
;/* 本程序適合DS1620 和51系列單片機的連接,晶振為12MHZ左右。 */
;******************************************************************
DQ BIT P1.0
CLK BIT P1.1
RST BIT P1.2
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV SP,#30H
CLR EA
LCALL CONFIGURE ;寫DS1620配置寄存器設定值
;LCALL RECONFIGURE ;讀DS1620配置寄存器設定值
LCALL STARTCONVERT ;使DS1620 開始轉換溫度
LCALL READTEMPERATURE ;讀出轉換后的溫度值
SJMP $
WRITE1620: ; 寫DS1620
MOV R0,#08H ; 每次寫入8B
ITWRITE:
CLR CLK ; 時鐘脈沖置零
RRC A ; 右移A , 使最低位移入進位位C中
MOV DQ ,C ; 輸出C到DQ
SETB CLK ; 產生時鐘脈沖的上升沿
DJNZ R0,ITWRITE
RET
READ1620: ; 讀DS1620
MOV R0, #08H ; 每次讀出8B
SETB DQ ; 置DQ為1, 使其做為輸入端
ITREAD:
CLR CLK ; 時鐘脈沖置零
MOV C,DQ ; 將DQ 來的1 B 移入C
SETB CLK ; 產生時鐘脈沖的上升沿
RRC A ; 右移A ,使進位C 移入A 中的最高位
DJNZ R0,ITREAD
CLR DQ
RET
CONFIGURE: ; DS1620寫配置,入口參數為配置寄存器新配置內容
SETB RST ; 使DS1620的RST為高電平, 開始發送
MOV A , #0CH ; 發送“寫”命令給DS1620
ACALL WRITE1620
MOV A , #00001010B ; 使工作方式寄存器中CUP=1,1SHOT=0,THF=0,TLF=0
ACALL WRITE1620
CLR RST ; 結束發送
RET
RECONFIGURE: ; DS1620讀配置,返回值為配置寄存器內容
SETB RST ; 使DS1620的RST為高電平, 開始發送
MOV A , #0ACH ; 發送“讀”命令給DS1620
ACALL WRITE1620
ACALL READ1620 ; 配置寄存器內容在累加器A中
CLR RST
RET
STARTCONVERT: ; 使DS1620 開始轉換溫度
SETB RST ; 使DS1620 的RST 為高電平, 開始發送命令
MOV A,#0EEH ; 發送“開始轉換”命令給DS1620
ACALL WRITE1620
CLR RST ; 結束發送
RET
READTEMPERATURE: ; 讀取溫度值
SETB RST
MOV A,#0AAH ; 發送“讀溫度”命令給DS1620
ACALL WRITE1620
ACALL READ1620 ; 讀取第1 字節
MOV R1,A ; 首字節送R1
ACALL READ1620 ; 讀取第2字節
MOV R2,A ; 第2字節送R2
CLR RST
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -