📄 key.lis
字号:
0122 .dbline 97
0122 ; if ( NUM_CHANGE )
0122 20900200 lds R2,L15
0126 30900300 lds R3,L15+1
012A 2220 tst R2
012C 11F4 brne X1
012E 3320 tst R3
0130 91F0 breq L31
0132 X1:
0132 .dbline 98
0132 ; {
0132 .dbline 99
0132 ; NUM_CHANGE = FALSE;
0132 2224 clr R2
0134 3324 clr R3
0136 30920300 sts L15+1,R3
013A 20920200 sts L15,R2
013E .dbline 100
013E ; eeprom_busy_wait();
013E 00D0 rcall _eeprom_busy_wait
0140 .dbline 101
0140 ; cli();
0140 00D0 rcall _cli
0142 .dbline 102
0142 ; eeprom_write_block( (char*)MAX_A,(char*)0x20,6 );
0142 86E0 ldi R24,6
0144 90E0 ldi R25,0
0146 9983 std y+1,R25
0148 8883 std y+0,R24
014A 20E2 ldi R18,32
014C 30E0 ldi R19,0
014E 00E0 ldi R16,<_MAX_A
0150 10E0 ldi R17,>_MAX_A
0152 00D0 rcall _eeprom_write_block
0154 .dbline 103
0154 ; sei();
0154 00D0 rcall _sei
0156 .dbline 104
0156 ; }
0156 L31:
0156 .dbline 105
0156 ; key_press = 0x00;
0156 6627 clr R22
0158 .dbline 106
0158 ; KEY_INPUT = 0x00;
0158 2224 clr R2
015A 20920500 sts _KEY_INPUT,R2
015E .dbline 107
015E ; KEY_DOWN_TIME = 0;
015E 3324 clr R3
0160 30920100 sts L14+1,R3
0164 20920000 sts L14,R2
0168 .dbline 108
0168 ; TIMER_NUM = 0;
0168 30920A00 sts _TIMER_NUM+1,R3
016C 20920900 sts _TIMER_NUM,R2
0170 .dbline 109
0170 ; delayMS(100); //延时10MS
0170 04E6 ldi R16,100
0172 00D0 rcall _delayMS
0174 .dbline 110
0174 ; }
0174 L29:
0174 .dbline 111
0174 ; }
0174 L23:
0174 .dbline 112
0174 ; if ( key_press )
0174 6623 tst R22
0176 09F4 brne X7
0178 AFC0 rjmp L22
017A X7:
017A .dbline 113
017A ; {
017A .dbline 114
017A ; KEY_INPUT = KEY_TEMP = key_end;
017A 40930600 sts _KEY_TEMP,R20
017E 40930500 sts _KEY_INPUT,R20
0182 .dbline 115
0182 ; if ( !SET_STATU )
0182 20900700 lds R2,_SET_STATU
0186 2220 tst R2
0188 09F0 breq X8
018A A6C0 rjmp L22
018C X8:
018C .dbline 116
018C ; {
018C .dbline 118
018C ; //处理电源键
018C ; if ( KEY_INPUT == POWER_DOWN )
018C 4130 cpi R20,1
018E 21F5 brne L37
0190 .dbline 119
0190 ; {
0190 .dbline 120
0190 ; POWER_STATE = !POWER_STATE; //改变电源按键的状态
0190 20900300 lds R2,_POWER_STATE
0194 2220 tst R2
0196 19F4 brne L39
0198 41E0 ldi R20,1
019A 50E0 ldi R21,0
019C 02C0 rjmp L40
019E L39:
019E 4427 clr R20
01A0 5527 clr R21
01A2 L40:
01A2 40930300 sts _POWER_STATE,R20
01A6 .dbline 121
01A6 ; KEY_INPUT = 0;
01A6 2224 clr R2
01A8 20920500 sts _KEY_INPUT,R2
01AC .dbline 122
01AC ; if ( POWER_STATE )
01AC 4423 tst R20
01AE 51F0 breq L41
01B0 .dbline 123
01B0 ; {
01B0 .dbline 124
01B0 ; PORTB |= ( 1 << POWER ); //开启电源
01B0 C49A sbi 0x18,4
01B2 .dbline 125
01B2 ; eeprom_busy_wait();
01B2 00D0 rcall _eeprom_busy_wait
01B4 .dbline 126
01B4 ; cli();
01B4 00D0 rcall _cli
01B6 .dbline 127
01B6 ; eeprom_write_byte ( (char*)0x07, 0x01 );
01B6 21E0 ldi R18,1
01B8 30E0 ldi R19,0
01BA 07E0 ldi R16,7
01BC 10E0 ldi R17,0
01BE 00D0 rcall _eeprom_write_byte
01C0 .dbline 128
01C0 ; sei();
01C0 00D0 rcall _sei
01C2 .dbline 129
01C2 ; }
01C2 31C0 rjmp L38
01C4 L41:
01C4 .dbline 131
01C4 ; else
01C4 ; {
01C4 .dbline 132
01C4 ; PORTB &= ~( 1 << POWER ); //关闭电源
01C4 C498 cbi 0x18,4
01C6 .dbline 133
01C6 ; eeprom_busy_wait();
01C6 00D0 rcall _eeprom_busy_wait
01C8 .dbline 134
01C8 ; cli();
01C8 00D0 rcall _cli
01CA .dbline 135
01CA ; eeprom_write_byte ( (char*)0x07, 0x00 );
01CA 2227 clr R18
01CC 3327 clr R19
01CE 07E0 ldi R16,7
01D0 10E0 ldi R17,0
01D2 00D0 rcall _eeprom_write_byte
01D4 .dbline 136
01D4 ; sei();
01D4 00D0 rcall _sei
01D6 .dbline 137
01D6 ; }
01D6 .dbline 138
01D6 ; }
01D6 27C0 rjmp L38
01D8 L37:
01D8 .dbline 140
01D8 ; //处理电流/电压切换,默认状态是显示电压
01D8 ; else if ( KEY_INPUT == A_V_DOWN )
01D8 80910500 lds R24,_KEY_INPUT
01DC 8230 cpi R24,2
01DE 19F5 brne L43
01E0 .dbline 141
01E0 ; {
01E0 .dbline 142
01E0 ; KEY_A_V_STATE = !KEY_A_V_STATE; //切换AV状态
01E0 20900400 lds R2,_KEY_A_V_STATE
01E4 2220 tst R2
01E6 19F4 brne L45
01E8 41E0 ldi R20,1
01EA 50E0 ldi R21,0
01EC 02C0 rjmp L46
01EE L45:
01EE 4427 clr R20
01F0 5527 clr R21
01F2 L46:
01F2 40930400 sts _KEY_A_V_STATE,R20
01F6 .dbline 143
01F6 ; KEY_INPUT = 0;
01F6 2224 clr R2
01F8 20920500 sts _KEY_INPUT,R2
01FC .dbline 144
01FC ; if ( KEY_A_V_STATE )
01FC 4423 tst R20
01FE 51F0 breq L47
0200 .dbline 145
0200 ; {
0200 .dbline 146
0200 ; PORTB |= ( 1 << OUT_A ); //显示电流
0200 C79A sbi 0x18,7
0202 .dbline 147
0202 ; eeprom_busy_wait();
0202 00D0 rcall _eeprom_busy_wait
0204 .dbline 148
0204 ; cli();
0204 00D0 rcall _cli
0206 .dbline 149
0206 ; eeprom_write_byte ( (char*)0x01, 0x01 );
0206 21E0 ldi R18,1
0208 30E0 ldi R19,0
020A 01E0 ldi R16,1
020C 10E0 ldi R17,0
020E 00D0 rcall _eeprom_write_byte
0210 .dbline 150
0210 ; sei();
0210 00D0 rcall _sei
0212 .dbline 151
0212 ; }
0212 09C0 rjmp L48
0214 L47:
0214 .dbline 153
0214 ; else
0214 ; {
0214 .dbline 154
0214 ; PORTB &= ~( 1 << OUT_A ); //显示电压
0214 C798 cbi 0x18,7
0216 .dbline 155
0216 ; eeprom_busy_wait();
0216 00D0 rcall _eeprom_busy_wait
0218 .dbline 156
0218 ; cli();
0218 00D0 rcall _cli
021A .dbline 157
021A ; eeprom_write_byte ( (char*)0x01, 0x00 );
021A 2227 clr R18
021C 3327 clr R19
021E 01E0 ldi R16,1
0220 10E0 ldi R17,0
0222 00D0 rcall _eeprom_write_byte
0224 .dbline 158
0224 ; sei();
0224 00D0 rcall _sei
0226 .dbline 159
0226 ; }
0226 L48:
0226 .dbline 160
0226 ; }
0226 L43:
0226 L38:
0226 .dbline 162
0226 ; //处理稳流/稳压切换,默认状态是稳流
0226 ; if ( KEY_INPUT == CC_CV_DOWN )
0226 80910500 lds R24,_KEY_INPUT
022A 8430 cpi R24,4
022C 19F5 brne L49
022E .dbline 163
022E ; {
022E .dbline 164
022E ; KEY_CC_CV_STATE = !KEY_CC_CV_STATE;
022E 20900200 lds R2,_KEY_CC_CV_STATE
0232 2220 tst R2
0234 19F4 brne L51
0236 41E0 ldi R20,1
0238 50E0 ldi R21,0
023A 02C0 rjmp L52
023C L51:
023C 4427 clr R20
023E 5527 clr R21
0240 L52:
0240 40930200 sts _KEY_CC_CV_STATE,R20
0244 .dbline 166
0244 ; //改变稳流/稳压按键的状态
0244 ; KEY_INPUT = 0;
0244 2224 clr R2
0246 20920500 sts _KEY_INPUT,R2
024A .dbline 167
024A ; if ( KEY_CC_CV_STATE )
024A 4423 tst R20
024C 51F0 breq L53
024E .dbline 168
024E ; {
024E .dbline 169
024E ; PORTB |= ( 1 << OUT_CV ); //稳压
024E C69A sbi 0x18,6
0250 .dbline 170
0250 ; eeprom_busy_wait();
0250 00D0 rcall _eeprom_busy_wait
0252 .dbline 171
0252 ; cli();
0252 00D0 rcall _cli
0254 .dbline 172
0254 ; eeprom_write_byte ( (char*)0x05, 0x01 );
0254 21E0 ldi R18,1
0256 30E0 ldi R19,0
0258 05E0 ldi R16,5
025A 10E0 ldi R17,0
025C 00D0 rcall _eeprom_write_byte
025E .dbline 173
025E ; sei();
025E 00D0 rcall _sei
0260 .dbline 174
0260 ; }
0260 09C0 rjmp L54
0262 L53:
0262 .dbline 176
0262 ; else
0262 ; {
0262 .dbline 177
0262 ; PORTB &= ~( 1 << OUT_CV ); //稳流
0262 C698 cbi 0x18,6
0264 .dbline 178
0264 ; eeprom_busy_wait();
0264 00D0 rcall _eeprom_busy_wait
0266 .dbline 179
0266 ; cli();
0266 00D0 rcall _cli
0268 .dbline 180
0268 ; eeprom_write_byte ( (char*)0x05, 0x00 );
0268 2227 clr R18
026A 3327 clr R19
026C 05E0 ldi R16,5
026E 10E0 ldi R17,0
0270 00D0 rcall _eeprom_write_byte
0272 .dbline 181
0272 ; sei();
0272 00D0 rcall _sei
0274 .dbline 182
0274 ; }
0274 L54:
0274 .dbline 183
0274 ; }
0274 L49:
0274 .dbline 185
0274 ; //处理手动/自动切换,默认状态是手动
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -