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

📄 ds18b20.lst

📁 利用AVRM16和DX18B20温度传感器通信
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0214 838A      STD	Y+2,R24
(0349)  temp=temp%1000;
    0215 EE28      LDI	R18,0xE8
    0216 E033      LDI	R19,3
    0217 0185      MOVW	R16,R10
    0218 940E02A9  CALL	mod16u
    021A 0158      MOVW	R10,R16
(0350)  T[1]='0'+temp/100;
    021B E624      LDI	R18,0x64
    021C E030      LDI	R19,0
    021D 940E02AB  CALL	div16u
    021F 01C8      MOVW	R24,R16
    0220 96C0      ADIW	R24,0x30
    0221 838B      STD	Y+3,R24
(0351)  temp=temp%100;
    0222 E624      LDI	R18,0x64
    0223 E030      LDI	R19,0
    0224 0185      MOVW	R16,R10
    0225 940E02A9  CALL	mod16u
    0227 0158      MOVW	R10,R16
(0352)   T[2]='.';
    0228 E28E      LDI	R24,0x2E
    0229 838C      STD	Y+4,R24
(0353)  T[3]='0'+temp/10;
    022A E02A      LDI	R18,0xA
    022B E030      LDI	R19,0
    022C 940E02AB  CALL	div16u
    022E 01C8      MOVW	R24,R16
    022F 96C0      ADIW	R24,0x30
    0230 838D      STD	Y+5,R24
(0354)  temp=temp%10;
    0231 E02A      LDI	R18,0xA
    0232 E030      LDI	R19,0
    0233 0185      MOVW	R16,R10
    0234 940E02A9  CALL	mod16u
    0236 0158      MOVW	R10,R16
(0355)  T[4]='0'+temp/1;
    0237 01C5      MOVW	R24,R10
    0238 96C0      ADIW	R24,0x30
    0239 838E      STD	Y+6,R24
(0356)  LCD_write_string(i,j,T);
    023A 01CE      MOVW	R24,R28
    023B 9602      ADIW	R24,2
    023C 8399      STD	Y+1,R25
    023D 8388      STD	Y+0,R24
    023E 2F26      MOV	R18,R22
    023F 2F04      MOV	R16,R20
    0240 DE8D      RCALL	_LCD_write_string
    0241 962B      ADIW	R28,0xB
    0242 940E02CB  CALL	pop_gset4
    0244 9508      RET
(0357)  
(0358) }
(0359) /*void displayTemp(char x,char y,float num)
(0360) {
(0361) /*uint Tempp=num*10;
(0362) char s[3],i;
(0363) for(i=0;i<3;i++)
(0364) {
(0365) s[i]= Tempp%10;
(0366) Tempp=Tempp/10;
(0367) }
(0368) for(i=0;i<4;i++)
(0369) {
(0370) if(i<2)
(0371) LCD_write_char(x++,y,s[2-i]+'0'); 
(0372) if(i==2)
(0373) LCD_write_char(x++, y,'.');
(0374) if(i==3)
(0375) LCD_write_char(x++,y,s[0]+'0'); 
(0376) }
(0377) }*/
(0378) /******************************************************************************
(0379)                           DS18B20驱动程序
(0380) ******************************************************************************/
(0381) 
(0382) 
(0383) 
(0384) //********************延时函数
(0385) void delay_1us(void)                 //1us延时函数
(0386)   {
(0387)    asm("nop");
_delay_1us:
    0245 0000      NOP
    0246 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    0247 940E02D4  CALL	push_gset2
    0249 01B8      MOVW	R22,R16
(0388)   }
(0389) 
(0390) void delay_nus(unsigned int n)       //N us延时函数
(0391)   {
(0392)    unsigned int i=0;
    024A 2744      CLR	R20
    024B 2755      CLR	R21
(0393)    for (i=0;i<n;i++)
    024C C003      RJMP	0x0250
(0394)    delay_1us();
    024D DFF7      RCALL	_delay_1us
    024E 5F4F      SUBI	R20,0xFF
    024F 4F5F      SBCI	R21,0xFF
    0250 1746      CP	R20,R22
    0251 0757      CPC	R21,R23
    0252 F3D0      BCS	0x024D
    0253 940E02C5  CALL	pop_gset2
    0255 9508      RET
(0395)   }
(0396)   
(0397) void delay_1ms(void)                 //1ms延时函数
(0398)   {
(0399)    unsigned int i;
(0400)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
    0256 2700      CLR	R16
    0257 2711      CLR	R17
    0258 C002      RJMP	0x025B
    0259 5F0F      SUBI	R16,0xFF
    025A 4F1F      SBCI	R17,0xFF
    025B 3704      CPI	R16,0x74
    025C E0E4      LDI	R30,4
    025D 071E      CPC	R17,R30
    025E F3D0      BCS	0x0259
    025F 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    0260 940E02D4  CALL	push_gset2
    0262 01B8      MOVW	R22,R16
(0401)   }
(0402)   
(0403) void delay_nms(unsigned int n)       //N ms延时函数
(0404)   {
(0405)    unsigned int i=0;
    0263 2744      CLR	R20
    0264 2755      CLR	R21
(0406)    for (i=0;i<n;i++)
    0265 C003      RJMP	0x0269
(0407)    delay_1ms();
    0266 DFEF      RCALL	_delay_1ms
    0267 5F4F      SUBI	R20,0xFF
    0268 4F5F      SBCI	R21,0xFF
    0269 1746      CP	R20,R22
    026A 0757      CPC	R21,R23
    026B F3D0      BCS	0x0266
    026C 940E02C5  CALL	pop_gset2
    026E 9508      RET
(0408)   }
(0409) //********************延时函数 
(0410) 
(0411) //端口初始化
(0412) void port_init(void)
(0413) {
(0414)  PORTA = 0xff;
_port_init:
    026F EF8F      LDI	R24,0xFF
    0270 BB8B      OUT	0x1B,R24
(0415)  DDRA  = 0xff;
    0271 BB8A      OUT	0x1A,R24
(0416)  PORTB = 0x00;
    0272 2422      CLR	R2
    0273 BA28      OUT	0x18,R2
(0417)  DDRB  = 0xff;
    0274 BB87      OUT	0x17,R24
(0418)  PORTD = 0xff;
    0275 BB82      OUT	0x12,R24
(0419)  DDRD  = 0xe0;
    0276 EE80      LDI	R24,0xE0
    0277 BB81      OUT	0x11,R24
    0278 9508      RET
_main:
  i                    --> Y+4
    0279 9728      SBIW	R28,0x8
(0420) }
(0421)   
(0422) //主函数  
(0423) main()
(0424) { 
(0425) float i=0;
    027A E504      LDI	R16,0x54
    027B E010      LDI	R17,0
    027C 940E02F6  CALL	lpm32
    027E 01FE      MOVW	R30,R28
    027F 8304      STD	Z+4,R16
    0280 8315      STD	Z+5,R17
    0281 8326      STD	Z+6,R18
    0282 8337      STD	Z+7,R19
(0426) //port_init();
(0427) LCD_init();
    0283 DDDA      RCALL	_LCD_init
(0428) 
(0429) LCD_write_string(0,0 ,"welcome");
    0284 E680      LDI	R24,0x60
    0285 E090      LDI	R25,0
    0286 8399      STD	Y+1,R25
    0287 8388      STD	Y+0,R24
    0288 2722      CLR	R18
    0289 2700      CLR	R16
    028A DE43      RCALL	_LCD_write_string
    028B C015      RJMP	0x02A1
(0430) 
(0431)    while(1)
(0432)    {i=realTemp();//真实温度
    028C DEF5      RCALL	_realTemp
    028D 01FE      MOVW	R30,R28
    028E 8304      STD	Z+4,R16
    028F 8315      STD	Z+5,R17
    0290 8326      STD	Z+6,R18
    0291 8337      STD	Z+7,R19
(0433) 	////i= readTempDS18B20()*0.0625;
(0434) 	displayTemp( 0,1,i);//LCD显示
    0292 01FE      MOVW	R30,R28
    0293 8024      LDD	R2,Z+4
    0294 8035      LDD	R3,Z+5
    0295 8046      LDD	R4,Z+6
    0296 8057      LDD	R5,Z+7
    0297 8228      STD	Y+0,R2
    0298 8239      STD	Y+1,R3
    0299 824A      STD	Y+2,R4
    029A 825B      STD	Y+3,R5
    029B E021      LDI	R18,1
    029C 2700      CLR	R16
    029D DF1B      RCALL	_displayTemp
(0435)     delay_nms(1500);
FILE: <library>
    029E ED0C      LDI	R16,0xDC
    029F E015      LDI	R17,5
    02A0 DFBF      RCALL	_delay_nms
    02A1 CFEA      RJMP	0x028C
    02A2 9628      ADIW	R28,0x8
    02A3 9508      RET
push_arg4:
    02A4 933A      ST	R19,-Y
    02A5 932A      ST	R18,-Y
push_arg2:
    02A6 931A      ST	R17,-Y
    02A7 930A      ST	R16,-Y
    02A8 9508      RET
mod16u:
    02A9 9468      BSET	6
    02AA C001      RJMP	xdiv16u
div16u:
    02AB 94E8      BCLR	6
xdiv16u:
    02AC 92EA      ST	R14,-Y
    02AD 92FA      ST	R15,-Y
    02AE 938A      ST	R24,-Y
    02AF 24EE      CLR	R14
    02B0 24FF      CLR	R15
    02B1 E180      LDI	R24,0x10
    02B2 0F00      LSL	R16
    02B3 1F11      ROL	R17
    02B4 1CEE      ROL	R14
    02B5 1CFF      ROL	R15
    02B6 16E2      CP	R14,R18
    02B7 06F3      CPC	R15,R19
    02B8 F018      BCS	0x02BC
    02B9 1AE2      SUB	R14,R18
    02BA 0AF3      SBC	R15,R19
    02BB 9503      INC	R16
    02BC 958A      DEC	R24
    02BD F7A1      BNE	0x02B2
    02BE F416      BRTC	0x02C1
    02BF 2D0E      MOV	R16,R14
    02C0 2D1F      MOV	R17,R15
    02C1 9189      LD	R24,Y+
    02C2 90F9      LD	R15,Y+
    02C3 90E9      LD	R14,Y+
    02C4 9508      RET
pop_gset2:
    02C5 E0E2      LDI	R30,2
    02C6 940C02DA  JMP	pop
pop_gset3:
    02C8 E0E4      LDI	R30,4
    02C9 940C02DA  JMP	pop
pop_gset4:
    02CB E0E8      LDI	R30,0x8
    02CC 940C02DA  JMP	pop
push_gset5:
    02CE 92FA      ST	R15,-Y
    02CF 92EA      ST	R14,-Y
push_gset4:
    02D0 92DA      ST	R13,-Y
    02D1 92CA      ST	R12,-Y
push_gset3:
    02D2 92BA      ST	R11,-Y
    02D3 92AA      ST	R10,-Y
push_gset2:
    02D4 937A      ST	R23,-Y
    02D5 936A      ST	R22,-Y
push_gset1:
    02D6 935A      ST	R21,-Y
    02D7 934A      ST	R20,-Y
    02D8 9508      RET
pop_gset1:
    02D9 E0E1      LDI	R30,1
pop:
    02DA 9149      LD	R20,Y+
    02DB 9159      LD	R21,Y+
    02DC FDE0      SBRC	R30,0
    02DD 9508      RET
    02DE 9169      LD	R22,Y+
    02DF 9179      LD	R23,Y+
    02E0 FDE1      SBRC	R30,1
    02E1 9508      RET
    02E2 90A9      LD	R10,Y+
    02E3 90B9      LD	R11,Y+
    02E4 FDE2      SBRC	R30,2
    02E5 9508      RET
    02E6 90C9      LD	R12,Y+
    02E7 90D9      LD	R13,Y+
    02E8 FDE3      SBRC	R30,3
    02E9 9508      RET
    02EA 90E9      LD	R14,Y+
    02EB 90F9      LD	R15,Y+
    02EC 9508      RET
neg32:
    02ED 9500      COM	R16
    02EE 9510      COM	R17
    02EF 9520      COM	R18
    02F0 9530      COM	R19
    02F1 5F0F      SUBI	R16,0xFF
    02F2 4F1F      SBCI	R17,0xFF
    02F3 4F2F      SBCI	R18,0xFF
    02F4 4F3F      SBCI	R19,0xFF
    02F5 9508      RET
lpm32:
    02F6 93EA      ST	R30,-Y
    02F7 93FA      ST	R31,-Y
    02F8 920A      ST	R0,-Y
    02F9 2FE0      MOV	R30,R16
    02FA 2FF1      MOV	R31,R17
    02FB 95C8      LPM
    02FC 2D00      MOV	R16,R0
    02FD 9631      ADIW	R30,1
    02FE 95C8      LPM
    02FF 2D10      MOV	R17,R0
    0300 9631      ADIW	R30,1
    0301 95C8      LPM
    0302 2D20      MOV	R18,R0
    0303 9631      ADIW	R30,1
    0304 95C8      LPM
    0305 2D30      MOV	R19,R0
    0306 9009      LD	R0,Y+
    0307 91F9      LD	R31,Y+
    0308 91E9      LD	R30,Y+
    0309 9508      RET
lsr8:
    030A 2311      TST	R17
    030B F019      BEQ	0x030F
    030C 9506      LSR	R16
    030D 951A      DEC	R17
    030E CFFB      RJMP	lsr8
    030F 9508      RET
fp2int:
    0310 940E0491  CALL	savfacc1
    0312 D014      RCALL	FTOI
    0313 2F02      MOV	R16,R18
    0314 2F13      MOV	R17,R19
    0315 FD87      SBRC	R24,7
    0316 C002      RJMP	nojump1
    0317 940C0494  JMP	restorefacc1
nojump1:
    0319 9510      COM	R17
    031A 9501      NEG	R16
    031B 4F1F      SBCI	R17,0xFF
    031C 940C0494  JMP	restorefacc1
fp2long:
    031E 940E0491  CALL	savfacc1
    0320 D008      RCALL	FTOL
    0321 FF87      SBRS	R24,7
    0322 C002      RJMP	nojump2
    0323 940E02ED  CALL	neg32
nojump2:
    0325 940C0494  JMP	restorefacc1
FTOI:
    0327 E0BE      LDI	R27,0xE
    0328 C001      RJMP	0x032A
FTOL:
    0329 E1BE      LDI	R27,0x1E
    032A 940E0497  CALL	unpackfacc1
    032C F069      BEQ	0x033A
    032D 1BB3      SUB	R27,R19
    032E F009      BEQ	0x0330
    032F F472      BPL	0x033E
    0330 2388      TST	R24
    0331 F022      BMI	0x0336
    0332 E010      LDI	R17,0
    0333 E608      LDI	R16,0x68
    0334 940C02F6  JMP	lpm32
    0336 E010      LDI	R17,0
    0337 E60E      LDI	R16,0x6E
    0338 940C02F6  JMP	lpm32
    033A E010      LDI	R17,0
    033B E60C      LDI	R16,0x6C
    033C 940C02F6  JMP	lpm32
    033E 9533      INC	R19
    033F F3D2      BMI	0x033A
    0340 E030      LDI	R19,0
    0341 50B8      SUBI	R27,0x8
    0342 F452      BPL	0x034D
    0343 5FB8      SUBI	R27,0xF8
    0344 2F32      MOV	R19,R18
    0345 2F21      MOV	R18,R17
    0346 2F10      MOV	R17,R16
    0347 E800      LDI	R16,0x80
    0348 C006      RJMP	0x034F
    0349 2F01      MOV	R16,R17
    034A 2F12      MOV	R17,R18
    034B E020      LDI	R18,0
    034C 50B8      SUBI	R27,0x8
    034D 30B8      CPI	R27,0x8

⌨️ 快捷键说明

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