?? main.lss
字號:
/* */
/*************************************************************/
void lcd_pos(uchar pos)
{
lcd_wcmd(pos|0x80,1); //數(shù)據(jù)指針=80+地址變量
20a: 61 e0 ldi r22, 0x01 ; 1
20c: 80 68 ori r24, 0x80 ; 128
20e: ef df rcall .-34 ; 0x1ee
210: 08 95 ret
00000212 <Disp_RomCode>:
212: ef 92 push r14
214: ff 92 push r15
216: 1f 93 push r17
218: cf 93 push r28
21a: c0 e4 ldi r28, 0x40 ; 64
21c: 44 ea ldi r20, 0xA4 ; 164
21e: e4 2e mov r14, r20
220: 40 e0 ldi r20, 0x00 ; 0
222: f4 2e mov r15, r20
224: 17 e0 ldi r17, 0x07 ; 7
226: f7 01 movw r30, r14
228: 81 91 ld r24, Z+
22a: 7f 01 movw r14, r30
22c: 80 93 b1 00 sts 0x00B1, r24
230: 99 27 eor r25, r25
232: 34 e0 ldi r19, 0x04 ; 4
234: 96 95 lsr r25
236: 87 95 ror r24
238: 3a 95 dec r19
23a: e1 f7 brne .-8 ; 0x234
23c: 80 93 ac 00 sts 0x00AC, r24
240: 8a 30 cpi r24, 0x0A ; 10
242: 10 f0 brcs .+4 ; 0x248
244: 89 5c subi r24, 0xC9 ; 201
246: 01 c0 rjmp .+2 ; 0x24a
248: 80 5d subi r24, 0xD0 ; 208
24a: 80 93 ac 00 sts 0x00AC, r24
24e: 8c 2f mov r24, r28
250: dc df rcall .-72 ; 0x20a
252: 80 91 ac 00 lds r24, 0x00AC
256: be df rcall .-132 ; 0x1d4
258: cf 5f subi r28, 0xFF ; 255
25a: 80 91 b1 00 lds r24, 0x00B1
25e: 8f 70 andi r24, 0x0F ; 15
260: 80 93 ad 00 sts 0x00AD, r24
264: 8a 30 cpi r24, 0x0A ; 10
266: 10 f0 brcs .+4 ; 0x26c
268: 89 5c subi r24, 0xC9 ; 201
26a: 01 c0 rjmp .+2 ; 0x26e
26c: 80 5d subi r24, 0xD0 ; 208
26e: 80 93 ad 00 sts 0x00AD, r24
272: 8c 2f mov r24, r28
274: ca df rcall .-108 ; 0x20a
276: 80 91 ad 00 lds r24, 0x00AD
27a: ac df rcall .-168 ; 0x1d4
27c: cf 5f subi r28, 0xFF ; 255
27e: 11 50 subi r17, 0x01 ; 1
280: 17 ff sbrs r17, 7
282: d1 cf rjmp .-94 ; 0x226
284: cf 91 pop r28
286: 1f 91 pop r17
288: ff 90 pop r15
28a: ef 90 pop r14
28c: 08 95 ret
0000028e <lcd_init>:
28e: 8f ef ldi r24, 0xFF ; 255
290: 8a bb out 0x1a, r24 ; 26
292: 8b bb out 0x1b, r24 ; 27
294: 84 bb out 0x14, r24 ; 20
296: 85 bb out 0x15, r24 ; 21
298: 8e e1 ldi r24, 0x1E ; 30
29a: 90 e0 ldi r25, 0x00 ; 0
29c: dd de rcall .-582 ; 0x58
29e: 60 e0 ldi r22, 0x00 ; 0
2a0: 88 e3 ldi r24, 0x38 ; 56
2a2: a5 df rcall .-182 ; 0x1ee
2a4: 85 e0 ldi r24, 0x05 ; 5
2a6: 90 e0 ldi r25, 0x00 ; 0
2a8: d7 de rcall .-594 ; 0x58
2aa: 60 e0 ldi r22, 0x00 ; 0
2ac: 88 e3 ldi r24, 0x38 ; 56
2ae: 9f df rcall .-194 ; 0x1ee
2b0: 85 e0 ldi r24, 0x05 ; 5
2b2: 90 e0 ldi r25, 0x00 ; 0
2b4: d1 de rcall .-606 ; 0x58
2b6: 60 e0 ldi r22, 0x00 ; 0
2b8: 88 e3 ldi r24, 0x38 ; 56
2ba: 99 df rcall .-206 ; 0x1ee
2bc: 85 e0 ldi r24, 0x05 ; 5
2be: 90 e0 ldi r25, 0x00 ; 0
2c0: cb de rcall .-618 ; 0x58
2c2: 61 e0 ldi r22, 0x01 ; 1
2c4: 8c e0 ldi r24, 0x0C ; 12
2c6: 93 df rcall .-218 ; 0x1ee
2c8: 85 e0 ldi r24, 0x05 ; 5
2ca: 90 e0 ldi r25, 0x00 ; 0
2cc: c5 de rcall .-630 ; 0x58
2ce: 61 e0 ldi r22, 0x01 ; 1
2d0: 86 e0 ldi r24, 0x06 ; 6
2d2: 8d df rcall .-230 ; 0x1ee
2d4: 85 e0 ldi r24, 0x05 ; 5
2d6: 90 e0 ldi r25, 0x00 ; 0
2d8: bf de rcall .-642 ; 0x58
2da: 61 e0 ldi r22, 0x01 ; 1
2dc: 86 2f mov r24, r22
2de: 87 df rcall .-242 ; 0x1ee
2e0: 85 e0 ldi r24, 0x05 ; 5
2e2: 90 e0 ldi r25, 0x00 ; 0
2e4: b9 de rcall .-654 ; 0x58
2e6: 08 95 ret
000002e8 <Ok_Menu>:
}
/*************************************************************/
/* */
/* DS18B20 OK 顯示菜單 */
/* */
/*************************************************************/
void Ok_Menu (void)
{
2e8: cf 93 push r28
uchar m;
lcd_init(); //初始化LCD
2ea: d1 df rcall .-94 ; 0x28e
lcd_pos(0); //設(shè)置顯示位置為第一行的第1個字符
2ec: 80 e0 ldi r24, 0x00 ; 0
2ee: 8d df rcall .-230 ; 0x20a
m = 0;
2f0: c0 e0 ldi r28, 0x00 ; 0
while(cdis1[m] != '\0')
{ //顯示字符
lcd_wdat(cdis1[m]);
m++;
2f2: 80 91 93 00 lds r24, 0x0093
2f6: 88 23 and r24, r24
2f8: 69 f0 breq .+26 ; 0x314
2fa: ec 2f mov r30, r28
2fc: ff 27 eor r31, r31
2fe: ed 56 subi r30, 0x6D ; 109
300: ff 4f sbci r31, 0xFF ; 255
302: 80 81 ld r24, Z
304: 67 df rcall .-306 ; 0x1d4
306: cf 5f subi r28, 0xFF ; 255
308: ec 2f mov r30, r28
30a: ff 27 eor r31, r31
30c: ed 56 subi r30, 0x6D ; 109
30e: ff 4f sbci r31, 0xFF ; 255
310: 80 81 ld r24, Z
312: f1 cf rjmp .-30 ; 0x2f6
}
lcd_pos(0x40); //設(shè)置顯示位置為第二行第1個字符
314: 80 e4 ldi r24, 0x40 ; 64
316: 79 df rcall .-270 ; 0x20a
m = 0;
318: c0 e0 ldi r28, 0x00 ; 0
while(cdis2[m] != '\0')
{
lcd_wdat(cdis2[m]); //顯示字符
m++;
31a: 80 91 82 00 lds r24, 0x0082
31e: 88 23 and r24, r24
320: 71 f0 breq .+28 ; 0x33e
322: ec 2f mov r30, r28
324: ff 27 eor r31, r31
326: ee 57 subi r30, 0x7E ; 126
328: ff 4f sbci r31, 0xFF ; 255
32a: 80 81 ld r24, Z
32c: 53 df rcall .-346 ; 0x1d4
32e: cf 5f subi r28, 0xFF ; 255
330: ec 2f mov r30, r28
332: ff 27 eor r31, r31
334: ee 57 subi r30, 0x7E ; 126
336: ff 4f sbci r31, 0xFF ; 255
338: 80 81 ld r24, Z
33a: 88 23 and r24, r24
33c: 91 f7 brne .-28 ; 0x322
33e: cf 91 pop r28
340: 08 95 ret
00000342 <Error_Menu>:
}
}
/*************************************************************/
/* */
/* DS18B20 ERROR 顯示菜單 */
/* */
/*************************************************************/
void Error_Menu (void)
{
342: cf 93 push r28
uchar m;
lcd_init(); //初始化LCD
344: a4 df rcall .-184 ; 0x28e
lcd_pos(0); //設(shè)置顯示位置為第一行的第1個字符
346: 80 e0 ldi r24, 0x00 ; 0
348: 60 df rcall .-320 ; 0x20a
m = 0;
34a: c0 e0 ldi r28, 0x00 ; 0
while(cdis3[m] != '\0')
{ //顯示字符
lcd_wdat(cdis3[m]);
m++;
34c: 80 91 71 00 lds r24, 0x0071
350: 88 23 and r24, r24
352: 69 f0 breq .+26 ; 0x36e
354: ec 2f mov r30, r28
356: ff 27 eor r31, r31
358: ef 58 subi r30, 0x8F ; 143
35a: ff 4f sbci r31, 0xFF ; 255
35c: 80 81 ld r24, Z
35e: 3a df rcall .-396 ; 0x1d4
360: cf 5f subi r28, 0xFF ; 255
362: ec 2f mov r30, r28
364: ff 27 eor r31, r31
366: ef 58 subi r30, 0x8F ; 143
368: ff 4f sbci r31, 0xFF ; 255
36a: 80 81 ld r24, Z
36c: f1 cf rjmp .-30 ; 0x350
}
lcd_pos(0x40); //設(shè)置顯示位置為第二行第1個字符
36e: 80 e4 ldi r24, 0x40 ; 64
370: 4c df rcall .-360 ; 0x20a
m = 0;
372: c0 e0 ldi r28, 0x00 ; 0
while(cdis4[m] != '\0')
{
lcd_wdat(cdis4[m]); //顯示字符
m++;
374: 80 91 60 00 lds r24, 0x0060
378: 88 23 and r24, r24
37a: 71 f0 breq .+28 ; 0x398
37c: ec 2f mov r30, r28
37e: ff 27 eor r31, r31
380: e0 5a subi r30, 0xA0 ; 160
382: ff 4f sbci r31, 0xFF ; 255
384: 80 81 ld r24, Z
386: 26 df rcall .-436 ; 0x1d4
388: cf 5f subi r28, 0xFF ; 255
38a: ec 2f mov r30, r28
38c: ff 27 eor r31, r31
38e: e0 5a subi r30, 0xA0 ; 160
390: ff 4f sbci r31, 0xFF ; 255
392: 80 81 ld r24, Z
394: 88 23 and r24, r24
396: 91 f7 brne .-28 ; 0x37c
398: cf 91 pop r28
39a: 08 95 ret
0000039c <main>:
}
}
/*************************************************************/
/* */
/* 主函數(shù) */
/* */
/*************************************************************/
int main(void)
{
39c: cf e5 ldi r28, 0x5F ; 95
39e: d2 e0 ldi r29, 0x02 ; 2
3a0: de bf out 0x3e, r29 ; 62
3a2: cd bf out 0x3d, r28 ; 61
init_io();
3a4: 7d de rcall .-774 ; 0xa0
while(1)
{
Ok_Menu ();
3a6: a0 df rcall .-192 ; 0x2e8
Read_RomCord(); //讀取64位序列碼
3a8: cd de rcall .-614 ; 0x144
CRC8(); //CRC效驗(yàn)
3aa: e3 de rcall .-570 ; 0x172
if(crc==0) //CRC效驗(yàn)正確
3ac: 80 91 b3 00 lds r24, 0x00B3
3b0: 88 23 and r24, r24
3b2: 11 f4 brne .+4 ; 0x3b8
{
Disp_RomCode(); //顯示64位序列碼
3b4: 2e df rcall .-420 ; 0x212
beep(); //蜂鳴器響一聲
3b6: 60 de rcall .-832 ; 0x78
}
while(!presence) //檢測DS18B20是否存在
{
Init_DS18B20();
delay_nms(500);
3b8: 80 91 b2 00 lds r24, 0x00B2
3bc: 88 23 and r24, r24
3be: 29 f4 brne .+10 ; 0x3ca
3c0: 79 de rcall .-782 ; 0xb4
3c2: 84 ef ldi r24, 0xF4 ; 244
3c4: 91 e0 ldi r25, 0x01 ; 1
3c6: 48 de rcall .-880 ; 0x58
3c8: f7 cf rjmp .-18 ; 0x3b8
}
Error_Menu (); //顯示錯誤菜單
3ca: bb df rcall .-138 ; 0x342
do
{
Init_DS18B20();
3cc: 73 de rcall .-794 ; 0xb4
beep(); //蜂鳴器報警
3ce: 54 de rcall .-856 ; 0x78
}
3d0: 80 91 b2 00 lds r24, 0x00B2
3d4: 88 23 and r24, r24
3d6: d1 f7 brne .-12 ; 0x3cc
3d8: e6 cf rjmp .-52 ; 0x3a6
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -