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

📄 can-18b20.lst

📁 基于CAN总线的 温度采集方法。选用DS18B20温度传感器。
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0496) 	     send_box_0(); //发送CAN信息
    0278 DDE1      RCALL	_send_box_0
(0497) 		 minus_flag=0;  //负温度标志清0
    0279 2422      CLR	R2
    027A 9220006B  STS	minus_flag,R2
(0498) 		 // 读取温度值
(0499) 		CLI();
    027C 94F8      BCLR	7
(0500) 	    while(!ds1820_ack());
    027D DEAB      RCALL	_ds1820_ack
    027E 2300      TST	R16
    027F F3E9      BEQ	0x027D
(0501) 		SEI();
    0280 9478      BSET	7
(0502) 	    write_byte(0xCC);						//	Skip ROM
    0281 EC0C      LDI	R16,0xCC
    0282 DEDD      RCALL	_write_byte
(0503) 	    write_byte(0x44);						//	Start Conversion
    0283 E404      LDI	R16,0x44
    0284 DEDB      RCALL	_write_byte
(0504) 		delay(20);
    0285 E104      LDI	R16,0x14
    0286 E010      LDI	R17,0
    0287 DF0E      RCALL	_delay
(0505) 		CLI();
    0288 94F8      BCLR	7
(0506) 		while(!ds1820_ack());
    0289 DE9F      RCALL	_ds1820_ack
    028A 2300      TST	R16
    028B F3E9      BEQ	0x0289
(0507) 		SEI();
    028C 9478      BSET	7
(0508) 		write_byte(0xCC);						//	Skip ROM
    028D EC0C      LDI	R16,0xCC
    028E DED1      RCALL	_write_byte
(0509) 	    write_byte(0xBE);						//	Read Scratch Pad
    028F EB0E      LDI	R16,0xBE
    0290 DECF      RCALL	_write_byte
(0510) 		for(j = 0; j < 9; j++)
    0291 24EE      CLR	R14
    0292 C008      RJMP	0x029B
(0511) 		temporary[j] = read_byte();
    0293 DEAC      RCALL	_read_byte
    0294 01CE      MOVW	R24,R28
    0295 2DEE      MOV	R30,R14
    0296 27FF      CLR	R31
    0297 0FE8      ADD	R30,R24
    0298 1FF9      ADC	R31,R25
    0299 8300      STD	Z+0,R16
    029A 94E3      INC	R14
    029B 2D8E      MOV	R24,R14
    029C 3089      CPI	R24,0x9
    029D F3A8      BCS	0x0293
(0512) 	     if(!crccheck(temporary,9))  //CRC校验正确
    029E E029      LDI	R18,0x9
    029F 018E      MOVW	R16,R28
    02A0 DE53      RCALL	_crccheck
    02A1 2300      TST	R16
    02A2 F009      BEQ	0x02A4
    02A3 C076      RJMP	0x031A
(0513) 		   { 
(0514) 		    teml=temporary[0];
    02A4 8168      LDD	R22,Y+0
(0515) 		    temh=temporary[1];
    02A5 8149      LDD	R20,Y+1
(0516) 		    // 处理小数第一位
(0517) 			j=teml&0x0F;
    02A6 2F86      MOV	R24,R22
    02A7 708F      ANDI	R24,0xF
    02A8 2EE8      MOV	R14,R24
(0518) 			//温度十位个位处理
(0519) 			 teml>>=4;
    02A9 2F86      MOV	R24,R22
    02AA 9582      SWAP	R24
    02AB 708F      ANDI	R24,0xF
    02AC 2F68      MOV	R22,R24
(0520) 			 temh<<=4;
    02AD 2F84      MOV	R24,R20
    02AE 708F      ANDI	R24,0xF
    02AF 9582      SWAP	R24
    02B0 2F48      MOV	R20,R24
(0521) 			 i=teml|temh;
    02B1 2EC6      MOV	R12,R22
    02B2 2AC8      OR	R12,R24
(0522) 			 if(i>=0x80) //是负温度
    02B3 2D8C      MOV	R24,R12
    02B4 3880      CPI	R24,0x80
    02B5 F048      BCS	0x02BF
(0523) 			  {minus_flag=1;
    02B6 E081      LDI	R24,1
    02B7 9380006B  STS	minus_flag,R24
(0524) 			   i=~i; //取反
    02B9 94C0      COM	R12
(0525) 			   j=(~j)&0x0F;
    02BA 2D8E      MOV	R24,R14
    02BB 9580      COM	R24
    02BC 708F      ANDI	R24,0xF
    02BD 2EE8      MOV	R14,R24
(0526) 			   j=j+1;} //加1
    02BE 94E3      INC	R14
(0527) 			 switch(j) //小数第一位
    02BF 2CAE      MOV	R10,R14
    02C0 24BB      CLR	R11
    02C1 01C5      MOVW	R24,R10
    02C2 3080      CPI	R24,0
    02C3 E0E0      LDI	R30,0
    02C4 079E      CPC	R25,R30
    02C5 F40C      BGE	0x02C7
    02C6 C03E      RJMP	0x0305
    02C7 E180      LDI	R24,0x10
    02C8 158A      CP	R24,R10
    02C9 059B      CPC	R25,R11
    02CA F40C      BGE	0x02CC
    02CB C039      RJMP	0x0305
    02CC E002      LDI	R16,2
    02CD E010      LDI	R17,0
    02CE 0195      MOVW	R18,R10
    02CF D081      RCALL	empy16s
    02D0 01F8      MOVW	R30,R16
    02D1 E286      LDI	R24,0x26
    02D2 E090      LDI	R25,0
    02D3 0FE8      ADD	R30,R24
    02D4 1FF9      ADC	R31,R25
    02D5 9005      LPM	R0,Z+
    02D6 9014      LPM	R1,0(Z)
    02D7 01F0      MOVW	R30,R0
    02D8 9409      IJMP
(0528) 			  {case 0:
(0529) 			   case 1:{dot1=0;break;}
    02D9 2422      CLR	R2
    02DA 9220006C  STS	dot1,R2
    02DC C028      RJMP	0x0305
(0530) 			   case 2:
(0531) 			   case 3:{dot1=1;break;}
    02DD E081      LDI	R24,1
    02DE 9380006C  STS	dot1,R24
    02E0 C024      RJMP	0x0305
(0532) 			   case 4:{dot1=2;break;}
    02E1 E082      LDI	R24,2
    02E2 9380006C  STS	dot1,R24
    02E4 C020      RJMP	0x0305
(0533) 			   case 5:
(0534) 			   case 6:{dot1=3;break;}
    02E5 E083      LDI	R24,3
    02E6 9380006C  STS	dot1,R24
    02E8 C01C      RJMP	0x0305
(0535) 			   case 7:{dot1=4;break;}
    02E9 E084      LDI	R24,4
    02EA 9380006C  STS	dot1,R24
    02EC C018      RJMP	0x0305
(0536) 			   case 8:
(0537) 			   case 9:{dot1=5;break;}
    02ED E085      LDI	R24,5
    02EE 9380006C  STS	dot1,R24
    02F0 C014      RJMP	0x0305
(0538) 			   case 10:
(0539) 			   case 11:{dot1=6;break;}
    02F1 E086      LDI	R24,6
    02F2 9380006C  STS	dot1,R24
    02F4 C010      RJMP	0x0305
(0540) 			   case 12:{dot1=7;break;}
    02F5 E087      LDI	R24,7
    02F6 9380006C  STS	dot1,R24
    02F8 C00C      RJMP	0x0305
(0541) 			   case 13:
(0542) 			   case 14:{dot1=8;break;}
    02F9 E088      LDI	R24,0x8
    02FA 9380006C  STS	dot1,R24
    02FC C008      RJMP	0x0305
(0543) 			   case 15:{dot1=9;break;}
    02FD E089      LDI	R24,0x9
    02FE 9380006C  STS	dot1,R24
    0300 C004      RJMP	0x0305
(0544) 			   case 16:{dot1=0;i=i+1;break;}
    0301 2422      CLR	R2
    0302 9220006C  STS	dot1,R2
    0304 94C3      INC	R12
(0545) 			   default:break;
(0546) 			  }
(0547) 			shi=i/10; //十位
    0305 E01A      LDI	R17,0xA
    0306 2D0C      MOV	R16,R12
    0307 D033      RCALL	div8u
    0308 9300006E  STS	shi,R16
(0548) 			ge=i%10; //个位
    030A E01A      LDI	R17,0xA
    030B 2D0C      MOV	R16,R12
    030C D02C      RCALL	mod8u
    030D 9300006D  STS	ge,R16
(0549) 			if(minus_flag==1)//负温度
    030F 9180006B  LDS	R24,minus_flag
    0311 3081      CPI	R24,1
    0312 F429      BNE	0x0318
(0550) 			wendu=i|0x80; //暂时做 char处理 
    0313 2D8C      MOV	R24,R12
    0314 6880      ORI	R24,0x80
    0315 9380006F  STS	wendu,R24
    0317 C002      RJMP	0x031A
(0551) 			else
(0552) 			wendu=i;
FILE: <library>
    0318 92C0006F  STS	wendu,R12
    031A CF52      RJMP	0x026D
    031B 9629      ADIW	R28,0x9
    031C 9508      RET
mod16u:
    031D 9468      BSET	6
    031E C001      RJMP	xdiv16u
div16u:
    031F 94E8      BCLR	6
xdiv16u:
    0320 92EA      ST	R14,-Y
    0321 92FA      ST	R15,-Y
    0322 938A      ST	R24,-Y
    0323 24EE      CLR	R14
    0324 24FF      CLR	R15
    0325 E180      LDI	R24,0x10
    0326 0F00      LSL	R16
    0327 1F11      ROL	R17
    0328 1CEE      ROL	R14
    0329 1CFF      ROL	R15
    032A 16E2      CP	R14,R18
    032B 06F3      CPC	R15,R19
    032C F018      BCS	0x0330
    032D 1AE2      SUB	R14,R18
    032E 0AF3      SBC	R15,R19
    032F 9503      INC	R16
    0330 958A      DEC	R24
    0331 F7A1      BNE	0x0326
    0332 F416      BRTC	0x0335
    0333 2D0E      MOV	R16,R14
    0334 2D1F      MOV	R17,R15
    0335 9189      LD	R24,Y+
    0336 90F9      LD	R15,Y+
    0337 90E9      LD	R14,Y+
    0338 9508      RET
mod8u:
    0339 9468      BSET	6
    033A C001      RJMP	xdiv8u
div8u:
    033B 94E8      BCLR	6
xdiv8u:
    033C 932A      ST	R18,-Y
    033D 92FA      ST	R15,-Y
    033E 92EA      ST	R14,-Y
    033F 24FF      CLR	R15
    0340 24EE      CLR	R14
    0341 E120      LDI	R18,0x10
    0342 0F00      LSL	R16
    0343 1CFF      ROL	R15
    0344 1CEE      ROL	R14
    0345 16E1      CP	R14,R17
    0346 F010      BCS	0x0349
    0347 1AE1      SUB	R14,R17
    0348 9503      INC	R16
    0349 952A      DEC	R18
    034A F7B9      BNE	0x0342
    034B F40E      BRTC	0x034D
    034C 2D0E      MOV	R16,R14
    034D 90E9      LD	R14,Y+
    034E 90F9      LD	R15,Y+
    034F 9129      LD	R18,Y+
    0350 9508      RET
empy16s:
    0351 920A      ST	R0,-Y
    0352 921A      ST	R1,-Y
    0353 938A      ST	R24,-Y
    0354 939A      ST	R25,-Y
    0355 9F02      MUL	R16,R18
    0356 01C0      MOVW	R24,R0
    0357 9F12      MUL	R17,R18
    0358 0D90      ADD	R25,R0
    0359 9F03      MUL	R16,R19
    035A 0D90      ADD	R25,R0
    035B 018C      MOVW	R16,R24
    035C 9199      LD	R25,Y+
    035D 9189      LD	R24,Y+
    035E 9019      LD	R1,Y+
    035F 9009      LD	R0,Y+
    0360 9508      RET
pop_gset2:
    0361 E0E2      LDI	R30,2
    0362 C00E      RJMP	pop
pop_gset5:
    0363 27EE      CLR	R30
    0364 C00C      RJMP	pop
push_gset5:
    0365 92FA      ST	R15,-Y
    0366 92EA      ST	R14,-Y
push_gset4:
    0367 92DA      ST	R13,-Y
    0368 92CA      ST	R12,-Y
push_gset3:
    0369 92BA      ST	R11,-Y
    036A 92AA      ST	R10,-Y
push_gset2:
    036B 937A      ST	R23,-Y
    036C 936A      ST	R22,-Y
push_gset1:
    036D 935A      ST	R21,-Y
    036E 934A      ST	R20,-Y
    036F 9508      RET
pop_gset1:
    0370 E0E1      LDI	R30,1
pop:
    0371 9149      LD	R20,Y+
    0372 9159      LD	R21,Y+
    0373 FDE0      SBRC	R30,0
    0374 9508      RET
    0375 9169      LD	R22,Y+
    0376 9179      LD	R23,Y+
    0377 FDE1      SBRC	R30,1
    0378 9508      RET
    0379 90A9      LD	R10,Y+
    037A 90B9      LD	R11,Y+
    037B FDE2      SBRC	R30,2
    037C 9508      RET
    037D 90C9      LD	R12,Y+
    037E 90D9      LD	R13,Y+
    037F FDE3      SBRC	R30,3
    0380 9508      RET
    0381 90E9      LD	R14,Y+
    0382 90F9      LD	R15,Y+
    0383 9508      RET
push_lset:
    0384 93FA      ST	R31,-Y
    0385 93EA      ST	R30,-Y
    0386 93BA      ST	R27,-Y
    0387 93AA      ST	R26,-Y
    0388 939A      ST	R25,-Y
    0389 938A      ST	R24,-Y
    038A 933A      ST	R19,-Y
    038B 932A      ST	R18,-Y
    038C 931A      ST	R17,-Y
    038D 930A      ST	R16,-Y
    038E 929A      ST	R9,-Y
    038F 928A      ST	R8,-Y
    0390 927A      ST	R7,-Y
    0391 926A      ST	R6,-Y
    0392 925A      ST	R5,-Y
    0393 924A      ST	R4,-Y
    0394 923A      ST	R3,-Y
    0395 922A      ST	R2,-Y
    0396 921A      ST	R1,-Y
    0397 920A      ST	R0,-Y
    0398 B60F      IN	R0,0x3F
    0399 920A      ST	R0,-Y
    039A 9508      RET
pop_lset:
    039B 9009      LD	R0,Y+
    039C BE0F      OUT	0x3F,R0
    039D 9009      LD	R0,Y+
    039E 9019      LD	R1,Y+
    039F 9029      LD	R2,Y+
    03A0 9039      LD	R3,Y+
    03A1 9049      LD	R4,Y+
    03A2 9059      LD	R5,Y+
    03A3 9069      LD	R6,Y+
    03A4 9079      LD	R7,Y+
    03A5 9089      LD	R8,Y+
    03A6 9099      LD	R9,Y+
    03A7 9109      LD	R16,Y+
    03A8 9119      LD	R17,Y+
    03A9 9129      LD	R18,Y+
    03AA 9139      LD	R19,Y+
    03AB 9189      LD	R24,Y+
    03AC 9199      LD	R25,Y+
    03AD 91A9      LD	R26,Y+
    03AE 91B9      LD	R27,Y+
    03AF 91E9      LD	R30,Y+
    03B0 91F9      LD	R31,Y+
    03B1 9508      RET

⌨️ 快捷键说明

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