📄 lc.lis
字号:
012E .dbline 30
012E 8AB3 in R24,0x1a
0130 806F ori R24,240
0132 8ABB out 0x1a,R24
0134 .dbline 31
0134 84B3 in R24,0x14
0136 8360 ori R24,3
0138 84BB out 0x14,R24
013A .dbline 32
013A 2224 clr R2
013C 21BA out 0x11,R2
013E .dbline 33
013E 8FEF ldi R24,255
0140 82BB out 0x12,R24
0142 .dbline 34
0142 C7DF xcall _LCD_init
0144 02C0 xjmp L15
0146 L14:
0146 .dbline 37
0146 04E6 ldi R16,100
0148 39D3 xcall _delay_nms
014A L15:
014A .dbline 36
014A 842F mov R24,R20
014C 8150 subi R24,1
014E 482F mov R20,R24
0150 8823 tst R24
0152 C9F7 brne L14
0154 .dbline 39
0154 F894 cli
0156 .dbline 40
0156 86D0 xcall _timer1_init
0158 .dbline 41
0158 8DD0 xcall _timer2_init
015A .dbline 42
015A 2224 clr R2
015C 25BE out 0x35,R2
015E .dbline 43
015E 2BBE out 0x3b,R2
0160 .dbline 44
0160 80E4 ldi R24,64
0162 89BF out 0x39,R24
0164 .dbline 45
0164 7894 sei
0166 .dbline 47
0166 2227 clr R18
0168 3327 clr R19
016A 01E0 ldi R16,1
016C 10E0 ldi R17,0
016E 4DDF xcall _LCD_write_char
0170 .dbline 48
0170 02E0 ldi R16,2
0172 24D3 xcall _delay_nms
0174 L17:
0174 .dbline 49
0174 L18:
0174 .dbline 49
0174 FFCF xjmp L17
0176 X1:
0176 .dbline -2
0176 L13:
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r k 20 c
0178 .dbend
.area vector(rom, abs)
.org 16
0010 0C94BC00 jmp _timer2_ovf_isr
.area text(rom, con, rel)
0178 .dbfile E:\资料文件\MCU\myLC\LC.c
0178 .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
0178 _timer2_ovf_isr::
0178 0E940000 xcall push_lset
017C 2297 sbiw R28,2
017E .dbline -1
017E .dbline 54
017E .dbline 55
017E 2224 clr R2
0180 25BC out 0x25,R2
0182 .dbline 56
0182 2EBC out 0x2e,R2
0184 .dbline 57
0184 2CB4 in R2,0x2c
0186 3DB4 in R3,0x2d
0188 30920700 sts _last_TCNT1+1,R3
018C 20920600 sts _last_TCNT1,R2
0190 .dbline 59
0190 80B3 in R24,0x10
0192 8E6F ori R24,254
0194 8E3F cpi R24,254
0196 99F5 brne L21
0198 .dbline 60
0198 .dbline 61
0198 2227 clr R18
019A 3327 clr R19
019C 01E0 ldi R16,1
019E 10E0 ldi R17,0
01A0 34DF xcall _LCD_write_char
01A2 .dbline 62
01A2 02E0 ldi R16,2
01A4 0BD3 xcall _delay_nms
01A6 .dbline 63
01A6 2227 clr R18
01A8 0027 clr R16
01AA 80DF xcall _LCD_set_xy
01AC .dbline 65
01AC 23E4 ldi R18,67
01AE 30E0 ldi R19,0
01B0 0027 clr R16
01B2 1127 clr R17
01B4 2ADF xcall _LCD_write_char
01B6 .dbline 66
01B6 2EE6 ldi R18,110
01B8 30E0 ldi R19,0
01BA 0027 clr R16
01BC 1127 clr R17
01BE 25DF xcall _LCD_write_char
01C0 .dbline 67
01C0 2DE3 ldi R18,61
01C2 30E0 ldi R19,0
01C4 0027 clr R16
01C6 1127 clr R17
01C8 20DF xcall _LCD_write_char
01CA .dbline 68
01CA 5CD0 xcall _calc_Cn
01CC .dbline 70
01CC 80E0 ldi R24,<L23
01CE 90E0 ldi R25,>L23
01D0 9983 std y+1,R25
01D2 8883 std y+0,R24
01D4 21E0 ldi R18,1
01D6 0027 clr R16
01D8 90DF xcall _LCD_write_string
01DA .dbline 71
01DA 8AE0 ldi R24,10
01DC 90E0 ldi R25,0
01DE 9983 std y+1,R25
01E0 8883 std y+0,R24
01E2 20910600 lds R18,_last_TCNT1
01E6 30910700 lds R19,_last_TCNT1+1
01EA 00E0 ldi R16,<_buf
01EC 10E0 ldi R17,>_buf
01EE 0E940000 xcall _itoa
01F2 1983 std y+1,R17
01F4 0883 std y+0,R16
01F6 21E0 ldi R18,1
01F8 01E0 ldi R16,1
01FA 7FDF xcall _LCD_write_string
01FC .dbline 73
01FC 2DC0 xjmp L22
01FE L21:
01FE .dbline 75
01FE .dbline 76
01FE 2227 clr R18
0200 3327 clr R19
0202 01E0 ldi R16,1
0204 10E0 ldi R17,0
0206 01DF xcall _LCD_write_char
0208 .dbline 77
0208 02E0 ldi R16,2
020A D8D2 xcall _delay_nms
020C .dbline 79
020C 2227 clr R18
020E 0027 clr R16
0210 4DDF xcall _LCD_set_xy
0212 .dbline 80
0212 ; LCD_write_char(0,'C');
0212 23E4 ldi R18,67
0214 30E0 ldi R19,0
0216 0027 clr R16
0218 1127 clr R17
021A F7DE xcall _LCD_write_char
021C .dbline 81
021C ; LCD_write_char(0,'x');
021C 28E7 ldi R18,120
021E 30E0 ldi R19,0
0220 0027 clr R16
0222 1127 clr R17
0224 F2DE xcall _LCD_write_char
0226 .dbline 82
0226 ; LCD_write_char(0,'=');
0226 2DE3 ldi R18,61
0228 30E0 ldi R19,0
022A 0027 clr R16
022C 1127 clr R17
022E EDDE xcall _LCD_write_char
0230 .dbline 83
0230 ; calc_Cx();
0230 F0D0 xcall _calc_Cx
0232 .dbline 85
0232 ;
0232 ; LCD_set_xy(0,1);
0232 21E0 ldi R18,1
0234 0027 clr R16
0236 3ADF xcall _LCD_set_xy
0238 .dbline 86
0238 ; LCD_write_char(0,'L');
0238 2CE4 ldi R18,76
023A 30E0 ldi R19,0
023C 0027 clr R16
023E 1127 clr R17
0240 E4DE xcall _LCD_write_char
0242 .dbline 87
0242 ; LCD_write_char(0,'x');
0242 28E7 ldi R18,120
0244 30E0 ldi R19,0
0246 0027 clr R16
0248 1127 clr R17
024A DFDE xcall _LCD_write_char
024C .dbline 88
024C ; LCD_write_char(0,'=');
024C 2DE3 ldi R18,61
024E 30E0 ldi R19,0
0250 0027 clr R16
0252 1127 clr R17
0254 DADE xcall _LCD_write_char
0256 .dbline 89
0256 ; calc_Lx();
0256 CDD1 xcall _calc_Lx
0258 .dbline 90
0258 ; }
0258 L22:
0258 .dbline 92
0258 ;
0258 ; timer1_init();
0258 05D0 xcall _timer1_init
025A .dbline 93
025A ; timer2_init();
025A 0CD0 xcall _timer2_init
025C .dbline -2
025C L20:
025C 2296 adiw R28,2
025E 0E940000 xcall pop_lset
0262 .dbline 0 ; func end
0262 1895 reti
0264 .dbend
0264 .dbfunc e timer1_init _timer1_init fV
.even
0264 _timer1_init::
0264 .dbline -1
0264 .dbline 97
0264 ; }
0264 ;
0264 ; void timer1_init(void)
0264 ; {
0264 .dbline 98
0264 ; TCCR1B = 0x00; //stop
0264 2224 clr R2
0266 2EBC out 0x2e,R2
0268 .dbline 99
0268 ; TCNT1H = 0x00;
0268 2DBC out 0x2d,R2
026A .dbline 100
026A ; TCNT1L = 0x00;
026A 2CBC out 0x2c,R2
026C .dbline 101
026C ; TCCR1A = 0x00;
026C 2FBC out 0x2f,R2
026E .dbline 110
026E ; /*----取消-----
026E ; OCR1AH = 0x00;
026E ; OCR1AL = 0x39;
026E ; OCR1BH = 0x00;
026E ; OCR1BL = 0x39;
026E ; ICR1H = 0x00;
026E ; ICR1L = 0x39;
026E ; -------------*/
026E ; TCCR1B = 0x06; //start,外部下降沿触发
026E 86E0 ldi R24,6
0270 8EBD out 0x2e,R24
0272 .dbline -2
0272 L24:
0272 .dbline 0 ; func end
0272 0895 ret
0274 .dbend
0274 .dbfunc e timer2_init _timer2_init fV
.even
0274 _timer2_init::
0274 .dbline -1
0274 .dbline 114
0274 ; }
0274 ;
0274 ; void timer2_init(void)
0274 ; {
0274 .dbline 115
0274 ; TCCR2 = 0x00; //stop
0274 2224 clr R2
0276 25BC out 0x25,R2
0278 .dbline 116
0278 ; ASSR = 0x00; //同步计算模式
0278 22BC out 0x22,R2
027A .dbline 117
027A ; TCNT2 = 0x0A; //置初值,定时0.25s
027A 8AE0 ldi R24,10
027C 84BD out 0x24,R24
027E .dbline 121
027E ; /*----取消-----
027E ; OCR2=0x9C;
027E ; -------------*/
027E ; TCCR2 = 0x07; //start,系统时钟1024分频
027E 87E0 ldi R24,7
0280 85BD out 0x25,R24
0282 .dbline -2
0282 L25:
0282 .dbline 0 ; func end
0282 0895 ret
0284 .dbend
0284 .dbfunc e calc_Cn _calc_Cn fV
0284 ; f -> y+2
.even
0284 _calc_Cn::
0284 0E940000 xcall push_gset3
0288 2A97 sbiw R28,10
028A .dbline -1
028A .dbline 125
028A ; }
028A ;
028A ; void calc_Cn(void)
028A ; {
028A .dbline 126
028A ; float f=1/(last_TCNT1*4)*1000000;
028A 20910600 lds R18,_last_TCNT1
028E 30910700 lds R19,_last_TCNT1+1
0292 04E0 ldi R16,4
0294 10E0 ldi R17,0
0296 0E940000 xcall empy16s
029A 9801 movw R18,R16
029C 01E0 ldi R16,1
029E 10E0 ldi R17,0
02A0 0E940000 xcall div16u
02A4 1801 movw R2,R16
02A6 4424 clr R4
02A8 5524 clr R5
02AA 40E4 ldi R20,64
02AC 52E4 ldi R21,66
02AE 6FE0 ldi R22,15
02B0 70E0 ldi R23,0
02B2 5A92 st -y,R5
02B4 4A92 st -y,R4
02B6 3A92 st -y,R3
02B8 2A92 st -y,R2
02BA 8A01 movw R16,R20
02BC 9B01 movw R18,R22
02BE 0E940000 xcall empy32s
02C2 0E940000 xcall long2fp
02C6 FE01 movw R30,R28
02C8 0283 std z+2,R16
02CA 1383 std z+3,R17
02CC 2483 std z+4,R18
02CE 3583 std z+5,R19
02D0 .dbline 127
02D0 ; Cn=(1/(39.4384*f*f*L1)-C1)/1000000;
02D0 00E0 ldi R16,<L29
02D2 10E0 ldi R17,>L29
02D4 0E940000 xcall lpm32
02D8 3A93 st -y,R19
02DA 2A93 st -y,R18
02DC 1A93 st -y,R17
02DE 0A93 st -y,R16
02E0 00E0 ldi R16,<L30
02E2 10E0 ldi R17,>L30
02E4 0E940000 xcall lpm32
02E8 3A93 st -y,R19
02EA 2A93 st -y,R18
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -