📄 lc.lst
字号:
0163 E08A LDI R24,0xA
0164 E090 LDI R25,0
0165 8399 STD Y+1,R25
0166 8388 STD Y+0,R24
0167 9120009A LDS R18,last_TCNT1
0169 9130009B LDS R19,last_TCNT1+1
016B E600 LDI R16,0x60
016C E010 LDI R17,0
016D 940E07B0 CALL _itoa
016F 8319 STD Y+1,R17
0170 8308 STD Y+0,R16
0171 E021 LDI R18,1
0172 E001 LDI R16,1
0173 DF7F RCALL _LCD_write_string
(0072)
(0073) }
0174 C02D RJMP 0x01A2
(0074) else //测量模式,接入被测元件Cx或Lx
(0075) {
(0076) LCD_write_char(0x01,0);
0175 2722 CLR R18
0176 2733 CLR R19
0177 E001 LDI R16,1
0178 E010 LDI R17,0
0179 DF01 RCALL _LCD_write_char
(0077) delay_nms(2);
017A E002 LDI R16,2
017B D2D8 RCALL _delay_nms
(0078)
(0079) LCD_set_xy(0,0);
017C 2722 CLR R18
017D 2700 CLR R16
017E DF4D RCALL _LCD_set_xy
(0080) LCD_write_char(0,'C');
017F E423 LDI R18,0x43
0180 E030 LDI R19,0
0181 2700 CLR R16
0182 2711 CLR R17
0183 DEF7 RCALL _LCD_write_char
(0081) LCD_write_char(0,'x');
0184 E728 LDI R18,0x78
0185 E030 LDI R19,0
0186 2700 CLR R16
0187 2711 CLR R17
0188 DEF2 RCALL _LCD_write_char
(0082) LCD_write_char(0,'=');
0189 E32D LDI R18,0x3D
018A E030 LDI R19,0
018B 2700 CLR R16
018C 2711 CLR R17
018D DEED RCALL _LCD_write_char
(0083) calc_Cx();
018E D0F0 RCALL _calc_Cx
(0084)
(0085) LCD_set_xy(0,1);
018F E021 LDI R18,1
0190 2700 CLR R16
0191 DF3A RCALL _LCD_set_xy
(0086) LCD_write_char(0,'L');
0192 E42C LDI R18,0x4C
0193 E030 LDI R19,0
0194 2700 CLR R16
0195 2711 CLR R17
0196 DEE4 RCALL _LCD_write_char
(0087) LCD_write_char(0,'x');
0197 E728 LDI R18,0x78
0198 E030 LDI R19,0
0199 2700 CLR R16
019A 2711 CLR R17
019B DEDF RCALL _LCD_write_char
(0088) LCD_write_char(0,'=');
019C E32D LDI R18,0x3D
019D E030 LDI R19,0
019E 2700 CLR R16
019F 2711 CLR R17
01A0 DEDA RCALL _LCD_write_char
(0089) calc_Lx();
01A1 D1CD RCALL _calc_Lx
(0090) }
(0091)
(0092) timer1_init();
01A2 D005 RCALL _timer1_init
(0093) timer2_init();
01A3 D00C RCALL _timer2_init
01A4 9622 ADIW R28,2
01A5 940E056D CALL pop_lset
01A7 9518 RETI
(0094) }
(0095)
(0096) void timer1_init(void)
(0097) {
(0098) TCCR1B = 0x00; //stop
_timer1_init:
01A8 2422 CLR R2
01A9 BC2E OUT 0x2E,R2
(0099) TCNT1H = 0x00;
01AA BC2D OUT 0x2D,R2
(0100) TCNT1L = 0x00;
01AB BC2C OUT 0x2C,R2
(0101) TCCR1A = 0x00;
01AC BC2F OUT 0x2F,R2
(0102) /*----取消-----
(0103) OCR1AH = 0x00;
(0104) OCR1AL = 0x39;
(0105) OCR1BH = 0x00;
(0106) OCR1BL = 0x39;
(0107) ICR1H = 0x00;
(0108) ICR1L = 0x39;
(0109) -------------*/
(0110) TCCR1B = 0x06; //start,外部下降沿触发
01AD E086 LDI R24,6
01AE BD8E OUT 0x2E,R24
01AF 9508 RET
(0111) }
(0112)
(0113) void timer2_init(void)
(0114) {
(0115) TCCR2 = 0x00; //stop
_timer2_init:
01B0 2422 CLR R2
01B1 BC25 OUT 0x25,R2
(0116) ASSR = 0x00; //同步计算模式
01B2 BC22 OUT 0x22,R2
(0117) TCNT2 = 0x0A; //置初值,定时0.25s
01B3 E08A LDI R24,0xA
01B4 BD84 OUT 0x24,R24
(0118) /*----取消-----
(0119) OCR2=0x9C;
(0120) -------------*/
(0121) TCCR2 = 0x07; //start,系统时钟1024分频
01B5 E087 LDI R24,7
01B6 BD85 OUT 0x25,R24
01B7 9508 RET
_calc_Cn:
f --> Y+2
01B8 940E04F9 CALL push_gset3
01BA 972A SBIW R28,0xA
(0122) }
(0123)
(0124) void calc_Cn(void)
(0125) {
(0126) float f=1/(last_TCNT1*4)*1000000;
01BB 9120009A LDS R18,last_TCNT1
01BD 9130009B LDS R19,last_TCNT1+1
01BF E004 LDI R16,4
01C0 E010 LDI R17,0
01C1 940E04A9 CALL empy16s
01C3 0198 MOVW R18,R16
01C4 E001 LDI R16,1
01C5 E010 LDI R17,0
01C6 940E048F CALL div16u
01C8 0118 MOVW R2,R16
01C9 2444 CLR R4
01CA 2455 CLR R5
01CB E440 LDI R20,0x40
01CC E452 LDI R21,0x42
01CD E06F LDI R22,0xF
01CE E070 LDI R23,0
01CF 925A ST R5,-Y
01D0 924A ST R4,-Y
01D1 923A ST R3,-Y
01D2 922A ST R2,-Y
01D3 018A MOVW R16,R20
01D4 019B MOVW R18,R22
01D5 940E04B9 CALL empy32u
01D7 940E05D2 CALL long2fp
01D9 01FE MOVW R30,R28
01DA 8302 STD Z+2,R16
01DB 8313 STD Z+3,R17
01DC 8324 STD Z+4,R18
01DD 8335 STD Z+5,R19
(0127) Cn=(1/(39.4384*f*f*L1)-C1)/1000000;
01DE E608 LDI R16,0x68
01DF E010 LDI R17,0
01E0 940E0542 CALL lpm32
01E2 933A ST R19,-Y
01E3 932A ST R18,-Y
01E4 931A ST R17,-Y
01E5 930A ST R16,-Y
01E6 E604 LDI R16,0x64
01E7 E010 LDI R17,0
01E8 940E0542 CALL lpm32
01EA 933A ST R19,-Y
01EB 932A ST R18,-Y
01EC 931A ST R17,-Y
01ED 930A ST R16,-Y
01EE E600 LDI R16,0x60
01EF E010 LDI R17,0
01F0 940E0542 CALL lpm32
01F2 933A ST R19,-Y
01F3 932A ST R18,-Y
01F4 931A ST R17,-Y
01F5 930A ST R16,-Y
01F6 01FE MOVW R30,R28
01F7 8426 LDD R2,Z+14
01F8 8437 LDD R3,Z+15
01F9 8840 LDD R4,Z+16
01FA 8851 LDD R5,Z+17
01FB 925A ST R5,-Y
01FC 924A ST R4,-Y
01FD 923A ST R3,-Y
01FE 922A ST R2,-Y
01FF 940E0715 CALL empy32fs
0201 01FE MOVW R30,R28
0202 8426 LDD R2,Z+14
0203 8437 LDD R3,Z+15
0204 8840 LDD R4,Z+16
0205 8851 LDD R5,Z+17
0206 925A ST R5,-Y
0207 924A ST R4,-Y
0208 923A ST R3,-Y
0209 922A ST R2,-Y
020A 940E0715 CALL empy32fs
020C 940E0715 CALL empy32fs
020E 940E0687 CALL div32fs
0210 E608 LDI R16,0x68
0211 E010 LDI R17,0
0212 940E0542 CALL lpm32
0214 933A ST R19,-Y
0215 932A ST R18,-Y
0216 931A ST R17,-Y
0217 930A ST R16,-Y
0218 940E062E CALL sub32fs
021A E50C LDI R16,0x5C
021B E010 LDI R17,0
021C 940E0542 CALL lpm32
021E 933A ST R19,-Y
021F 932A ST R18,-Y
0220 931A ST R17,-Y
0221 930A ST R16,-Y
0222 940E068A CALL div32f
0224 01FE MOVW R30,R28
0225 8306 STD Z+6,R16
0226 8317 STD Z+7,R17
0227 8720 STD Z+8,R18
0228 8731 STD Z+9,R19
0229 01FE MOVW R30,R28
022A 8026 LDD R2,Z+6
022B 8037 LDD R3,Z+7
022C 8440 LDD R4,Z+8
022D 8451 LDD R5,Z+9
022E 925A ST R5,-Y
022F 924A ST R4,-Y
0230 923A ST R3,-Y
0231 922A ST R2,-Y
0232 E508 LDI R16,0x58
0233 E010 LDI R17,0
0234 940E0542 CALL lpm32
0236 933A ST R19,-Y
0237 932A ST R18,-Y
0238 931A ST R17,-Y
0239 930A ST R16,-Y
023A 940E06E4 CALL cmp32f
023C F0D4 BLT 0x0257
023D 01FE MOVW R30,R28
023E 8026 LDD R2,Z+6
023F 8037 LDD R3,Z+7
0240 8440 LDD R4,Z+8
0241 8451 LDD R5,Z+9
0242 925A ST R5,-Y
0243 924A ST R4,-Y
0244 923A ST R3,-Y
0245 922A ST R2,-Y
0246 E508 LDI R16,0x58
0247 E010 LDI R17,0
0248 940E0542 CALL lpm32
024A 933A ST R19,-Y
024B 932A ST R18,-Y
024C 931A ST R17,-Y
024D 930A ST R16,-Y
024E 940E0631 CALL sub32f
0250 940E0584 CALL fp2int
0252 01C8 MOVW R24,R16
0253 5080 SUBI R24,0
0254 4890 SBCI R25,0x80
0255 015C MOVW R10,R24
0256 C008 RJMP 0x025F
0257 01FE MOVW R30,R28
0258 8106 LDD R16,Z+6
0259 8117 LDD R17,Z+7
025A 8520 LDD R18,Z+8
025B 8531 LDD R19,Z+9
025C 940E0584 CALL fp2int
025E 0158 MOVW R10,R16
025F 92B00095 STS Cn+1,R11
0261 92A00094 STS Cn,R10
(0128)
(0129) LCD_write_string(3,0,itoa(buf,Cn,10));
0263 E08A LDI R24,0xA
0264 E090 LDI R25,0
0265 8399 STD Y+1,R25
0266 8388 STD Y+0,R24
0267 0195 MOVW R18,R10
0268 E600 LDI R16,0x60
0269 E010 LDI R17,0
026A 940E07B0 CALL _itoa
026C 8319 STD Y+1,R17
026D 8308 STD Y+0,R16
026E 2722 CLR R18
026F E003 LDI R16,3
0270 DE82 RCALL _LCD_write_string
(0130) LCD_write_char(0,'p');
0271 E720 LDI R18,0x70
0272 E030 LDI R19,0
0273 2700 CLR R16
0274 2711 CLR R17
0275 DE05 RCALL _LCD_write_char
(0131) LCD_write_char(0,'F');
0276 E426 LDI R18,0x46
0277 E030 LDI R19,0
0278 2700 CLR R16
0279 2711 CLR R17
027A DE00 RCALL _LCD_write_char
027B 962A ADIW R28,0xA
027C 940E04EC CALL pop_gset3
027E 9508 RET
_calc_Cx:
f --> Y+2
027F 940E04F9 CALL push_gset3
0281 972A SBIW R28,0xA
(0132)
(0133) }
(0134)
(0135) void calc_Cx(void)
(0136) {
(0137) float f=1/(last_TCNT1*4)*1000000;
0282 9120009A LDS R18,last_TCNT1
0284 9130009B LDS R19,last_TCNT1+1
0286 E004 LDI R16,4
0287 E010 LDI R17,0
0288 940E04A9 CALL empy16s
028A 0198 MOVW R18,R16
028B E001 LDI R16,1
028C E010 LDI R17,0
028D 940E048F CALL div16u
028F 0118 MOVW R2,R16
0290 2444 CLR R4
0291 2455 CLR R5
0292 E440 LDI R20,0x40
0293 E452 LDI R21,0x42
0294 E06F LDI R22,0xF
0295 E070 LDI R23,0
0296 925A ST R5,-Y
0297 924A ST R4,-Y
0298 923A ST R3,-Y
0299 922A ST R2,-Y
029A 018A MOVW R16,R20
029B 019B MOVW R18,R22
029C 940E04B9 CALL empy32u
029E 940E05D2 CALL long2fp
02A0 01FE MOVW R30,R28
02A1 8302 STD Z+2,R16
02A2 8313 STD Z+3,R17
02A3 8324 STD Z+4,R18
02A4 8335 STD Z+5,R19
(0138) Cx=(1/(39.4384*f*f*L1)-C1)/1000000-Cn;
02A5 E608 LDI R16,0x68
02A6 E010 LDI R17,0
02A7 940E0542 CALL lpm32
02A9 933A ST R19,-Y
02AA 932A ST R18,-Y
02AB 931A ST R17,-Y
02AC 930A ST R16,-Y
02AD E604 LDI R16,0x64
02AE E010 LDI R17,0
02AF 940E0542 CALL lpm32
02B1 933A ST R19,-Y
02B2 932A ST R18,-Y
02B3 931A ST R17,-Y
02B4 930A ST R16,-Y
02B5 E600 LDI R16,0x60
02B6 E010 LDI R17,0
02B7 940E0542 CALL lpm32
02B9 933A ST R19,-Y
02BA 932A ST R18,-Y
02BB 931A ST R17,-Y
02BC 930A ST R16,-Y
02BD 01FE MOVW R30,R28
02BE 8426 LDD R2,Z+14
02BF 8437 LDD R3,Z+15
02C0 8840 LDD R4,Z+16
02C1 8851 LDD R5,Z+17
02C2 925A ST R5,-Y
02C3 924A ST R4,-Y
02C4 923A ST R3,-Y
02C5 922A ST R2,-Y
02C6 940E0715 CALL empy32fs
02C8 01FE MOVW R30,R28
02C9 8426 LDD R2,Z+14
02CA 8437 LDD R3,Z+15
02CB 8840 LDD R4,Z+16
02CC 8851 LDD R5,Z+17
02CD 925A ST R5,-Y
02CE 924A ST R4,-Y
02CF 923A ST R3,-Y
02D0 922A ST R2,-Y
02D1 940E0715 CALL empy32fs
02D3 940E0715 CALL empy32fs
02D5 940E0687 CALL div32fs
02D7 E608 LDI R16,0x68
02D8 E010 LDI R17,0
02D9 940E0542 CALL lpm32
02DB 933A ST R19,-Y
02DC 932A ST R18,-Y
02DD 931A ST R17,-Y
02DE 930A ST R16,-Y
02DF 940E062E CALL sub32fs
02E1 E50C LDI R16,0x5C
02E2 E010 LDI R17,0
02E3 940E0542 CALL lpm32
02E5 933A ST R19,-Y
02E6 932A ST R18,-Y
02E7 931A ST R17,-Y
02E8 930A ST R16,-Y
02E9 940E0687 CALL div32fs
02EB E504 LDI R16,0x54
02EC E010 LDI R17,0
02ED 940E0542 CALL lpm32
02EF 933A ST R19,-Y
02F0 932A ST R18,-Y
02F1 931A ST R17,-Y
02F2 930A ST R16,-Y
02F3 91000094 LDS R16,Cn
02F5 91100095 LDS R17,Cn+1
02F7 9516 LSR R17
02F8 9507 ROR R16
02F9 940E05CC CALL int2fp
02FB 933A ST R19,-Y
02FC 932A ST R18,-Y
02FD 931A ST R17,-Y
02FE 930A ST R16,-Y
02FF 940E0715 CALL empy32fs
0301 91000094 LDS R16,Cn
0303 91100095 LDS R17,Cn+1
0305 7001 ANDI R16,1
0306 7010 ANDI R17,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -