📄 atp.lst
字号:
__start:
__text_start:
0061 EFCF LDI R28,0xFF
0062 E1D0 LDI R29,0x10
0063 BFCD OUT 0x3D,R28
0064 BFDE OUT 0x3E,R29
0065 52C8 SUBI R28,0x28
0066 40D0 SBCI R29,0
0067 EA0A LDI R16,0xAA
0068 8308 STD Y+0,R16
0069 2400 CLR R0
006A E0E0 LDI R30,0
006B E0F1 LDI R31,1
006C E015 LDI R17,5
006D 3EEE CPI R30,0xEE
006E 07F1 CPC R31,R17
006F F011 BEQ 0x0072
0070 9201 ST R0,Z+
0071 CFFB RJMP 0x006D
0072 8300 STD Z+0,R16
0073 ECE2 LDI R30,0xC2
0074 E0F0 LDI R31,0
0075 E0A0 LDI R26,0
0076 E0B1 LDI R27,1
0077 E010 LDI R17,0
0078 3CE2 CPI R30,0xC2
0079 07F1 CPC R31,R17
007A F021 BEQ 0x007F
007B 95C8 LPM
007C 9631 ADIW R30,1
007D 920D ST R0,X+
007E CFF9 RJMP 0x0078
007F 940E036E CALL _main
_exit:
0081 CFFF RJMP _exit
_ucHex2BCD:
uctemp --> R20
ucIn --> R22
0082 940E139B CALL push_gset2
0084 2F60 MOV R22,R16
FILE: D:\ATP_AVR\main.c
(0001) //ICC-AVR application builder : 2007-10-30 15:43:17
(0002) #include "public.h"
(0003)
(0004)
(0005) #define Fy0 61242
(0006) #define FyL 60742
(0007) #define FyH 61742
(0008)
(0009) #define RadPer1MHz 0.001
(0010)
(0011) #define Rad0 0.087266 //5度
(0012)
(0013)
(0014) //方程的系数
(0015)
(0016) #define xishuA 4.9201506335
(0017) #define xishuB -11.4057818550
(0018) #define xishuC -4.9964661567
(0019)
(0020) //const u8 ucHEX2BCD[3000][3];
(0021)
(0022)
(0023) u8 ucHex2BCD(u8 ucIn)
(0024) {
(0025) u8 uctemp;
(0026)
(0027) uctemp=ucIn%10;
0085 E01A LDI R17,0xA
0086 2F06 MOV R16,R22
0087 940E1341 CALL mod8u
0089 2F40 MOV R20,R16
(0028) uctemp=uctemp|(((ucIn%100)/10)<<4);
008A E614 LDI R17,0x64
008B 2F06 MOV R16,R22
008C 940E1341 CALL mod8u
008E E01A LDI R17,0xA
008F 940E1343 CALL div8u
0091 2F80 MOV R24,R16
0092 708F ANDI R24,0xF
0093 9582 SWAP R24
0094 2B48 OR R20,R24
(0029)
(0030) return uctemp;
0095 2F04 MOV R16,R20
0096 940E1389 CALL pop_gset2
0098 9508 RET
_HEX2BCD:
uctemp --> Y+1
pucOutBuff --> R10
ulHex --> Y+6
0099 940E12CB CALL push_arg4
009B 940E1399 CALL push_gset3
009D 84AA LDD R10,Y+10
009E 84BB LDD R11,Y+11
(0031)
(0032) }
(0033) void HEX2BCD(u32 ulHex,u8* pucOutBuff)
(0034) {
(0035) u8 uctemp;
(0036)
(0037) pucOutBuff[2]=ulHex%10;
009F E04A LDI R20,0xA
00A0 E050 LDI R21,0
00A1 E060 LDI R22,0
00A2 E070 LDI R23,0
00A3 01FE MOVW R30,R28
00A4 8026 LDD R2,Z+6
00A5 8037 LDD R3,Z+7
00A6 8440 LDD R4,Z+8
00A7 8451 LDD R5,Z+9
00A8 937A ST R23,-Y
00A9 936A ST R22,-Y
00AA 935A ST R21,-Y
00AB 934A ST R20,-Y
00AC 0181 MOVW R16,R2
00AD 0192 MOVW R18,R4
00AE 940E12D2 CALL mod32u
00B0 01F5 MOVW R30,R10
00B1 8302 STD Z+2,R16
(0038) ulHex=ulHex/10;
00B2 E04A LDI R20,0xA
00B3 E050 LDI R21,0
00B4 E060 LDI R22,0
00B5 E070 LDI R23,0
00B6 01FE MOVW R30,R28
00B7 8026 LDD R2,Z+6
00B8 8037 LDD R3,Z+7
00B9 8440 LDD R4,Z+8
00BA 8451 LDD R5,Z+9
00BB 937A ST R23,-Y
00BC 936A ST R22,-Y
00BD 935A ST R21,-Y
00BE 934A ST R20,-Y
00BF 0181 MOVW R16,R2
00C0 0192 MOVW R18,R4
00C1 940E12D0 CALL div32u
00C3 01FE MOVW R30,R28
00C4 8306 STD Z+6,R16
00C5 8317 STD Z+7,R17
00C6 8720 STD Z+8,R18
00C7 8731 STD Z+9,R19
(0039) pucOutBuff[2]=pucOutBuff[2]|((ulHex%10)<<4);
00C8 01C5 MOVW R24,R10
00C9 9602 ADIW R24,2
00CA 011C MOVW R2,R24
00CB E04A LDI R20,0xA
00CC E050 LDI R21,0
00CD E060 LDI R22,0
00CE E070 LDI R23,0
00CF 01FE MOVW R30,R28
00D0 8046 LDD R4,Z+6
00D1 8057 LDD R5,Z+7
00D2 8460 LDD R6,Z+8
00D3 8471 LDD R7,Z+9
00D4 937A ST R23,-Y
00D5 936A ST R22,-Y
00D6 935A ST R21,-Y
00D7 934A ST R20,-Y
00D8 0182 MOVW R16,R4
00D9 0193 MOVW R18,R6
00DA 940E12D2 CALL mod32u
00DC E084 LDI R24,4
00DD E090 LDI R25,0
00DE 938A ST R24,-Y
00DF 940E13F6 CALL lsl32
00E1 01F1 MOVW R30,R2
00E2 8040 LDD R4,Z+0
00E3 2455 CLR R5
00E4 2466 CLR R6
00E5 2477 CLR R7
00E6 2A40 OR R4,R16
00E7 2A51 OR R5,R17
00E8 2A62 OR R6,R18
00E9 2A73 OR R7,R19
00EA 8240 STD Z+0,R4
(0040) ulHex=ulHex/10;
00EB E04A LDI R20,0xA
00EC E050 LDI R21,0
00ED E060 LDI R22,0
00EE E070 LDI R23,0
00EF 01FE MOVW R30,R28
00F0 8026 LDD R2,Z+6
00F1 8037 LDD R3,Z+7
00F2 8440 LDD R4,Z+8
00F3 8451 LDD R5,Z+9
00F4 937A ST R23,-Y
00F5 936A ST R22,-Y
00F6 935A ST R21,-Y
00F7 934A ST R20,-Y
00F8 0181 MOVW R16,R2
00F9 0192 MOVW R18,R4
00FA 940E12D0 CALL div32u
00FC 01FE MOVW R30,R28
00FD 8306 STD Z+6,R16
00FE 8317 STD Z+7,R17
00FF 8720 STD Z+8,R18
0100 8731 STD Z+9,R19
(0041) pucOutBuff[1]=ulHex%10;
0101 E04A LDI R20,0xA
0102 E050 LDI R21,0
0103 E060 LDI R22,0
0104 E070 LDI R23,0
0105 01FE MOVW R30,R28
0106 8026 LDD R2,Z+6
0107 8037 LDD R3,Z+7
0108 8440 LDD R4,Z+8
0109 8451 LDD R5,Z+9
010A 937A ST R23,-Y
010B 936A ST R22,-Y
010C 935A ST R21,-Y
010D 934A ST R20,-Y
010E 0181 MOVW R16,R2
010F 0192 MOVW R18,R4
0110 940E12D2 CALL mod32u
0112 01F5 MOVW R30,R10
0113 8301 STD Z+1,R16
(0042) ulHex=ulHex/10;
0114 E04A LDI R20,0xA
0115 E050 LDI R21,0
0116 E060 LDI R22,0
0117 E070 LDI R23,0
0118 01FE MOVW R30,R28
0119 8026 LDD R2,Z+6
011A 8037 LDD R3,Z+7
011B 8440 LDD R4,Z+8
011C 8451 LDD R5,Z+9
011D 937A ST R23,-Y
011E 936A ST R22,-Y
011F 935A ST R21,-Y
0120 934A ST R20,-Y
0121 0181 MOVW R16,R2
0122 0192 MOVW R18,R4
0123 940E12D0 CALL div32u
0125 01FE MOVW R30,R28
0126 8306 STD Z+6,R16
0127 8317 STD Z+7,R17
0128 8720 STD Z+8,R18
0129 8731 STD Z+9,R19
(0043) pucOutBuff[1]=pucOutBuff[1]|((ulHex%10)<<4);
012A 01C5 MOVW R24,R10
012B 9601 ADIW R24,1
012C 011C MOVW R2,R24
012D E04A LDI R20,0xA
012E E050 LDI R21,0
012F E060 LDI R22,0
0130 E070 LDI R23,0
0131 01FE MOVW R30,R28
0132 8046 LDD R4,Z+6
0133 8057 LDD R5,Z+7
0134 8460 LDD R6,Z+8
0135 8471 LDD R7,Z+9
0136 937A ST R23,-Y
0137 936A ST R22,-Y
0138 935A ST R21,-Y
0139 934A ST R20,-Y
013A 0182 MOVW R16,R4
013B 0193 MOVW R18,R6
013C 940E12D2 CALL mod32u
013E E084 LDI R24,4
013F E090 LDI R25,0
0140 938A ST R24,-Y
0141 940E13F6 CALL lsl32
0143 01F1 MOVW R30,R2
0144 8040 LDD R4,Z+0
0145 2455 CLR R5
0146 2466 CLR R6
0147 2477 CLR R7
0148 2A40 OR R4,R16
0149 2A51 OR R5,R17
014A 2A62 OR R6,R18
014B 2A73 OR R7,R19
014C 8240 STD Z+0,R4
(0044) ulHex=ulHex/10;
014D E04A LDI R20,0xA
014E E050 LDI R21,0
014F E060 LDI R22,0
0150 E070 LDI R23,0
0151 01FE MOVW R30,R28
0152 8026 LDD R2,Z+6
0153 8037 LDD R3,Z+7
0154 8440 LDD R4,Z+8
0155 8451 LDD R5,Z+9
0156 937A ST R23,-Y
0157 936A ST R22,-Y
0158 935A ST R21,-Y
0159 934A ST R20,-Y
015A 0181 MOVW R16,R2
015B 0192 MOVW R18,R4
015C 940E12D0 CALL div32u
015E 01FE MOVW R30,R28
015F 8306 STD Z+6,R16
0160 8317 STD Z+7,R17
0161 8720 STD Z+8,R18
0162 8731 STD Z+9,R19
(0045) pucOutBuff[0]=ulHex%10;
0163 E04A LDI R20,0xA
0164 E050 LDI R21,0
0165 E060 LDI R22,0
0166 E070 LDI R23,0
0167 01FE MOVW R30,R28
0168 8026 LDD R2,Z+6
0169 8037 LDD R3,Z+7
016A 8440 LDD R4,Z+8
016B 8451 LDD R5,Z+9
016C 937A ST R23,-Y
016D 936A ST R22,-Y
016E 935A ST R21,-Y
016F 934A ST R20,-Y
0170 0181 MOVW R16,R2
0171 0192 MOVW R18,R4
0172 940E12D2 CALL mod32u
0174 01F5 MOVW R30,R10
0175 8300 STD Z+0,R16
(0046) ulHex=ulHex/10;
0176 E04A LDI R20,0xA
0177 E050 LDI R21,0
0178 E060 LDI R22,0
0179 E070 LDI R23,0
017A 01FE MOVW R30,R28
017B 8026 LDD R2,Z+6
017C 8037 LDD R3,Z+7
017D 8440 LDD R4,Z+8
017E 8451 LDD R5,Z+9
017F 937A ST R23,-Y
0180 936A ST R22,-Y
0181 935A ST R21,-Y
0182 934A ST R20,-Y
0183 0181 MOVW R16,R2
0184 0192 MOVW R18,R4
0185 940E12D0 CALL div32u
0187 01FE MOVW R30,R28
0188 8306 STD Z+6,R16
0189 8317 STD Z+7,R17
018A 8720 STD Z+8,R18
018B 8731 STD Z+9,R19
(0047) pucOutBuff[0]=pucOutBuff[0]|((ulHex%10)<<4);
018C E04A LDI R20,0xA
018D E050 LDI R21,0
018E E060 LDI R22,0
018F E070 LDI R23,0
0190 01FE MOVW R30,R28
0191 8026 LDD R2,Z+6
0192 8037 LDD R3,Z+7
0193 8440 LDD R4,Z+8
0194 8451 LDD R5,Z+9
0195 937A ST R23,-Y
0196 936A ST R22,-Y
0197 935A ST R21,-Y
0198 934A ST R20,-Y
0199 0181 MOVW R16,R2
019A 0192 MOVW R18,R4
019B 940E12D2 CALL mod32u
019D E084 LDI R24,4
019E E090 LDI R25,0
019F 938A ST R24,-Y
01A0 940E13F6 CALL lsl32
01A2 01F5 MOVW R30,R10
01A3 8020 LDD R2,Z+0
01A4 2433 CLR R3
01A5 2444 CLR R4
01A6 2455 CLR R5
01A7 2A20 OR R2,R16
01A8 2A31 OR R3,R17
01A9 2A42 OR R4,R18
01AA 2A53 OR R5,R19
01AB 8220 STD Z+0,R2
01AC 940E138C CALL pop_gset3
01AE 9624 ADIW R28,4
01AF 9508 RET
_OutputFrequency:
ucFY --> Y+5
ucFX --> Y+2
ulFY --> Y+16
ulFX --> Y+12
01B0 940E12CB CALL push_arg4
01B2 940E139B CALL push_gset2
01B4 9728 SBIW R28,0x8
(0048)
(0049) }
(0050)
(0051)
(0052) //输出控制频率
(0053) //输入参数: ulFX X轴频率,单位kHz
(0054) // ulFY Y轴频率,单位kHz
(0055) void OutputFrequency(u32 ulFX,u32 ulFY)
(0056) {
(0057) u8 ucFX[3],ucFY[3];
(0058) if((ulFX<40000)||(ulFX>70000)) return;
01B5 E440 LDI R20,0x40
01B6 E95C LDI R21,0x9C
01B7 E060 LDI R22,0
01B8 E070 LDI R23,0
01B9 01FE MOVW R30,R28
01BA 8424 LDD R2,Z+12
01BB 8435 LDD R3,Z+13
01BC 8446 LDD R4,Z+14
01BD 8457 LDD R5,Z+15
01BE 1624 CP R2,R20
01BF 0635 CPC R3,R21
01C0 0646 CPC R4,R22
01C1 0657 CPC R5,R23
01C2 F070 BCS 0x01D1
01C3 E740 LDI R20,0x70
01C4 E151 LDI R21,0x11
01C5 E061 LDI R22,1
01C6 E070 LDI R23,0
01C7 01FE MOVW R30,R28
01C8 8424 LDD R2,Z+12
01C9 8435 LDD R3,Z+13
01CA 8446 LDD R4,Z+14
01CB 8457 LDD R5,Z+15
01CC 1542 CP R20,R2
01CD 0553 CPC R21,R3
01CE 0564 CPC R22,R4
01CF 0575 CPC R23,R5
01D0 F408 BCC 0x01D2
01D1 C047 RJMP 0x0219
(0059) if((ulFY<40000)||(ulFY>70000)) return;
01D2 E440 LDI R20,0x40
01D3 E95C LDI R21,0x9C
01D4 E060 LDI R22,0
01D5 E070 LDI R23,0
01D6 01FE MOVW R30,R28
01D7 8820 LDD R2,Z+16
01D8 8831 LDD R3,Z+17
01D9 8842 LDD R4,Z+18
01DA 8853 LDD R5,Z+19
01DB 1624 CP R2,R20
01DC 0635 CPC R3,R21
01DD 0646 CPC R4,R22
01DE 0657 CPC R5,R23
01DF F070 BCS 0x01EE
01E0 E740 LDI R20,0x70
01E1 E151 LDI R21,0x11
01E2 E061 LDI R22,1
01E3 E070 LDI R23,0
01E4 01FE MOVW R30,R28
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -