📄 1602_main.lis
字号:
040A ; SEI();
040A 7894 sei
040C 17C1 xjmp L52
040E L51:
040E .dbline 90
040E ; while(1)
040E ; {
040E .dbline 91
040E ; if(t==125) //100KHz~5MHz
040E 80910300 lds R24,_t
0412 8D37 cpi R24,125
0414 09F0 breq X16
0416 12C1 xjmp L54
0418 X16:
0418 X11:
0418 .dbline 92
0418 ; {
0418 .dbline 93
0418 ; f_low=TCNT1L;
0418 2CB4 in R2,0x2c
041A 20920100 sts _f_low,R2
041E .dbline 94
041E ; f_hign=TCNT1H;
041E 2DB4 in R2,0x2d
0420 20920200 sts _f_hign,R2
0424 .dbline 95
0424 ; f=(ulint)f_hign*256+f_low; //转换为unsigned long类型,否则所测频率最多32670HZ
0424 3324 clr R3
0426 4424 clr R4
0428 5524 clr R5
042A 40E0 ldi R20,0
042C 51E0 ldi R21,1
042E 60E0 ldi R22,0
0430 70E0 ldi R23,0
0432 5A92 st -y,R5
0434 4A92 st -y,R4
0436 3A92 st -y,R3
0438 2A92 st -y,R2
043A 8A01 movw R16,R20
043C 9B01 movw R18,R22
043E 0E940000 xcall empy32u
0442 1801 movw R2,R16
0444 2901 movw R4,R18
0446 60900100 lds R6,_f_low
044A 7724 clr R7
044C 8824 clr R8
044E 9924 clr R9
0450 260C add R2,R6
0452 371C adc R3,R7
0454 481C adc R4,R8
0456 591C adc R5,R9
0458 30920E00 sts _f+1,R3
045C 20920D00 sts _f,R2
0460 50921000 sts _f+2+1,R5
0464 40920F00 sts _f+2,R4
0468 .dbline 96
0468 ; if(hignf)
0468 20900000 lds R2,_hignf
046C 2220 tst R2
046E 31F1 breq L56
0470 X12:
0470 .dbline 97
0470 ; {
0470 .dbline 98
0470 ; f+=hignf*65536;
0470 3324 clr R3
0472 4424 clr R4
0474 5524 clr R5
0476 40E0 ldi R20,0
0478 50E0 ldi R21,0
047A 61E0 ldi R22,1
047C 70E0 ldi R23,0
047E 5A92 st -y,R5
0480 4A92 st -y,R4
0482 3A92 st -y,R3
0484 2A92 st -y,R2
0486 8A01 movw R16,R20
0488 9B01 movw R18,R22
048A 0E940000 xcall empy32s
048E 40900F00 lds R4,_f+2
0492 50901000 lds R5,_f+2+1
0496 20900D00 lds R2,_f
049A 30900E00 lds R3,_f+1
049E 200E add R2,R16
04A0 311E adc R3,R17
04A2 421E adc R4,R18
04A4 531E adc R5,R19
04A6 30920E00 sts _f+1,R3
04AA 20920D00 sts _f,R2
04AE 50921000 sts _f+2+1,R5
04B2 40920F00 sts _f+2,R4
04B6 .dbline 99
04B6 ; hignf=0;
04B6 2224 clr R2
04B8 20920000 sts _hignf,R2
04BC .dbline 100
04BC ; }
04BC L56:
04BC .dbline 101
04BC ; FF=(float)f;
04BC 20910F00 lds R18,_f+2
04C0 30911000 lds R19,_f+2+1
04C4 00910D00 lds R16,_f
04C8 10910E00 lds R17,_f+1
04CC 0E940000 xcall ulong2fp
04D0 10931200 sts _FF+1,R17
04D4 00931100 sts _FF,R16
04D8 30931400 sts _FF+2+1,R19
04DC 20931300 sts _FF+2,R18
04E0 .dbline 102
04E0 ; for(i=13;i>6;i--)
04E0 8DE0 ldi R24,13
04E2 80930400 sts _i,R24
04E6 39C0 xjmp L61
04E8 L58:
04E8 .dbline 103
04E8 ; {
04E8 .dbline 104
04E8 ; WriteNum(2,i,f%10);
04E8 4AE0 ldi R20,10
04EA 50E0 ldi R21,0
04EC 60E0 ldi R22,0
04EE 70E0 ldi R23,0
04F0 20910F00 lds R18,_f+2
04F4 30911000 lds R19,_f+2+1
04F8 00910D00 lds R16,_f
04FC 10910E00 lds R17,_f+1
0500 7A93 st -y,R23
0502 6A93 st -y,R22
0504 5A93 st -y,R21
0506 4A93 st -y,R20
0508 0E940000 xcall mod32u
050C 1983 std y+1,R17
050E 0883 std y+0,R16
0510 20910400 lds R18,_i
0514 3327 clr R19
0516 02E0 ldi R16,2
0518 10E0 ldi R17,0
051A 74DE xcall _WriteNum
051C .dbline 105
051C ; f/=10;
051C 4AE0 ldi R20,10
051E 50E0 ldi R21,0
0520 60E0 ldi R22,0
0522 70E0 ldi R23,0
0524 20910F00 lds R18,_f+2
0528 30911000 lds R19,_f+2+1
052C 00910D00 lds R16,_f
0530 10910E00 lds R17,_f+1
0534 7A93 st -y,R23
0536 6A93 st -y,R22
0538 5A93 st -y,R21
053A 4A93 st -y,R20
053C 0E940000 xcall div32u
0540 10930E00 sts _f+1,R17
0544 00930D00 sts _f,R16
0548 30931000 sts _f+2+1,R19
054C 20930F00 sts _f+2,R18
0550 .dbline 106
0550 ; }
0550 L59:
0550 .dbline 102
0550 80910400 lds R24,_i
0554 8150 subi R24,1
0556 80930400 sts _i,R24
055A L61:
055A .dbline 102
055A 86E0 ldi R24,6
055C 20900400 lds R2,_i
0560 8215 cp R24,R2
0562 10F2 brlo L58
0564 X13:
0564 .dbline 107
0564 ; TT=1/FF;
0564 00E0 ldi R16,<L62
0566 10E0 ldi R17,>L62
0568 0E940000 xcall lpm32
056C 80E0 ldi R24,<_FF
056E 90E0 ldi R25,>_FF
0570 9A93 st -y,R25
0572 8A93 st -y,R24
0574 0E940000 xcall fpdiv1
0578 10931600 sts _TT+1,R17
057C 00931500 sts _TT,R16
0580 30931800 sts _TT+2+1,R19
0584 20931700 sts _TT+2,R18
0588 .dbline 108
0588 ; T_int=(ulint)(TT*1000000000);
0588 00E0 ldi R16,<L63
058A 10E0 ldi R17,>L63
058C 0E940000 xcall lpm32
0590 80E0 ldi R24,<_TT
0592 90E0 ldi R25,>_TT
0594 9A93 st -y,R25
0596 8A93 st -y,R24
0598 0E940000 xcall fpmule1
059C 0E940000 xcall fpint
05A0 10930600 sts _T_int+1,R17
05A4 00930500 sts _T_int,R16
05A8 30930800 sts _T_int+2+1,R19
05AC 20930700 sts _T_int+2,R18
05B0 .dbline 109
05B0 ; for(i=14;i>5;i--)
05B0 8EE0 ldi R24,14
05B2 80930400 sts _i,R24
05B6 39C0 xjmp L67
05B8 L64:
05B8 .dbline 110
05B8 ; {
05B8 .dbline 111
05B8 ; WriteNum(1,i,T_int%10);
05B8 4AE0 ldi R20,10
05BA 50E0 ldi R21,0
05BC 60E0 ldi R22,0
05BE 70E0 ldi R23,0
05C0 20910700 lds R18,_T_int+2
05C4 30910800 lds R19,_T_int+2+1
05C8 00910500 lds R16,_T_int
05CC 10910600 lds R17,_T_int+1
05D0 7A93 st -y,R23
05D2 6A93 st -y,R22
05D4 5A93 st -y,R21
05D6 4A93 st -y,R20
05D8 0E940000 xcall mod32u
05DC 1983 std y+1,R17
05DE 0883 std y+0,R16
05E0 20910400 lds R18,_i
05E4 3327 clr R19
05E6 01E0 ldi R16,1
05E8 10E0 ldi R17,0
05EA 0CDE xcall _WriteNum
05EC .dbline 112
05EC ; T_int/=10;
05EC 4AE0 ldi R20,10
05EE 50E0 ldi R21,0
05F0 60E0 ldi R22,0
05F2 70E0 ldi R23,0
05F4 20910700 lds R18,_T_int+2
05F8 30910800 lds R19,_T_int+2+1
05FC 00910500 lds R16,_T_int
0600 10910600 lds R17,_T_int+1
0604 7A93 st -y,R23
0606 6A93 st -y,R22
0608 5A93 st -y,R21
060A 4A93 st -y,R20
060C 0E940000 xcall div32u
0610 10930600 sts _T_int+1,R17
0614 00930500 sts _T_int,R16
0618 30930800 sts _T_int+2+1,R19
061C 20930700 sts _T_int+2,R18
0620 .dbline 113
0620 ; }
0620 L65:
0620 .dbline 109
0620 80910400 lds R24,_i
0624 8150 subi R24,1
0626 80930400 sts _i,R24
062A L67:
062A .dbline 109
062A 85E0 ldi R24,5
062C 20900400 lds R2,_i
0630 8215 cp R24,R2
0632 10F2 brlo L64
0634 X14:
0634 .dbline 114
0634 ; t=0;
0634 2224 clr R2
0636 20920300 sts _t,R2
063A .dbline 115
063A ; init_devices();
063A 9CDE xcall _init_devices
063C .dbline 116
063C ; }
063C L54:
063C .dbline 117
063C ; }
063C L52:
063C .dbline 89
063C E8CE xjmp L51
063E X15:
063E .dbline -2
063E L50:
063E .dbline 0 ; func end
063E 2496 adiw R28,4
0640 0895 ret
0642 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
0000 _hignf::
0000 .blkb 1
0001 .dbsym e hignf _hignf c
0001 _f_low::
0001 .blkb 1
0002 .dbsym e f_low _f_low c
0002 _f_hign::
0002 .blkb 1
0003 .dbsym e f_hign _f_hign c
0003 _t::
0003 .blkb 1
0004 .dbsym e t _t c
0004 _i::
0004 .blkb 1
0005 .dbsym e i _i c
0005 _T_int::
0005 .blkb 4
0009 .dbsym e T_int _T_int l
0009 _ff::
0009 .blkb 4
000D .dbsym e ff _ff l
000D _f::
000D .blkb 4
0011 .dbsym e f _f l
0011 _FF::
0011 .blkb 4
0015 .dbsym e FF _FF D
0015 _TT::
0015 .blkb 4
0019 .dbsym e TT _TT D
.area lit(rom, con, rel)
0000 L63:
0000 286B6E4E .word 0x6b28,0x4e6e
0004 L62:
0004 0000803F .word 0x0,0x3f80
0008 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -