📄 main.lss
字号:
7a0: 41 ff sbrs r20, 1
7a2: 02 c0 rjmp .+4 ; 0x7a8 <task0+0x11a>
7a4: 80 6f ori r24, 0xF0 ; 240
7a6: 01 c0 rjmp .+2 ; 0x7aa <task0+0x11c>
7a8: 8f 70 andi r24, 0x0F ; 15
7aa: 80 93 a3 01 sts 0x01A3, r24
KEY=(TEM_Buffer&0x0001)? (KEY|0x0f):(KEY&0xf0);
7ae: 40 ff sbrs r20, 0
7b0: 02 c0 rjmp .+4 ; 0x7b6 <task0+0x128>
7b2: 8f 60 ori r24, 0x0F ; 15
7b4: 01 c0 rjmp .+2 ; 0x7b8 <task0+0x12a>
7b6: 80 7f andi r24, 0xF0 ; 240
7b8: 80 93 a3 01 sts 0x01A3, r24
}
TEM_Buffer=0;
7bc: 10 92 b5 01 sts 0x01B5, r1
7c0: 10 92 b4 01 sts 0x01B4, r1
Rec_Start=0;
7c4: 10 92 af 01 sts 0x01AF, r1
}
sei();
7c8: 78 94 sei
OSWait(K_SIG,0);
7ca: 60 e0 ldi r22, 0x00 ; 0
7cc: 81 e0 ldi r24, 0x01 ; 1
7ce: 0e 94 96 0a call 0x152c <OSWait>
7d2: 5d cf rjmp .-326 ; 0x68e <task0>
000007d4 <task1>:
}
}
void task1(void)
{uint8 i;
while(1)
{
Display[0]=(TEM_H/10)+48;
7d4: 20 91 dc 00 lds r18, 0x00DC
7d8: 30 91 dd 00 lds r19, 0x00DD
7dc: c9 01 movw r24, r18
7de: 6a e0 ldi r22, 0x0A ; 10
7e0: 70 e0 ldi r23, 0x00 ; 0
7e2: 0e 94 96 16 call 0x2d2c <__udivmodhi4>
7e6: cb 01 movw r24, r22
7e8: 80 5d subi r24, 0xD0 ; 208
7ea: 80 93 d6 00 sts 0x00D6, r24
Display[1]=(TEM_H%10)+48;
7ee: c9 01 movw r24, r18
7f0: 6a e0 ldi r22, 0x0A ; 10
7f2: 70 e0 ldi r23, 0x00 ; 0
7f4: 0e 94 96 16 call 0x2d2c <__udivmodhi4>
7f8: 80 5d subi r24, 0xD0 ; 208
7fa: 80 93 d7 00 sts 0x00D7, r24
Display[3]=(TEM_L/100)+48;
7fe: 20 91 b2 01 lds r18, 0x01B2
802: 30 91 b3 01 lds r19, 0x01B3
806: c9 01 movw r24, r18
808: 64 e6 ldi r22, 0x64 ; 100
80a: 70 e0 ldi r23, 0x00 ; 0
80c: 0e 94 96 16 call 0x2d2c <__udivmodhi4>
810: cb 01 movw r24, r22
812: 80 5d subi r24, 0xD0 ; 208
814: 80 93 d9 00 sts 0x00D9, r24
Display[4]=((TEM_L%100)/10)+48;
818: c9 01 movw r24, r18
81a: 64 e6 ldi r22, 0x64 ; 100
81c: 70 e0 ldi r23, 0x00 ; 0
81e: 0e 94 96 16 call 0x2d2c <__udivmodhi4>
822: 9c 01 movw r18, r24
824: 6a e0 ldi r22, 0x0A ; 10
826: 70 e0 ldi r23, 0x00 ; 0
828: 0e 94 96 16 call 0x2d2c <__udivmodhi4>
82c: cb 01 movw r24, r22
82e: 80 5d subi r24, 0xD0 ; 208
830: 80 93 da 00 sts 0x00DA, r24
Display[5]=((TEM_L%100)%10)+48;
834: c9 01 movw r24, r18
836: 6a e0 ldi r22, 0x0A ; 10
838: 70 e0 ldi r23, 0x00 ; 0
83a: 0e 94 96 16 call 0x2d2c <__udivmodhi4>
83e: 80 5d subi r24, 0xD0 ; 208
840: 80 93 db 00 sts 0x00DB, r24
Temperature_buffer[0]=TEM_H;
844: 80 91 dc 00 lds r24, 0x00DC
848: 80 93 63 00 sts 0x0063, r24
Write a byte \c value to EEPROM address \c addr. */
void
eeprom_write_byte (uint8_t *addr,uint8_t value)
{
84c: a0 91 60 00 lds r26, 0x0060
850: b0 91 61 00 lds r27, 0x0061
asm volatile (
854: 08 2e mov r0, r24
856: 0e 94 b7 16 call 0x2d6e <__eeprom_write_byte_1C1D1E>
eeprom_write_byte (Eep_Addr, TEM_H);
Eep_Addr++;
85a: 80 91 60 00 lds r24, 0x0060
85e: 90 91 61 00 lds r25, 0x0061
862: 01 96 adiw r24, 0x01 ; 1
864: 90 93 61 00 sts 0x0061, r25
868: 80 93 60 00 sts 0x0060, r24
if(Eep_Addr>512)
86c: 81 50 subi r24, 0x01 ; 1
86e: 92 40 sbci r25, 0x02 ; 2
870: 30 f0 brcs .+12 ; 0x87e <task1+0xaa>
{Eep_Addr=4;}
872: 84 e0 ldi r24, 0x04 ; 4
874: 90 e0 ldi r25, 0x00 ; 0
876: 90 93 61 00 sts 0x0061, r25
87a: 80 93 60 00 sts 0x0060, r24
for(i=59;i>0;i--)
87e: 9b e3 ldi r25, 0x3B ; 59
880: ae e9 ldi r26, 0x9E ; 158
882: b0 e0 ldi r27, 0x00 ; 0
{
Temperature_buffer[60]=Temperature_buffer[i-1];
884: fd 01 movw r30, r26
886: 31 97 sbiw r30, 0x01 ; 1
888: 80 81 ld r24, Z
88a: 80 93 9f 00 sts 0x009F, r24
Temperature_buffer[i]=Temperature_buffer[60];
88e: 8c 93 st X, r24
890: 91 50 subi r25, 0x01 ; 1
892: df 01 movw r26, r30
894: b9 f7 brne .-18 ; 0x884 <task1+0xb0>
}
OSWait(K_TMO | K_SIG,50);
896: 62 e3 ldi r22, 0x32 ; 50
898: 83 e0 ldi r24, 0x03 ; 3
89a: 0e 94 96 0a call 0x152c <OSWait>
89e: 9a cf rjmp .-204 ; 0x7d4 <task1>
000008a0 <task2>:
}
}
void task2(void)
{
while(1)
{
GUI_MMenuNSelect(current_MMENU, old_MMENU_NO);
8a0: 60 91 a8 01 lds r22, 0x01A8
8a4: 80 91 de 00 lds r24, 0x00DE
8a8: 90 91 df 00 lds r25, 0x00DF
8ac: 0e 94 8f 13 call 0x271e <GUI_MMenuNSelect>
GUI_MMenuSelect(current_MMENU, current_MMENU_NO);
8b0: 60 91 a9 01 lds r22, 0x01A9
8b4: 80 91 de 00 lds r24, 0x00DE
8b8: 90 91 df 00 lds r25, 0x00DF
8bc: 0e 94 58 13 call 0x26b0 <GUI_MMenuSelect>
if(buttom&0x80) /* 如果OK按钮有按下*/
8c0: 80 91 a5 01 lds r24, 0x01A5
8c4: 87 ff sbrs r24, 7
8c6: 53 c0 rjmp .+166 ; 0x96e <task2+0xce>
{
buttom &=0x7f;
8c8: 8f 77 andi r24, 0x7F ; 127
8ca: 80 93 a5 01 sts 0x01A5, r24
if(buttom==1)
8ce: 81 30 cpi r24, 0x01 ; 1
8d0: c9 f5 brne .+114 ; 0x944 <task2+0xa4>
{
if(current_SMENU->mmenu_no != current_MMENU_NO)
8d2: e0 91 a1 00 lds r30, 0x00A1
8d6: f0 91 a2 00 lds r31, 0x00A2
8da: 92 81 ldd r25, Z+2 ; 0x02
8dc: 80 91 a9 01 lds r24, 0x01A9
8e0: 98 17 cp r25, r24
8e2: 91 f0 breq .+36 ; 0x908 <task2+0x68>
{
cli();
8e4: f8 94 cli
current_SMENU=&Smenu[old_MMENU_NO];
8e6: 90 91 a8 01 lds r25, 0x01A8
8ea: 81 e1 ldi r24, 0x11 ; 17
8ec: 98 9f mul r25, r24
8ee: f0 01 movw r30, r0
8f0: 11 24 eor r1, r1
8f2: ed 55 subi r30, 0x5D ; 93
8f4: ff 4f sbci r31, 0xFF ; 255
8f6: f0 93 a2 00 sts 0x00A2, r31
8fa: e0 93 a1 00 sts 0x00A1, r30
current_SMENU->mmenu_no=old_MMENU_NO;
8fe: 92 83 std Z+2, r25 ; 0x02
GUI_SMenuHide( current_SMENU ); /* 消除下拉菜单*/
900: cf 01 movw r24, r30
902: 0e 94 28 15 call 0x2a50 <GUI_SMenuHide>
sei();
906: 78 94 sei
}
current_SMENU=&Smenu[current_MMENU_NO];
908: 90 91 a9 01 lds r25, 0x01A9
90c: 81 e1 ldi r24, 0x11 ; 17
90e: 98 9f mul r25, r24
910: f0 01 movw r30, r0
912: 11 24 eor r1, r1
914: ed 55 subi r30, 0x5D ; 93
916: ff 4f sbci r31, 0xFF ; 255
918: f0 93 a2 00 sts 0x00A2, r31
91c: e0 93 a1 00 sts 0x00A1, r30
current_SMENU->state=current_SMENU_NO;
920: 80 91 a7 01 lds r24, 0x01A7
924: 82 87 std Z+10, r24 ; 0x0a
cli();
926: f8 94 cli
current_SMENU->mmenu_no=current_MMENU_NO; /* 画下拉菜单 */
928: e0 91 a1 00 lds r30, 0x00A1
92c: f0 91 a2 00 lds r31, 0x00A2
930: 80 91 a9 01 lds r24, 0x01A9
934: 82 83 std Z+2, r24 ; 0x02
GUI_SMenuDraw(current_SMENU);
936: 80 91 a1 00 lds r24, 0x00A1
93a: 90 91 a2 00 lds r25, 0x00A2
93e: 0e 94 ba 13 call 0x2774 <GUI_SMenuDraw>
sei();
942: 78 94 sei
}
if(buttom==0)
944: 80 91 a5 01 lds r24, 0x01A5
948: 88 23 and r24, r24
94a: 89 f4 brne .+34 ; 0x96e <task2+0xce>
{
if(current_SMENU->mmenu_no==current_MMENU_NO)
94c: e0 91 a1 00 lds r30, 0x00A1
950: f0 91 a2 00 lds r31, 0x00A2
954: 92 81 ldd r25, Z+2 ; 0x02
956: 80 91 a9 01 lds r24, 0x01A9
95a: 98 17 cp r25, r24
95c: 41 f4 brne .+16 ; 0x96e <task2+0xce>
{
cli();
95e: f8 94 cli
GUI_SMenuHide( current_SMENU ); /* 消除下拉菜单*/
960: 80 91 a1 00 lds r24, 0x00A1
964: 90 91 a2 00 lds r25, 0x00A2
968: 0e 94 28 15 call 0x2a50 <GUI_SMenuHide>
sei();
96c: 78 94 sei
}
}
}
if(buttom==1)
96e: 80 91 a5 01 lds r24, 0x01A5
972: 81 30 cpi r24, 0x01 ; 1
974: 71 f4 brne .+28 ; 0x992 <task2+0xf2>
{
if(current_SMENU->state!=current_SMENU_NO)
976: e0 91 a1 00 lds r30, 0x00A1
97a: f0 91 a2 00 lds r31, 0x00A2
97e: 82 85 ldd r24, Z+10 ; 0x0a
980: 40 91 a7 01 lds r20, 0x01A7
984: 84 17 cp r24, r20
986: 29 f0 breq .+10 ; 0x992 <task2+0xf2>
{
GUI_SMenuSelect(current_SMENU, old_SMENU_NO,current_SMENU_NO);
988: 60 91 a6 01 lds r22, 0x01A6
98c: cf 01 movw r24, r30
98e: 0e 94 97 14 call 0x292e <GUI_SMenuSelect>
}
}
if(OK&0x01)
992: 80 91 a4 01 lds r24, 0x01A4
996: 80 ff sbrs r24, 0
998: 18 c0 rjmp .+48 ; 0x9ca <task2+0x12a>
{
(*Smenu[Function_MMENU_NO].Function[Function_SMENU_NO])(); /* 调用子功能函数 */
99a: 80 91 b0 01 lds r24, 0x01B0
99e: 99 27 eor r25, r25
9a0: 20 91 b1 01 lds r18, 0x01B1
9a4: 33 27 eor r19, r19
9a6: f9 01 movw r30, r18
9a8: 74 e0 ldi r23, 0x04 ; 4
9aa: ee 0f add r30, r30
9ac: ff 1f adc r31, r31
9ae: 7a 95 dec r23
9b0: e1 f7 brne .-8 ; 0x9aa <task2+0x10a>
9b2: e2 0f add r30, r18
9b4: f3 1f adc r31, r19
9b6: 88 0f add r24, r24
9b8: 99 1f adc r25, r25
9ba: e8 0f add r30, r24
9bc: f9 1f adc r31, r25
9be: ed 55 subi r30, 0x5D ; 93
9c0: ff 4f sbci r31, 0xFF ; 255
9c2: 03 84 ldd r0, Z+11 ; 0x0b
9c4: f4 85 ldd r31, Z+12 ; 0x0c
9c6: e0 2d mov r30, r0
9c8: 09 95 icall
}
OSWait(K_TMO | K_SIG,50);
9ca: 62 e3 ldi r22, 0x32 ; 50
9cc: 83 e0 ldi r24, 0x03 ; 3
9ce: 0e 94 96 0a call 0x152c <OSWait>
9d2: 66 cf rjmp .-308 ; 0x8a0 <task2>
000009d4 <task3>:
}
}
void task3(void)
{
9d4: 1f 93 push r17
9d6: cf 93 push r28
uint8 key_temp=0,old_key=0;
9d8: 10 e0 ldi r17, 0x00 ; 0
while(1)
{
OSWait(K_TMO, 3); /* 等待50MS*/
9da: 63 e0 ldi r22, 0x03 ; 3
9dc: 82 e0 ldi r24, 0x02 ; 2
9de: 0e 94 96 0a call 0x152c <OSWait>
key_temp=(PIND&0xf0);
9e2: c0 b3 in r28, 0x10 ; 16
9e4: c0 7f andi r28, 0xF0 ; 240
OSWait(K_TMO, 1); /* 等待50MS*/
9e6: 61 e0 ldi r22, 0x01 ; 1
9e8: 82 e0 ldi r24, 0x02 ; 2
9ea: 0e 94 96 0a call 0x152c <OSWait>
if((PIND&0xf0) ==key_temp)
9ee: 80 b3 in r24, 0x10 ; 16
9f0: 28 2f mov r18, r24
9f2: 33 27 eor r19, r19
9f4: 20 7f andi r18, 0xF0 ; 240
9f6: 30 70 andi r19, 0x00 ; 0
9f8: 8c 2f mov r24, r28
9fa: 99 27 eor r25, r25
9fc: 28 17 cp r18, r24
9fe: 39 07 cpc r19, r25
a00: 61 f7 brne .-40 ; 0x9da <task3+0x6>
{
if(key_temp != old_key) /* 识别长按
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -