📄 main.lss
字号:
void Ok_Menu (void)
{
246: cf 93 push r28
uchar m;
lcd_init(); //初始化LCD
248: ac df rcall .-168 ; 0x1a2
lcd_pos(0); //设置显示位置为第一行的第1个字符
24a: 80 e0 ldi r24, 0x00 ; 0
24c: e4 df rcall .-56 ; 0x216
m = 0;
24e: c0 e0 ldi r28, 0x00 ; 0
while(cdis1[m] != '\0')
{ //显示字符
lcd_wdat(cdis1[m]);
m++;
250: 80 91 93 00 lds r24, 0x0093
254: 88 23 and r24, r24
256: 69 f0 breq .+26 ; 0x272
258: ec 2f mov r30, r28
25a: ff 27 eor r31, r31
25c: ed 56 subi r30, 0x6D ; 109
25e: ff 4f sbci r31, 0xFF ; 255
260: 80 81 ld r24, Z
262: cc df rcall .-104 ; 0x1fc
264: cf 5f subi r28, 0xFF ; 255
266: ec 2f mov r30, r28
268: ff 27 eor r31, r31
26a: ed 56 subi r30, 0x6D ; 109
26c: ff 4f sbci r31, 0xFF ; 255
26e: 80 81 ld r24, Z
270: f1 cf rjmp .-30 ; 0x254
}
lcd_pos(0x40); //设置显示位置为第二行第1个字符
272: 80 e4 ldi r24, 0x40 ; 64
274: d0 df rcall .-96 ; 0x216
m = 0;
276: c0 e0 ldi r28, 0x00 ; 0
while(cdis2[m] != '\0')
{
lcd_wdat(cdis2[m]); //显示字符
m++;
278: 80 91 82 00 lds r24, 0x0082
27c: 88 23 and r24, r24
27e: 69 f0 breq .+26 ; 0x29a
280: ec 2f mov r30, r28
282: ff 27 eor r31, r31
284: ee 57 subi r30, 0x7E ; 126
286: ff 4f sbci r31, 0xFF ; 255
288: 80 81 ld r24, Z
28a: b8 df rcall .-144 ; 0x1fc
28c: cf 5f subi r28, 0xFF ; 255
28e: ec 2f mov r30, r28
290: ff 27 eor r31, r31
292: ee 57 subi r30, 0x7E ; 126
294: ff 4f sbci r31, 0xFF ; 255
296: 80 81 ld r24, Z
298: f1 cf rjmp .-30 ; 0x27c
}
writetab(); //自定义字符写入CGRAM
29a: c1 df rcall .-126 ; 0x21e
delay_nms(5);
29c: 85 e0 ldi r24, 0x05 ; 5
29e: 90 e0 ldi r25, 0x00 ; 0
2a0: db de rcall .-586 ; 0x58
lcd_pos(0x4d);
2a2: 8d e4 ldi r24, 0x4D ; 77
2a4: b8 df rcall .-144 ; 0x216
lcd_wdat(0x00); //显示自定义字符
2a6: 80 e0 ldi r24, 0x00 ; 0
2a8: a9 df rcall .-174 ; 0x1fc
2aa: cf 91 pop r28
2ac: 08 95 ret
000002ae <Error_Menu>:
}
/*******************************************************************/
/* */
/* DS18B20 ERROR 显示菜单 */
/* */
/*******************************************************************/
void Error_Menu (void)
{
2ae: cf 93 push r28
uchar m;
lcd_init(); //初始化LCD
2b0: 78 df rcall .-272 ; 0x1a2
lcd_pos(0); //设置显示位置为第一行的第1个字符
2b2: 80 e0 ldi r24, 0x00 ; 0
2b4: b0 df rcall .-160 ; 0x216
m = 0;
2b6: c0 e0 ldi r28, 0x00 ; 0
while(cdis3[m] != '\0')
{ //显示字符
lcd_wdat(cdis3[m]);
m++;
2b8: 80 91 71 00 lds r24, 0x0071
2bc: 88 23 and r24, r24
2be: 69 f0 breq .+26 ; 0x2da
2c0: ec 2f mov r30, r28
2c2: ff 27 eor r31, r31
2c4: ef 58 subi r30, 0x8F ; 143
2c6: ff 4f sbci r31, 0xFF ; 255
2c8: 80 81 ld r24, Z
2ca: 98 df rcall .-208 ; 0x1fc
2cc: cf 5f subi r28, 0xFF ; 255
2ce: ec 2f mov r30, r28
2d0: ff 27 eor r31, r31
2d2: ef 58 subi r30, 0x8F ; 143
2d4: ff 4f sbci r31, 0xFF ; 255
2d6: 80 81 ld r24, Z
2d8: f1 cf rjmp .-30 ; 0x2bc
}
lcd_pos(0x40); //设置显示位置为第二行第1个字符
2da: 80 e4 ldi r24, 0x40 ; 64
2dc: 9c df rcall .-200 ; 0x216
m = 0;
2de: c0 e0 ldi r28, 0x00 ; 0
while(cdis4[m] != '\0')
{
lcd_wdat(cdis4[m]); //显示字符
m++;
2e0: 80 91 60 00 lds r24, 0x0060
2e4: 88 23 and r24, r24
2e6: 71 f0 breq .+28 ; 0x304
2e8: ec 2f mov r30, r28
2ea: ff 27 eor r31, r31
2ec: e0 5a subi r30, 0xA0 ; 160
2ee: ff 4f sbci r31, 0xFF ; 255
2f0: 80 81 ld r24, Z
2f2: 84 df rcall .-248 ; 0x1fc
2f4: cf 5f subi r28, 0xFF ; 255
2f6: ec 2f mov r30, r28
2f8: ff 27 eor r31, r31
2fa: e0 5a subi r30, 0xA0 ; 160
2fc: ff 4f sbci r31, 0xFF ; 255
2fe: 80 81 ld r24, Z
300: 88 23 and r24, r24
302: 91 f7 brne .-28 ; 0x2e8
304: cf 91 pop r28
306: 08 95 ret
00000308 <Disp_Temperature>:
}
}
/*******************************************************************/
/* */
/* 数据转换与温度显示 */
/* */
/*******************************************************************/
void Disp_Temperature(void)
{
display[4]=temp_data[0]&0x0f;
308: 90 91 c1 00 lds r25, 0x00C1
30c: 89 2f mov r24, r25
30e: 8f 70 andi r24, 0x0F ; 15
display[0]=ditab[display[4]]+0x30; //查表得小数位的值
310: e8 2f mov r30, r24
312: ff 27 eor r31, r31
314: e4 55 subi r30, 0x54 ; 84
316: ff 4f sbci r31, 0xFF ; 255
318: 80 81 ld r24, Z
31a: 80 5d subi r24, 0xD0 ; 208
31c: 80 93 bc 00 sts 0x00BC, r24
display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
320: 29 2f mov r18, r25
322: 33 27 eor r19, r19
324: 44 e0 ldi r20, 0x04 ; 4
326: 36 95 lsr r19
328: 27 95 ror r18
32a: 4a 95 dec r20
32c: e1 f7 brne .-8 ; 0x326
32e: 80 91 c2 00 lds r24, 0x00C2
332: 99 27 eor r25, r25
334: 8f 70 andi r24, 0x0F ; 15
336: 90 70 andi r25, 0x00 ; 0
338: 34 e0 ldi r19, 0x04 ; 4
33a: 88 0f add r24, r24
33c: 99 1f adc r25, r25
33e: 3a 95 dec r19
340: e1 f7 brne .-8 ; 0x33a
342: 28 2b or r18, r24
344: 20 93 c0 00 sts 0x00C0, r18
display[3]=display[4]/100+0x30;
348: 82 2f mov r24, r18
34a: 64 e6 ldi r22, 0x64 ; 100
34c: 46 d0 rcall .+140 ; 0x3da
34e: 38 2f mov r19, r24
350: 30 5d subi r19, 0xD0 ; 208
352: 30 93 bf 00 sts 0x00BF, r19
display[1]=display[4]%100;
356: 82 2f mov r24, r18
358: 40 d0 rcall .+128 ; 0x3da
35a: 29 2f mov r18, r25
display[2]=display[1]/10+0x30;
35c: 89 2f mov r24, r25
35e: 6a e0 ldi r22, 0x0A ; 10
360: 3c d0 rcall .+120 ; 0x3da
362: 48 2f mov r20, r24
364: 40 5d subi r20, 0xD0 ; 208
366: 40 93 be 00 sts 0x00BE, r20
display[1]=display[1]%10+0x30;
36a: 82 2f mov r24, r18
36c: 36 d0 rcall .+108 ; 0x3da
36e: 89 2f mov r24, r25
370: 80 5d subi r24, 0xD0 ; 208
372: 80 93 bd 00 sts 0x00BD, r24
if(display[3]==0x30) //高位为0,不显示
376: 30 33 cpi r19, 0x30 ; 48
378: 39 f4 brne .+14 ; 0x388
{
display[3]=0x20;
37a: 80 e2 ldi r24, 0x20 ; 32
37c: 80 93 bf 00 sts 0x00BF, r24
if(display[2]==0x30) //次高位为0,不显示
380: 40 33 cpi r20, 0x30 ; 48
382: 11 f4 brne .+4 ; 0x388
display[2]=0x20;
384: 80 93 be 00 sts 0x00BE, r24
}
lcd_pos(0x48);
388: 88 e4 ldi r24, 0x48 ; 72
38a: 45 df rcall .-374 ; 0x216
lcd_wdat(display[3]); //百位数显示
38c: 80 91 bf 00 lds r24, 0x00BF
390: 35 df rcall .-406 ; 0x1fc
lcd_pos(0x49);
392: 89 e4 ldi r24, 0x49 ; 73
394: 40 df rcall .-384 ; 0x216
lcd_wdat(display[2]); //十位数显示
396: 80 91 be 00 lds r24, 0x00BE
39a: 30 df rcall .-416 ; 0x1fc
lcd_pos(0x4a);
39c: 8a e4 ldi r24, 0x4A ; 74
39e: 3b df rcall .-394 ; 0x216
lcd_wdat(display[1]); //个位数显示
3a0: 80 91 bd 00 lds r24, 0x00BD
3a4: 2b df rcall .-426 ; 0x1fc
lcd_pos(0x4c);
3a6: 8c e4 ldi r24, 0x4C ; 76
3a8: 36 df rcall .-404 ; 0x216
lcd_wdat(display[0]); //小数位数显示
3aa: 80 91 bc 00 lds r24, 0x00BC
3ae: 26 df rcall .-436 ; 0x1fc
3b0: 08 95 ret
000003b2 <main>:
}
/********************************************************/
/* */
/* 主函数 */
/* */
/********************************************************/
int main(void)
{
3b2: cf e5 ldi r28, 0x5F ; 95
3b4: d2 e0 ldi r29, 0x02 ; 2
3b6: de bf out 0x3e, r29 ; 62
3b8: cd bf out 0x3d, r28 ; 61
init_io();
3ba: 72 de rcall .-796 ; 0xa0
while(1)
{
Ok_Menu ();
3bc: 44 df rcall .-376 ; 0x246
do
{
Read_Temperature();
3be: c2 de rcall .-636 ; 0x144
Disp_Temperature();
3c0: a3 df rcall .-186 ; 0x308
}
3c2: 80 91 c3 00 lds r24, 0x00C3
3c6: 88 23 and r24, r24
3c8: d1 f3 breq .-12 ; 0x3be
while(!presence) ;
Error_Menu ();
3ca: 71 df rcall .-286 ; 0x2ae
do
{
Init_DS18B20();
3cc: 73 de rcall .-794 ; 0xb4
beep();
3ce: 54 de rcall .-856 ; 0x78
}
3d0: 80 91 c3 00 lds r24, 0x00C3
3d4: 88 23 and r24, r24
3d6: d1 f7 brne .-12 ; 0x3cc
3d8: f1 cf rjmp .-30 ; 0x3bc
000003da <__udivmodqi4>:
3da: 99 1b sub r25, r25
3dc: 79 e0 ldi r23, 0x09 ; 9
3de: 04 c0 rjmp .+8 ; 0x3e8
000003e0 <__udivmodqi4_loop>:
3e0: 99 1f adc r25, r25
3e2: 96 17 cp r25, r22
3e4: 08 f0 brcs .+2 ; 0x3e8
3e6: 96 1b sub r25, r22
000003e8 <__udivmodqi4_ep>:
3e8: 88 1f adc r24, r24
3ea: 7a 95 dec r23
3ec: c9 f7 brne .-14 ; 0x3e0
3ee: 80 95 com r24
3f0: 08 95 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -