📄 main.lss
字号:
// 不是持续按键,是单次按键
// 抖动检测
tmp8 = cnt_t2;
while (((cnt_t2 - tmp8) < 3) && (read_key() == 1)); // 150mS去抖动等待
if (read_key() == 1) { //有效单次按键
proflag |= _BV(PRO_ONE_KEY); // 设置单次按键标志
// 切换显示类型
if (++key_type == 3) {
key_type = 0;
}
proflag |= _BV(PRO_DISPLAY); // 启动显示切换进程
}
else {
proflag &= ~_BV(PRO_ONE_KEY); // 清除单次按键标志
proflag &= ~_BV(PRO_KEEP_KEY); // 清除持续按键标志
disbuf.cnt_down = 30; // 复位持续按键倒计数
}
return;
}
// ===========================================================================
void proc_display(void) {
u32_t tmp1, tmp2;
// 是否起用本进程?
if ((proflag & _BV(PRO_DISPLAY)) == 0) {
return;
}
// 显示‘功’W
tmp1 = disbuf.w + 1800; // 四舍五入;保证不至于永远丢“功”显示不出来的0.01~0.09
tmp1 /= 3600; // 由于显示电流小数点1位,电压小数点1位,功小数点1位,所以要再除10
tmp2 = SUM_W;
tmp2 += tmp1;
if (tmp2 > 99999999) { // “功”累计超过8位BCD码,就循环....
tmp2 -= 100000000;
}
htobcd8(&bcd_buf[5], tmp2); // 刷新显示缓冲区
bcd_buf[10] |= 0x80; // 小数点位置
// 倒计时显示
if ((proflag & _BV(PRO_KEEP_KEY)) != 0) { // 倒计时清除"FFF30".."FFF29"...
htobcd5(&bcd_buf[0], disbuf.cnt_down);
bcd_buf[0] = 0x0f; // "F"
bcd_buf[1] = 0x0f; // "F"
bcd_buf[2] = 0x0f; // "F"
goto fin_display;
}
// V/I/P显示
switch (key_type)
{
case KEY_TYPE_U:
htobcd5(&bcd_buf[0], disbuf.u); // 显示数
bcd_buf[3] |= 0x80; // 小数点位置
LED14_ON;
LED15_OFF;
LED16_OFF;
break;
case KEY_TYPE_I:
htobcd5(&bcd_buf[0], disbuf.i); // 显示数
bcd_buf[2] |= 0x80; // 小数点位置
LED14_OFF;
LED15_ON;
LED16_OFF;
break;
case KEY_TYPE_P:
htobcd5(&bcd_buf[0], disbuf.p); // 显示数
bcd_buf[2] |= 0x80; // 小数点位置
LED14_OFF;
LED15_OFF;
LED16_ON;
break;
}
fin_display:
proflag &= ~_BV(PRO_DISPLAY);
return;
}
// ===========================================================================
void proc_test_sample(void) {
7da: 80 91 07 01 lds r24, 0x0107
7de: 81 ff sbrs r24, 1
7e0: 08 95 ret
if((flag0 & _BV(FLAG0_T1)) != 0) {
htobcd5(&bcd_buf[0], (u32_t)sample_i);
7e2: 40 91 02 01 lds r20, 0x0102
7e6: 50 91 03 01 lds r21, 0x0103
7ea: 66 27 eor r22, r22
7ec: 77 27 eor r23, r23
7ee: 8f e0 ldi r24, 0x0F ; 15
7f0: 91 e0 ldi r25, 0x01 ; 1
7f2: 6b de rcall .-810 ; 0x4ca <htobcd5>
htobcd8(&bcd_buf[5], (u32_t)sample_v);
7f4: 40 91 0c 01 lds r20, 0x010C
7f8: 50 91 0d 01 lds r21, 0x010D
7fc: 66 27 eor r22, r22
7fe: 77 27 eor r23, r23
800: 84 e1 ldi r24, 0x14 ; 20
802: 91 e0 ldi r25, 0x01 ; 1
804: da dd rcall .-1100 ; 0x3ba <htobcd8>
flag0 &= ~_BV(FLAG0_T1);
806: 80 91 07 01 lds r24, 0x0107
80a: 8d 7f andi r24, 0xFD ; 253
80c: 80 93 07 01 sts 0x0107, r24
810: 08 95 ret
00000812 <proc_display>:
812: ef 92 push r14
814: ff 92 push r15
816: 0f 93 push r16
818: 1f 93 push r17
81a: 80 91 01 01 lds r24, 0x0101
81e: 82 ff sbrs r24, 2
820: 9b c0 rjmp .+310 ; 0x958 <proc_display+0x146>
822: 60 91 28 01 lds r22, 0x0128
826: 70 91 29 01 lds r23, 0x0129
82a: 80 91 2a 01 lds r24, 0x012A
82e: 90 91 2b 01 lds r25, 0x012B
832: 68 5f subi r22, 0xF8 ; 248
834: 78 4f sbci r23, 0xF8 ; 248
836: 8f 4f sbci r24, 0xFF ; 255
838: 9f 4f sbci r25, 0xFF ; 255
83a: e0 90 31 01 lds r14, 0x0131
83e: f0 90 32 01 lds r15, 0x0132
842: 00 91 33 01 lds r16, 0x0133
846: 10 91 34 01 lds r17, 0x0134
84a: 20 e1 ldi r18, 0x10 ; 16
84c: 3e e0 ldi r19, 0x0E ; 14
84e: 40 e0 ldi r20, 0x00 ; 0
850: 50 e0 ldi r21, 0x00 ; 0
852: bf d3 rcall .+1918 ; 0xfd2 <__udivmodsi4>
854: 2e 0d add r18, r14
856: 3f 1d adc r19, r15
858: 40 1f adc r20, r16
85a: 51 1f adc r21, r17
85c: 20 30 cpi r18, 0x00 ; 0
85e: 81 ee ldi r24, 0xE1 ; 225
860: 38 07 cpc r19, r24
862: 85 ef ldi r24, 0xF5 ; 245
864: 48 07 cpc r20, r24
866: 85 e0 ldi r24, 0x05 ; 5
868: 58 07 cpc r21, r24
86a: 70 f5 brcc .+92 ; 0x8c8 <proc_display+0xb6>
86c: ba 01 movw r22, r20
86e: a9 01 movw r20, r18
870: 84 e1 ldi r24, 0x14 ; 20
872: 91 e0 ldi r25, 0x01 ; 1
874: a2 dd rcall .-1212 ; 0x3ba <htobcd8>
876: 80 91 19 01 lds r24, 0x0119
87a: 80 68 ori r24, 0x80 ; 128
87c: 80 93 19 01 sts 0x0119, r24
880: 80 91 01 01 lds r24, 0x0101
884: 84 fd sbrc r24, 4
886: 25 c0 rjmp .+74 ; 0x8d2 <proc_display+0xc0>
888: 90 91 00 01 lds r25, 0x0100
88c: 91 30 cpi r25, 0x01 ; 1
88e: 09 f4 brne .+2 ; 0x892 <proc_display+0x80>
890: 4d c0 rjmp .+154 ; 0x92c <proc_display+0x11a>
892: 91 30 cpi r25, 0x01 ; 1
894: 98 f5 brcc .+102 ; 0x8fc <proc_display+0xea>
896: 40 91 1c 01 lds r20, 0x011C
89a: 50 91 1d 01 lds r21, 0x011D
89e: 60 91 1e 01 lds r22, 0x011E
8a2: 70 91 1f 01 lds r23, 0x011F
8a6: 8f e0 ldi r24, 0x0F ; 15
8a8: 91 e0 ldi r25, 0x01 ; 1
8aa: 0f de rcall .-994 ; 0x4ca <htobcd5>
8ac: 80 91 12 01 lds r24, 0x0112
8b0: 80 68 ori r24, 0x80 ; 128
8b2: 80 93 12 01 sts 0x0112, r24
8b6: 45 98 cbi 0x08, 5 ; 8
8b8: 44 9a sbi 0x08, 4 ; 8
8ba: 5d 9a sbi 0x0b, 5 ; 11
8bc: 80 91 01 01 lds r24, 0x0101
8c0: 8b 7f andi r24, 0xFB ; 251
8c2: 80 93 01 01 sts 0x0101, r24
8c6: 48 c0 rjmp .+144 ; 0x958 <proc_display+0x146>
8c8: 20 50 subi r18, 0x00 ; 0
8ca: 31 4e sbci r19, 0xE1 ; 225
8cc: 45 4f sbci r20, 0xF5 ; 245
8ce: 55 40 sbci r21, 0x05 ; 5
8d0: cd cf rjmp .-102 ; 0x86c <proc_display+0x5a>
8d2: 40 91 2e 01 lds r20, 0x012E
8d6: 55 27 eor r21, r21
8d8: 66 27 eor r22, r22
8da: 77 27 eor r23, r23
8dc: 8f e0 ldi r24, 0x0F ; 15
8de: 91 e0 ldi r25, 0x01 ; 1
8e0: f4 dd rcall .-1048 ; 0x4ca <htobcd5>
8e2: 8f e0 ldi r24, 0x0F ; 15
8e4: 80 93 0f 01 sts 0x010F, r24
8e8: 80 93 10 01 sts 0x0110, r24
8ec: 80 93 11 01 sts 0x0111, r24
8f0: 80 91 01 01 lds r24, 0x0101
8f4: 8b 7f andi r24, 0xFB ; 251
8f6: 80 93 01 01 sts 0x0101, r24
8fa: 2e c0 rjmp .+92 ; 0x958 <proc_display+0x146>
8fc: 92 30 cpi r25, 0x02 ; 2
8fe: d1 f7 brne .-12 ; 0x8f4 <proc_display+0xe2>
900: 40 91 24 01 lds r20, 0x0124
904: 50 91 25 01 lds r21, 0x0125
908: 60 91 26 01 lds r22, 0x0126
90c: 70 91 27 01 lds r23, 0x0127
910: 8f e0 ldi r24, 0x0F ; 15
912: 91 e0 ldi r25, 0x01 ; 1
914: da dd rcall .-1100 ; 0x4ca <htobcd5>
916: 80 91 11 01 lds r24, 0x0111
91a: 80 68 ori r24, 0x80 ; 128
91c: 80 93 11 01 sts 0x0111, r24
920: 45 9a sbi 0x08, 5 ; 8
922: 44 9a sbi 0x08, 4 ; 8
924: 5d 98 cbi 0x0b, 5 ; 11
926: 80 91 01 01 lds r24, 0x0101
92a: e4 cf rjmp .-56 ; 0x8f4 <proc_display+0xe2>
92c: 40 91 20 01 lds r20, 0x0120
930: 50 91 21 01 lds r21, 0x0121
934: 60 91 22 01 lds r22, 0x0122
938: 70 91 23 01 lds r23, 0x0123
93c: 8f e0 ldi r24, 0x0F ; 15
93e: 91 e0 ldi r25, 0x01 ; 1
940: c4 dd rcall .-1144 ; 0x4ca <htobcd5>
942: 80 91 11 01 lds r24, 0x0111
946: 80 68 ori r24, 0x80 ; 128
948: 80 93 11 01 sts 0x0111, r24
94c: 45 9a sbi 0x08, 5 ; 8
94e: 44 98 cbi 0x08, 4 ; 8
950: 5d 9a sbi 0x0b, 5 ; 11
952: 80 91 01 01 lds r24, 0x0101
956: ce cf rjmp .-100 ; 0x8f4 <proc_display+0xe2>
958: 1f 91 pop r17
95a: 0f 91 pop r16
95c: ff 90 pop r15
95e: ef 90 pop r14
960: 08 95 ret
00000962 <proc_key>:
962: cf 93 push r28
964: df 93 push r29
966: d0 d1 rcall .+928 ; 0xd08 <read_key>
968: 88 23 and r24, r24
96a: a9 f0 breq .+42 ; 0x996 <proc_key+0x34>
96c: 80 91 01 01 lds r24, 0x0101
970: 83 fd sbrc r24, 3
972: 1a c0 rjmp .+52 ; 0x9a8 <proc_key+0x46>
974: 80 91 0e 01 lds r24, 0x010E
978: c8 2f mov r28, r24
97a: dd 27 eor r29, r29
97c: 80 91 0e 01 lds r24, 0x010E
980: 99 27 eor r25, r25
982: 8c 1b sub r24, r28
984: 9d 0b sbc r25, r29
986: 03 97 sbiw r24, 0x03 ; 3
988: 1c f4 brge .+6 ; 0x990 <proc_key+0x2e>
98a: be d1 rcall .+892 ; 0xd08 <read_key>
98c: 81 30 cpi r24, 0x01 ; 1
98e: b1 f3 breq .-20 ; 0x97c <proc_key+0x1a>
990: bb d1 rcall .+886 ; 0xd08 <read_key>
992: 81 30 cpi r24, 0x01 ; 1
994: 69 f0 breq .+26 ; 0x9b0 <proc_key+0x4e>
996: 80 91 01 01 lds r24, 0x0101
99a: 87 7e andi r24, 0xE7 ; 231
99c: 80 93 01 01 sts 0x0101, r24
9a0: 8e e1 ldi r24, 0x1E ; 30
9a2: 80 93 2e 01 sts 0x012E, r24
9a6: 14 c0 rjmp .+40 ; 0x9d0 <proc_key+0x6e>
9a8: 80 61 ori r24, 0x10 ; 16
9aa: 80 93 01 01 sts 0x0101, r24
9ae: 10 c0 rjmp .+32 ; 0x9d0 <proc_key+0x6e>
9b0: 90 91 01 01 lds r25, 0x0101
9b4: 80 91 00 01 lds r24, 0x0100
9b8: 8f 5f subi r24, 0xFF ; 255
9ba: 80 93 00 01 sts 0x0100, r24
9be: 83 30 cpi r24, 0x03 ; 3
9c0: 21 f0 breq .+8 ; 0x9ca <proc_key+0x68>
9c2: 9c 60 ori r25, 0x0C ; 12
9c4: 90 93 01 01 sts 0x0101, r25
9c8: 03 c0 rjmp .+6 ; 0x9d0 <proc_key+0x6e>
9ca: 10 92 00 01 sts 0x0100, r1
9ce: f9 cf rjmp .-14 ; 0x9c2 <proc_key+0x60>
9d0: df 91 pop r29
9d2: cf 91 pop r28
9d4: 08 95 ret
000009d6 <proc_save>:
9d6: 8f 92 push r8
9d8: 9f 92 push r9
9da: af 92 push r10
9dc: bf 92 push r11
9de: cf 92 push r12
9e0: df 92 push r13
9e2: ef 92 push r14
9e4: ff 92 push r15
9e6: 0f 93 push r16
9e8: 1f 93 push r17
9ea: cf 93 push r28
9ec: df 93 push r29
9ee: cd b7 in r28, 0x3d ; 61
9f0: de b7 in r29, 0x3e ; 62
9f2: 27 97 sbiw r28, 0x07 ; 7
9f4: 0f b6 in r0, 0x3f ; 63
9f6: f8 94 cli
9f8: de bf out 0x3e, r29 ; 62
9fa: 0f be out 0x3f, r0 ; 63
9fc: cd bf out 0x3d, r28 ; 61
9fe: 80 91 01 01 lds r24, 0x0101
a02: 81 ff sbrs r24, 1
a04: c9 c0 rjmp .+402 ; 0xb98 <proc_save+0x1c2>
a06: f8 94 cli
a08: 60 91 28 01 lds r22, 0x0128
a0c: 70 91 29 01 lds r23, 0x0129
a10: 80 91 2a 01 lds r24, 0x012A
a14: 90 91 2b 01 lds r25, 0x012B
a18: 68 5f subi r22, 0xF8 ; 248
a1a: 78 4f sbci r23, 0xF8 ; 248
a1c: 8f 4f sbci r24, 0xFF ; 255
a1e: 9f 4f sbci r25, 0xFF ; 255
a20: 11 e3 ldi r17, 0x31 ; 49
a22: c1 2e mov r12, r17
a24: 11 e0 ldi r17, 0x01 ; 1
a26: d1 2e mov r13, r17
a28: e0 90 31 01 lds r14, 0x0131
a2c: f0 90 32 01 lds r15, 0x0132
a30: 00 91 33 01 lds r16, 0x0133
a34: 10 91 34 01 lds r17, 0x0134
a38: 20 e1 ldi r18, 0x10 ; 16
a3a: 3e e0 ldi r19, 0x0E ; 14
a3c: 40 e0 ldi r20, 0x00 ; 0
a3e: 50 e0 ldi r21, 0x00 ; 0
a40: c8 d2 rcall .+1424 ; 0xfd2 <__udivmodsi4>
a42: 2e 0d add r18, r14
a44: 3f 1d adc r19, r15
a46: 40 1f adc r20, r16
a48: 51 1f adc r21, r17
a4a: 20 93 31 01 sts 0x0131, r18
a4e: 30 93 32 01 sts 0x0132, r19
a52: 40 93 33 01 sts 0x0133, r20
a56: 50 93 34 01 sts 0x0134, r21
a5a: 20 30 cpi r18, 0x00 ; 0
a5c: 81 ee ldi r24, 0xE1 ; 225
a5e: 38 07 cpc r19, r24
a60: 85 ef ldi r24, 0xF5 ; 245
a62: 48 07 cpc r20, r24
a64: 85 e0 ldi r24, 0x05 ; 5
a66: 58 07 cpc r21, r24
a68: 08 f0 brcs .+2 ; 0xa6c <proc_save+0x96>
a6a: 6a c0 rjmp .+212 ; 0xb40 <proc_save+0x16a>
a6c: 10 92 28 01 sts 0x0128, r1
a70: 10 92 29 01 sts 0x0129, r1
a74: 10 92 2a 01 sts 0x012A, r1
a78: 10 92 2b 01 sts 0x012B, r1
a7c: 10 92 2d 01 sts 0x012D, r1
a80: 10 92 2c 01 sts 0x012C, r1
a84: 10 92 35 01 sts 0x0135, r1
a88: 65 e0 ldi r22, 0x05 ; 5
a8a: c6 01 movw r24, r12
a8c: 79 dd rcall .-1294 ; 0x580 <checksum>
a8e: 80 93 35 01 sts 0x0135, r24
a92: 40 91 2f 01 lds r20, 0x012F
a96: 50 91 30 01 lds r21, 0x0130
a9a: 4a 01 movw r8, r20
a9c: 91 e0 ldi r25, 0x01 ; 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -