⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.lst

📁 DS18B20温度采集芯片的简单应用
💻 LST
📖 第 1 页 / 共 2 页
字号:
  190:	  0133	D2 02		SETB  FLAG3
  191:	  0135			LOGIC4:
  192:	  0135	20 01 05	JB    FLAG2,LOGIC7
  193:	  0138	D5 39 02	DJNZ  WATER1,LOGIC7
  194:	  013B	D2 01		SETB  FLAG2
  195:	  013D			LOGIC7:
  196:	  013D	75 37 00	MOV   MINUTE,#00H
  197:	  0140	05 36		INC   HOUR               ;时
  198:	  0142	E5 36		MOV   A,HOUR
  199:
  200:	  0144	B4 18 03	CJNE  A,#24,COMEBACK
  201:
  202:	  0147	75 36 00	MOV   HOUR,#00H
  203:	  014A			COMEBACK:
  204:	  014A	D0 E0		POP ACC
  205:	  014C	D0 D0		POP PSW
  206:	  014E	32		RETI
  207:				;=====================================================
  208:				;采集温度命令发出,及温度数据采回.
  209:				;=====================================================
  210:	  014F			TRANSFORM:
  211:	  014F	12 01 78	          LCALL RESET0

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 5



 Line  I  Addr  Code            Source

  212:	  0152	30 00 FA	          JNB   FLAG1,TRANSFORM
  213:	  0155	74 CC		          MOV A,#0CCH         ; 跳过ROM匹配
  214:	  0157	12 01 A2	          LCALL WRITE
  215:	  015A	74 44		          MOV A,#044H         ; 发出温度转换命令
  216:	  015C	12 01 A2	          LCALL WRITE
  217:	  015F	22		          RET
  218:
  219:	  0160	C2 8E		GETTEMP:  CLR   TR1
  220:	  0162	12 01 78	          LCALL RESET0
  221:	  0165	30 00 F8	          JNB   FLAG1,GETTEMP
  222:	  0168	74 CC		          MOV A,#0CCH         ; 跳过ROM匹配
  223:	  016A	12 01 A2	          LCALL WRITE
  224:	  016D	74 BE		          MOV A,#0BEH         ; 发出读温度命令
  225:	  016F	12 01 A2	          LCALL WRITE
  226:	  0172	12 01 BB	          LCALL  READ         ;读温度数据
  227:	  0175	D2 8E			  SETB   TR1
  228:	  0177	22		          RET
  229:				;=====================================================
  230:				;DS18B20 复位与检测子程序
  231:				;FLAG1=1 OK, FLAG1=0 ERROR
  232:				;=====================================================
  233:	  0178			RESET0:
  234:	  0178	D2 97		          SETB TX
  235:	  017A	00		          NOP
  236:	  017B	C2 97		          CLR TX
  237:	  017D	7F 64		          MOV R7,#64H            ;主机发出延时600微秒的复位低脉冲
  238:	  017F	7E 03		          MOV R6,#03H
  239:	  0181	DF FE		RESET1:   DJNZ R7,$              ;200v
  240:	  0183	7F 64		          MOV R7,#64H
  241:	  0185	DE FA		          DJNZ R6,RESET1
  242:	  0187	D2 97		          SETB TX        ;然后拉高数据线
  243:	  0189	00		          NOP
  244:	  018A	7F 25		          MOV R7,#25H
  245:	  018C	30 96 04	RESET2:   JNB RX,RESET3  ;等待DS18B20回应
  246:	  018F	DF FB		          DJNZ R7,RESET2
  247:	  0191	80 04		          SJMP RESET4            ; 延时
  248:	  0193	D2 00		RESET3:   SETB FLAG1            ; 置标志位,表示DS1820存在
  249:	  0195	80 04		          SJMP RESET5
  250:	  0197	C2 00		RESET4:   CLR FLAG1             ; 清标志位,表示DS1820不存在
  251:	  0199	80 04		          SJMP RESET6
  252:	  019B	78 F0		RESET5:   MOV R0,#0F0H
  253:	  019D	D8 FE		          DJNZ R0,$             ; 时序要求延时一段时间
  254:	  019F	D2 97		RESET6:   SETB TX
  255:	  01A1	22		          RET
  256:				;======================================================
  257:				;写1BYTE数据
  258:				;======================================================
  259:	  01A2	7F 08		WRITE:  MOV R7,#8            ;一共8位数据
  260:	  01A4	C2 D7		        CLR CY
  261:	  01A6			WR1:
  262:	  01A6	C2 97		        CLR TX        ;开始写入DS18B20总线要处于复位(低)状态
  263:	  01A8	7E 09		        MOV R6,#09
  264:	  01AA	DE FE		        DJNZ R6,$            ;总线复位保持18微妙以上
  265:	  01AC	13		        RRC A                ;把一个字节DATA 分成8个BIT环移给C
  266:	  01AD	92 97		        MOV TX,C      ;写入一个BIT
  267:	  01AF	7E 17		        MOV R6,#23

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 6



 Line  I  Addr  Code            Source

  268:	  01B1	DE FE		        DJNZ R6,$            ;等待46微妙
  269:	  01B3	D2 97		        SETB TX      ;重新释放总线
  270:	  01B5	00		        NOP
  271:	  01B6	DF EE		        DJNZ R7,WR1          ;写入下一个BIT
  272:	  01B8	D2 97		        SETB TX
  273:	  01BA	22		        RET
  274:				;======================================================
  275:				;从DS18B20中读出温度低位、高位和报警值TH、TL
  276:				;存入26H、27H、28H、29H
  277:				;======================================================
  278:	  01BB	7C 04		READ:    MOV R4,#4            ; 将温度高位和低位从DS18B20中读出
  279:	  01BD	79 26		         MOV R1,#26H          ; 存入26H、27H、28H、29H
  280:	  01BF	7A 08		RE00:    MOV R2,#8
  281:	  01C1	C3		RE01:    CLR C
  282:	  01C2	D2 97		         SETB TX
  283:	  01C4	00		         NOP
  284:	  01C5	00		         NOP
  285:	  01C6	C2 97		         CLR TX        ;读前总线保持为低
  286:	  01C8	00		         NOP
  287:	  01C9	00		         NOP
  288:	  01CA	00		         NOP
  289:	  01CB	D2 97		         SETB TX       ;开始读总线释放
  290:	  01CD	7B 09		         MOV R3,#09           ;延时18微妙
  291:	  01CF	DB FE		         DJNZ R3,$
  292:	  01D1	A2 96		         MOV C,RX      ;从DS18B20总线读得一个BIT
  293:	  01D3	7B 17		         MOV R3,#23
  294:	  01D5	DB FE		         DJNZ R3,$            ;等待46微妙
  295:	  01D7	13		         RRC A                ;把读得的位值环移给A
  296:	  01D8	DA E7		         DJNZ R2,RE01         ;读下一个BIT
  297:	  01DA	F7		         MOV @R1,A
  298:	  01DB	09		         INC R1
  299:	  01DC	DC E1		         DJNZ R4,RE00
  300:	  01DE	22		         RET
  301:
  302:				;=======================================================
  303:				;采集温度转化:符号位存于TEMP1(30H),
  304:				              ;整数位存于TEMP2(31H),
  305:				              ;小数位存于TEMP3(32H).
  306:				;=======================================================
  307:	  01DF			CONVERT:
  308:	  01DF	12 01 ED	            LCALL CONVERTZ
  309:	  01E2	E5 30			    MOV A,TEMP1
  310:	  01E4	B4 00 02		    CJNE A,#00H,LOOP
  311:	  01E7	80 03			    SJMP FANHUI
  312:	  01E9	12 02 1B	LOOP:       LCALL CONVERTF
  313:	  01EC	22		FANHUI:     RET
  314:
  315:	  01ED			CONVERTZ:   ;采集温度为+。
  316:	  01ED	7F 03		            MOV R7,#3
  317:	  01EF	E5 27		            MOV A,27H
  318:	  01F1	C3		CONVERT1:   CLR C
  319:	  01F2	13			    RRC A
  320:	  01F3	DF FC			    DJNZ R7,CONVERT1
  321:	  01F5	F5 30			    MOV TEMP1,A
  322:
  323:	  01F7	7F 04		            MOV R7,#4

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 7



 Line  I  Addr  Code            Source

  324:	  01F9	E5 27		            MOV A,TEMPH
  325:	  01FB	85 26 34		    MOV ZC2,TEMPL
  326:	  01FE	C3		CONVERT2:   CLR C
  327:	  01FF	13		            RRC A
  328:	  0200	F5 33			    MOV ZC1,A
  329:	  0202	E5 26			    MOV A,TEMPL
  330:	  0204	13			    RRC A
  331:	  0205	F5 26			    MOV TEMPL,A
  332:	  0207	E5 33			    MOV A,ZC1
  333:	  0209	DF F3			    DJNZ R7,CONVERT2
  334:	  020B	E5 26			    MOV A,TEMPL
  335:	  020D	C2 E7			    CLR ACC.7
  336:	  020F	F5 31			    MOV TEMP2,A
  337:	  0211	85 34 26		    MOV TEMPL,ZC2
  338:
  339:	  0214	E5 26		CONVERT3:   MOV A,TEMPL
  340:	  0216	54 0F			    ANL A,#0FH
  341:	  0218	F5 32			    MOV TEMP3,A
  342:	  021A	22		  	    RET
  343:
  344:	  021B			CONVERTF:   ;采集温度为-。
  345:	  021B	E5 32			   MOV A,TEMP3
  346:	  021D	F4			   CPL A
  347:	  021E	54 0F			   ANL A,#0FH
  348:	  0220	F5 32			   MOV TEMP3,A
  349:
  350:	  0222	E5 31			   MOV A,TEMP2
  351:	  0224	F4			   CPL A
  352:	  0225	54 7F			   ANL A,#7FH
  353:	  0227	F5 31			   MOV TEMP2,A
  354:
  355:	  0229	E5 32			   MOV A,TEMP3
  356:	  022B	24 01			   ADD A,#01H
  357:	  022D	B4 10 0B		   CJNE A,#10H,LOOP1
  358:	  0230	75 32 00		   MOV TEMP3,#0
  359:	  0233	E5 31			   MOV A,TEMP2
  360:	  0235	24 01			   ADD A,#01H
  361:	  0237	F5 31			   MOV TEMP2,A
  362:	  0239	80 02			   SJMP RETURN
  363:	  023B	F5 32		LOOP1:     MOV TEMP3,A
  364:	  023D	22		RETURN:    RET
  365:				;=======================================================
  366:				;延时子程序
  367:				;=======================================================
  368:	  023E			DELAY:                        ;(1S)
  369:	  023E	7F 0A		         MOV R7,#10
  370:	  0240	7E C8		D1:      MOV R6,#200
  371:	  0242	7D FA		D2:      MOV R5,#250
  372:	  0244	DD FE		         DJNZ R5,$
  373:	  0246	DE FA			 DJNZ R6,D2
  374:	  0248	DF F6		         DJNZ R7,D1
  375:	  024A	22		         RET
  376:
  377:	  024B			DELAY1:                       ;(4MS)
  378:	  024B	7E 0A		         MOV R6,#10
  379:	  024D	7D C8		D3:      MOV R5,#200

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 8



 Line  I  Addr  Code            Source

  380:	  024F	DD FE		         DJNZ R5,$
  381:	  0251	DE FA		         DJNZ R6,D3
  382:	  0253	22		         RET
  383:				;=======================================================
  384:				;温度表
  385:				;=======================================================
  386:	  0254	00 01 01 02	TAB1: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H     ;采集小数位(四舍五入).
	  0258	03 03 04 04
	  025C	05 06 06 07
	  0260	08 08 09 09
  387:
  388:	  0264	BF 86 DB CF	TAB2: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH                     ;个位带小数点(共阴带小

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -