📄 main.lss
字号:
29e: ec 2f mov r30, r28
2a0: ff 27 eor r31, r31
2a2: ed 56 subi r30, 0x6D ; 109
2a4: ff 4f sbci r31, 0xFF ; 255
2a6: 80 81 ld r24, Z
2a8: f1 cf rjmp .-30 ; 0x28c
}
writetab(); //自定义字符写入CGRAM
2aa: d5 df rcall .-86 ; 0x256
delay_nms(5);
2ac: 85 e0 ldi r24, 0x05 ; 5
2ae: 90 e0 ldi r25, 0x00 ; 0
2b0: d3 de rcall .-602 ; 0x58
lcd_pos(0x0d);
2b2: 8d e0 ldi r24, 0x0D ; 13
2b4: cc df rcall .-104 ; 0x24e
lcd_wdat(0x00); //显示自定义字符
2b6: 80 e0 ldi r24, 0x00 ; 0
2b8: bd df rcall .-134 ; 0x234
lcd_pos(0x40); //设置显示位置为第二行第1个字符
2ba: 80 e4 ldi r24, 0x40 ; 64
2bc: c8 df rcall .-112 ; 0x24e
m = 0;
2be: c0 e0 ldi r28, 0x00 ; 0
while(cdis2[m] != '\0')
{
lcd_wdat(cdis2[m]); //显示字符
m++;
2c0: 80 91 82 00 lds r24, 0x0082
2c4: 88 23 and r24, r24
2c6: 69 f0 breq .+26 ; 0x2e2
2c8: ec 2f mov r30, r28
2ca: ff 27 eor r31, r31
2cc: ee 57 subi r30, 0x7E ; 126
2ce: ff 4f sbci r31, 0xFF ; 255
2d0: 80 81 ld r24, Z
2d2: b0 df rcall .-160 ; 0x234
2d4: cf 5f subi r28, 0xFF ; 255
2d6: ec 2f mov r30, r28
2d8: ff 27 eor r31, r31
2da: ee 57 subi r30, 0x7E ; 126
2dc: ff 4f sbci r31, 0xFF ; 255
2de: 80 81 ld r24, Z
2e0: f1 cf rjmp .-30 ; 0x2c4
}
lcd_pos(0x4d);
2e2: 8d e4 ldi r24, 0x4D ; 77
2e4: b4 df rcall .-152 ; 0x24e
lcd_wdat(0x00); //显示自定义字符
2e6: 80 e0 ldi r24, 0x00 ; 0
2e8: a5 df rcall .-182 ; 0x234
2ea: cf 91 pop r28
2ec: 08 95 ret
000002ee <Error_Menu>:
}
/*******************************************************************/
/* */
/* DS18B20 ERROR 显示菜单 */
/* */
/*******************************************************************/
void Error_Menu (void)
{
2ee: cf 93 push r28
uchar m;
lcd_init(); //初始化LCD
2f0: 74 df rcall .-280 ; 0x1da
lcd_pos(0); //设置显示位置为第一行的第1个字符
2f2: 80 e0 ldi r24, 0x00 ; 0
2f4: ac df rcall .-168 ; 0x24e
m = 0;
2f6: c0 e0 ldi r28, 0x00 ; 0
while(cdis3[m] != '\0')
{ //显示字符
lcd_wdat(cdis3[m]);
m++;
2f8: 80 91 71 00 lds r24, 0x0071
2fc: 88 23 and r24, r24
2fe: 69 f0 breq .+26 ; 0x31a
300: ec 2f mov r30, r28
302: ff 27 eor r31, r31
304: ef 58 subi r30, 0x8F ; 143
306: ff 4f sbci r31, 0xFF ; 255
308: 80 81 ld r24, Z
30a: 94 df rcall .-216 ; 0x234
30c: cf 5f subi r28, 0xFF ; 255
30e: ec 2f mov r30, r28
310: ff 27 eor r31, r31
312: ef 58 subi r30, 0x8F ; 143
314: ff 4f sbci r31, 0xFF ; 255
316: 80 81 ld r24, Z
318: f1 cf rjmp .-30 ; 0x2fc
}
lcd_pos(0x40); //设置显示位置为第二行第1个字符
31a: 80 e4 ldi r24, 0x40 ; 64
31c: 98 df rcall .-208 ; 0x24e
m = 0;
31e: c0 e0 ldi r28, 0x00 ; 0
while(cdis4[m] != '\0')
{
lcd_wdat(cdis4[m]); //显示字符
m++;
320: 80 91 60 00 lds r24, 0x0060
324: 88 23 and r24, r24
326: 71 f0 breq .+28 ; 0x344
328: ec 2f mov r30, r28
32a: ff 27 eor r31, r31
32c: e0 5a subi r30, 0xA0 ; 160
32e: ff 4f sbci r31, 0xFF ; 255
330: 80 81 ld r24, Z
332: 80 df rcall .-256 ; 0x234
334: cf 5f subi r28, 0xFF ; 255
336: ec 2f mov r30, r28
338: ff 27 eor r31, r31
33a: e0 5a subi r30, 0xA0 ; 160
33c: ff 4f sbci r31, 0xFF ; 255
33e: 80 81 ld r24, Z
340: 88 23 and r24, r24
342: 91 f7 brne .-28 ; 0x328
344: cf 91 pop r28
346: 08 95 ret
00000348 <Disp_Temperature>:
}
}
/*******************************************************************/
/* */
/* 数据转换与温度显示 */
/* */
/*******************************************************************/
void Disp_Temperature(uchar x)
{
348: 58 2f mov r21, r24
display[4]=temp_data[0]&0x0f;
34a: 90 91 d1 00 lds r25, 0x00D1
34e: 89 2f mov r24, r25
350: 8f 70 andi r24, 0x0F ; 15
display[0]=ditab[display[4]]+0x30; //查表得小数位的值
352: e8 2f mov r30, r24
354: ff 27 eor r31, r31
356: e4 54 subi r30, 0x44 ; 68
358: ff 4f sbci r31, 0xFF ; 255
35a: 80 81 ld r24, Z
35c: 80 5d subi r24, 0xD0 ; 208
35e: 80 93 cc 00 sts 0x00CC, r24
display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
362: 29 2f mov r18, r25
364: 33 27 eor r19, r19
366: 64 e0 ldi r22, 0x04 ; 4
368: 36 95 lsr r19
36a: 27 95 ror r18
36c: 6a 95 dec r22
36e: e1 f7 brne .-8 ; 0x368
370: 80 91 d2 00 lds r24, 0x00D2
374: 99 27 eor r25, r25
376: 8f 70 andi r24, 0x0F ; 15
378: 90 70 andi r25, 0x00 ; 0
37a: 44 e0 ldi r20, 0x04 ; 4
37c: 88 0f add r24, r24
37e: 99 1f adc r25, r25
380: 4a 95 dec r20
382: e1 f7 brne .-8 ; 0x37c
384: 28 2b or r18, r24
386: 20 93 d0 00 sts 0x00D0, r18
display[3]=display[4]/100+0x30;
38a: 82 2f mov r24, r18
38c: 64 e6 ldi r22, 0x64 ; 100
38e: 66 d0 rcall .+204 ; 0x45c
390: 38 2f mov r19, r24
392: 30 5d subi r19, 0xD0 ; 208
394: 30 93 cf 00 sts 0x00CF, r19
display[1]=display[4]%100;
398: 82 2f mov r24, r18
39a: 60 d0 rcall .+192 ; 0x45c
39c: 29 2f mov r18, r25
display[2]=display[1]/10+0x30;
39e: 89 2f mov r24, r25
3a0: 6a e0 ldi r22, 0x0A ; 10
3a2: 5c d0 rcall .+184 ; 0x45c
3a4: 48 2f mov r20, r24
3a6: 40 5d subi r20, 0xD0 ; 208
3a8: 40 93 ce 00 sts 0x00CE, r20
display[1]=display[1]%10+0x30;
3ac: 82 2f mov r24, r18
3ae: 56 d0 rcall .+172 ; 0x45c
3b0: 89 2f mov r24, r25
3b2: 80 5d subi r24, 0xD0 ; 208
3b4: 80 93 cd 00 sts 0x00CD, r24
if(display[3]==0x30) //高位为0,不显示
3b8: 30 33 cpi r19, 0x30 ; 48
3ba: 39 f4 brne .+14 ; 0x3ca
{
display[3]=0x20;
3bc: 80 e2 ldi r24, 0x20 ; 32
3be: 80 93 cf 00 sts 0x00CF, r24
if(display[2]==0x30) //次高位为0,不显示
3c2: 40 33 cpi r20, 0x30 ; 48
3c4: 11 f4 brne .+4 ; 0x3ca
display[2]=0x20;
3c6: 80 93 ce 00 sts 0x00CE, r24
}
if(x==1)
3ca: 51 30 cpi r21, 0x01 ; 1
3cc: 89 f4 brne .+34 ; 0x3f0
{
lcd_pos(0x48); //在LCD第二行显示
3ce: 88 e4 ldi r24, 0x48 ; 72
3d0: 3e df rcall .-388 ; 0x24e
lcd_wdat(display[3]); //百位数显示
3d2: 80 91 cf 00 lds r24, 0x00CF
3d6: 2e df rcall .-420 ; 0x234
lcd_pos(0x49);
3d8: 89 e4 ldi r24, 0x49 ; 73
3da: 39 df rcall .-398 ; 0x24e
lcd_wdat(display[2]); //十位数显示
3dc: 80 91 ce 00 lds r24, 0x00CE
3e0: 29 df rcall .-430 ; 0x234
lcd_pos(0x4a);
3e2: 8a e4 ldi r24, 0x4A ; 74
3e4: 34 df rcall .-408 ; 0x24e
lcd_wdat(display[1]); //个位数显示
3e6: 80 91 cd 00 lds r24, 0x00CD
3ea: 24 df rcall .-440 ; 0x234
lcd_pos(0x4c);
3ec: 8c e4 ldi r24, 0x4C ; 76
3ee: 10 c0 rjmp .+32 ; 0x410
lcd_wdat(display[0]); //小数位数显示
}
else
{
lcd_pos(0x08); //在LCD第一行显示
3f0: 88 e0 ldi r24, 0x08 ; 8
3f2: 2d df rcall .-422 ; 0x24e
lcd_wdat(display[3]); //百位数显示
3f4: 80 91 cf 00 lds r24, 0x00CF
3f8: 1d df rcall .-454 ; 0x234
lcd_pos(0x09);
3fa: 89 e0 ldi r24, 0x09 ; 9
3fc: 28 df rcall .-432 ; 0x24e
lcd_wdat(display[2]); //十位数显示
3fe: 80 91 ce 00 lds r24, 0x00CE
402: 18 df rcall .-464 ; 0x234
lcd_pos(0x0a);
404: 8a e0 ldi r24, 0x0A ; 10
406: 23 df rcall .-442 ; 0x24e
lcd_wdat(display[1]); //个位数显示
408: 80 91 cd 00 lds r24, 0x00CD
40c: 13 df rcall .-474 ; 0x234
lcd_pos(0x0c);
40e: 8c e0 ldi r24, 0x0C ; 12
410: 1e df rcall .-452 ; 0x24e
lcd_wdat(display[0]); //小数位数显示
412: 80 91 cc 00 lds r24, 0x00CC
416: 0e df rcall .-484 ; 0x234
418: 08 95 ret
41a: 08 95 ret
0000041c <main>:
}
}
/********************************************************/
/* */
/* 主函数 */
/* */
/********************************************************/
int main(void)
{
41c: cf e5 ldi r28, 0x5F ; 95
41e: d2 e0 ldi r29, 0x02 ; 2
420: de bf out 0x3e, r29 ; 62
422: cd bf out 0x3d, r28 ; 61
init_io();
424: 3d de rcall .-902 ; 0xa0
while(1)
{
Ok_Menu ();
426: 2b df rcall .-426 ; 0x27e
do
{
Read_Temperature(0); //第一个DS18B20
428: 80 e0 ldi r24, 0x00 ; 0
42a: 8c de rcall .-744 ; 0x144
Disp_Temperature(0);
42c: 80 e0 ldi r24, 0x00 ; 0
42e: 8c df rcall .-232 ; 0x348
delay_nms(50);
430: 82 e3 ldi r24, 0x32 ; 50
432: 90 e0 ldi r25, 0x00 ; 0
434: 11 de rcall .-990 ; 0x58
Read_Temperature(1); //第二个DS18B20
436: 81 e0 ldi r24, 0x01 ; 1
438: 85 de rcall .-758 ; 0x144
Disp_Temperature(1);
43a: 81 e0 ldi r24, 0x01 ; 1
43c: 85 df rcall .-246 ; 0x348
delay_nms(50);
43e: 82 e3 ldi r24, 0x32 ; 50
440: 90 e0 ldi r25, 0x00 ; 0
442: 0a de rcall .-1004 ; 0x58
}
444: 80 91 d4 00 lds r24, 0x00D4
448: 88 23 and r24, r24
44a: 71 f3 breq .-36 ; 0x428
while(!presence) ;
Error_Menu ();
44c: 50 df rcall .-352 ; 0x2ee
do
{
Init_DS18B20();
44e: 32 de rcall .-924 ; 0xb4
beep();
450: 13 de rcall .-986 ; 0x78
}
452: 80 91 d4 00 lds r24, 0x00D4
456: 88 23 and r24, r24
458: d1 f7 brne .-12 ; 0x44e
45a: e5 cf rjmp .-54 ; 0x426
0000045c <__udivmodqi4>:
45c: 99 1b sub r25, r25
45e: 79 e0 ldi r23, 0x09 ; 9
460: 04 c0 rjmp .+8 ; 0x46a
00000462 <__udivmodqi4_loop>:
462: 99 1f adc r25, r25
464: 96 17 cp r25, r22
466: 08 f0 brcs .+2 ; 0x46a
468: 96 1b sub r25, r22
0000046a <__udivmodqi4_ep>:
46a: 88 1f adc r24, r24
46c: 7a 95 dec r23
46e: c9 f7 brne .-14 ; 0x462
470: 80 95 com r24
472: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -