?? main.s
字號:
.module main.c
.area text(rom, con, rel)
.dbfile D:\ATP_AVR\main.c
.dbfunc e ucHex2BCD _ucHex2BCD fc
; uctemp -> R20
; ucIn -> R22
.even
_ucHex2BCD::
xcall push_gset2
mov R22,R16
.dbline -1
.dbline 24
; //ICC-AVR application builder : 2007-10-30 15:43:17
; #include "public.h"
;
;
; #define Fy0 61242
; #define FyL 60742
; #define FyH 61742
;
; #define RadPer1MHz 0.001
;
; #define Rad0 0.087266 //5度
;
;
; //方程的系數
;
; #define xishuA 4.9201506335
; #define xishuB -11.4057818550
; #define xishuC -4.9964661567
;
; //const u8 ucHEX2BCD[3000][3];
;
;
; u8 ucHex2BCD(u8 ucIn)
; {
.dbline 27
; u8 uctemp;
;
; uctemp=ucIn%10;
ldi R17,10
mov R16,R22
xcall mod8u
mov R20,R16
.dbline 28
; uctemp=uctemp|(((ucIn%100)/10)<<4);
ldi R17,100
mov R16,R22
xcall mod8u
ldi R17,10
xcall div8u
mov R24,R16
andi R24,#0x0F
swap R24
or R20,R24
.dbline 30
;
; return uctemp;
mov R16,R20
.dbline -2
L1:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r uctemp 20 c
.dbsym r ucIn 22 c
.dbend
.dbfunc e HEX2BCD _HEX2BCD fV
; uctemp -> <dead>
; pucOutBuff -> R10,R11
; ulHex -> y+6
.even
_HEX2BCD::
xcall push_arg4
xcall push_gset3
ldd R10,y+10
ldd R11,y+11
.dbline -1
.dbline 34
;
; }
; void HEX2BCD(u32 ulHex,u8* pucOutBuff)
; {
.dbline 37
; u8 uctemp;
;
; pucOutBuff[2]=ulHex%10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R10
std z+2,R16
.dbline 38
; ulHex=ulHex/10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R30,R28
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
.dbline 39
; pucOutBuff[2]=pucOutBuff[2]|((ulHex%10)<<4);
movw R24,R10
adiw R24,2
movw R2,R24
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R4,z+6
ldd R5,z+7
ldd R6,z+8
ldd R7,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R4
movw R18,R6
xcall mod32u
ldi R24,4
ldi R25,0
st -y,R24
xcall lsl32
movw R30,R2
ldd R4,z+0
clr R5
clr R6
clr R7
or R4,R16
or R5,R17
or R6,R18
or R7,R19
std z+0,R4
.dbline 40
; ulHex=ulHex/10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R30,R28
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
.dbline 41
; pucOutBuff[1]=ulHex%10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R10
std z+1,R16
.dbline 42
; ulHex=ulHex/10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R30,R28
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
.dbline 43
; pucOutBuff[1]=pucOutBuff[1]|((ulHex%10)<<4);
movw R24,R10
adiw R24,1
movw R2,R24
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R4,z+6
ldd R5,z+7
ldd R6,z+8
ldd R7,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R4
movw R18,R6
xcall mod32u
ldi R24,4
ldi R25,0
st -y,R24
xcall lsl32
movw R30,R2
ldd R4,z+0
clr R5
clr R6
clr R7
or R4,R16
or R5,R17
or R6,R18
or R7,R19
std z+0,R4
.dbline 44
; ulHex=ulHex/10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R30,R28
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
.dbline 45
; pucOutBuff[0]=ulHex%10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
movw R30,R10
std z+0,R16
.dbline 46
; ulHex=ulHex/10;
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
movw R30,R28
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
.dbline 47
; pucOutBuff[0]=pucOutBuff[0]|((ulHex%10)<<4);
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall mod32u
ldi R25,0
st -y,R24
xcall lsl32
movw R30,R10
ldd R2,z+0
clr R3
clr R4
clr R5
or R2,R16
or R3,R17
or R4,R18
or R5,R19
std z+0,R2
.dbline -2
L2:
xcall pop_gset3
adiw R28,4
.dbline 0 ; func end
ret
.dbsym l uctemp 1 c
.dbsym r pucOutBuff 10 pc
.dbsym l ulHex 6 l
.dbend
.dbfunc e OutputFrequency _OutputFrequency fV
; ucFY -> y+5
; ucFX -> y+2
; ulFY -> y+16
; ulFX -> y+12
.even
_OutputFrequency::
xcall push_arg4
xcall push_gset2
sbiw R28,8
.dbline -1
.dbline 56
;
; }
;
;
; //輸出控制頻率
; //輸入參數: ulFX X軸頻率,單位kHz
; // ulFY Y軸頻率,單位kHz
; void OutputFrequency(u32 ulFX,u32 ulFY)
; {
.dbline 58
ldi R20,64
ldi R21,156
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+12
ldd R3,z+13
ldd R4,z+14
ldd R5,z+15
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlo L6
ldi R20,112
ldi R21,17
ldi R22,1
ldi R23,0
movw R30,R28
ldd R2,z+12
ldd R3,z+13
ldd R4,z+14
ldd R5,z+15
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brsh L4
L6:
.dbline 58
; u8 ucFX[3],ucFY[3];
; if((ulFX<40000)||(ulFX>70000)) return;
xjmp L3
L4:
.dbline 59
ldi R20,64
ldi R21,156
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+16
ldd R3,z+17
ldd R4,z+18
ldd R5,z+19
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlo L9
ldi R20,112
ldi R21,17
ldi R22,1
ldi R23,0
movw R30,R28
ldd R2,z+16
ldd R3,z+17
ldd R4,z+18
ldd R5,z+19
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brsh L7
L9:
.dbline 59
; if((ulFY<40000)||(ulFY>70000)) return;
xjmp L3
L7:
.dbline 61
;
; HEX2BCD(ulFX,ucFX);
movw R24,R28
adiw R24,2
std y+1,R25
std y+0,R24
movw R30,R28
ldd R16,z+12
ldd R17,z+13
ldd R18,z+14
ldd R19,z+15
xcall _HEX2BCD
.dbline 62
; HEX2BCD(ulFY,ucFY);
movw R24,R28
adiw R24,5
std y+1,R25
std y+0,R24
movw R30,R28
ldd R16,z+16
ldd R17,z+17
ldd R18,z+18
ldd R19,z+19
xcall _HEX2BCD
.dbline 68
;
;
;
;
;
; DISABLEXOUT;
cbi 0x3,7
.dbline 69
; DISABLEYOUT;
cbi 0x3,6
.dbline 71
;
; SPISend(ucFX[0]);
ldd R16,y+2
xcall _SPISend
.dbline 72
; SPISend(ucFX[1]);
ldd R16,y+3
xcall _SPISend
.dbline 73
; SPISend(ucFX[2]);
ldd R16,y+4
xcall _SPISend
.dbline 74
; SPISend(ucFY[0]);
ldd R16,y+5
xcall _SPISend
.dbline 75
; SPISend(ucFY[1]);
ldd R16,y+6
xcall _SPISend
.dbline 76
; SPISend(ucFY[2]);
ldd R16,y+7
xcall _SPISend
.dbline 78
;
; ENABLEXOUT;
sbi 0x3,7
.dbline 79
; ENABLEYOUT;
sbi 0x3,6
.dbline -2
L3:
adiw R28,8
xcall pop_gset2
adiw R28,4
.dbline 0 ; func end
ret
.dbsym l ucFY 5 A[3:3]c
.dbsym l ucFX 2 A[3:3]c
.dbsym l ulFY 16 l
.dbsym l ulFX 12 l
.dbend
.dbfunc e OutputFrequency1 _OutputFrequency1 fV
.even
_OutputFrequency1::
.dbline -1
.dbline 84
; }
;
;
; void OutputFrequency1(void)
; {
.dbline 86
;
; DISABLEXOUT;
cbi 0x3,7
.dbline 87
; DISABLEYOUT;
cbi 0x3,6
.dbline 89
;
; SPISend(0x06);
ldi R16,6
xcall _SPISend
.dbline 90
; SPISend(0x10);
ldi R16,16
xcall _SPISend
.dbline 91
; SPISend(0);
clr R16
xcall _SPISend
.dbline 92
; SPISend(0);
clr R16
xcall _SPISend
.dbline 93
; SPISend(0);
clr R16
xcall _SPISend
.dbline 94
; SPISend(0);
clr R16
xcall _SPISend
.dbline 96
;
; ENABLEXOUT;
sbi 0x3,7
.dbline 97
; ENABLEYOUT;
sbi 0x3,6
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbend
.dbfunc e OutputFrequency2 _OutputFrequency2 fV
.even
_OutputFrequency2::
.dbline -1
.dbline 101
; }
;
; void OutputFrequency2(void)
; {
.dbline 103
;
; DISABLEXOUT;
cbi 0x3,7
.dbline 104
; DISABLEYOUT;
cbi 0x3,6
.dbline 106
;
; SPISend(0x07);
ldi R16,7
xcall _SPISend
.dbline 107
; SPISend(0x00);
clr R16
xcall _SPISend
.dbline 108
; SPISend(0x00);
clr R16
xcall _SPISend
.dbline 109
; SPISend(0);
clr R16
xcall _SPISend
.dbline 110
; SPISend(0);
clr R16
xcall _SPISend
.dbline 111
; SPISend(0);
clr R16
xcall _SPISend
.dbline 113
;
; ENABLEXOUT;
sbi 0x3,7
.dbline 114
; ENABLEYOUT;
sbi 0x3,6
.dbline -2
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e OutputFrequency3 _OutputFrequency3 fV
; ucFX -> R20
.even
_OutputFrequency3::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 122
; }
;
;
;
;
;
; void OutputFrequency3(u8 ucFX)
; {
.dbline 123
; DISABLEXOUT;
cbi 0x3,7
.dbline 124
; DISABLEYOUT;
cbi 0x3,6
.dbline 126
;
; SPISend(0x06);
ldi R16,6
xcall _SPISend
.dbline 127
; SPISend(ucFX);
mov R16,R20
xcall _SPISend
.dbline 128
; SPISend(0);
clr R16
xcall _SPISend
.dbline 129
; SPISend(0);
clr R16
xcall _SPISend
.dbline 130
; SPISend(0);
clr R16
xcall _SPISend
.dbline 131
; SPISend(0);
clr R16
xcall _SPISend
.dbline 133
;
; ENABLEXOUT;
sbi 0x3,7
.dbline 134
; ENABLEYOUT;
sbi 0x3,6
.dbline -2
L16:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r ucFX 20 c
.dbend
.dbfunc e ulGetFrequency _ulGetFrequency fl
; ulNextF -> y+8
; dNowF -> y+4
; dNextF -> y+0
; dNowRad2 -> y+28
; ulNowF -> y+24
.even
_ulGetFrequency::
xcall push_arg4
xcall push_gset2
sbiw R28,20
.dbline -1
.dbline 139
; }
;
;
; u32 ulGetFrequency(u32 ulNowF,double dNowRad2)
; {
.dbline 143
; double dNowF,dNextF;
; u32 ulNextF;
;
; dNowF=((double)ulNowF)/(double)1000000;
ldi R16,<L18
ldi R17,>L18
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R30,R28
; stack offset 4
ldd R2,z+28
ldd R3,z+29
ldd R4,z+30
ldd R5,z+31
lsr R5
ror R4
ror R3
ror R2
movw R16,R2
movw R18,R4
xcall long2fp
st -y,R19
st -y,R18
st -y,R17
st -y,R16
xcall empy32fs
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
; stack offset 4
ldd R2,z+28
ldd R3,z+29
ldd R4,z+30
ldd R5,z+31
and R2,R20
and R3,R21
and R4,R22
and R5,R23
movw R16,R2
movw R18,R4
xcall long2fp
st -y,R19
st -y,R18
st -y,R17
st -y,R16
xcall add32fs
ldi R16,<L19
ldi R17,>L19
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
xcall div32f
movw R30,R28
std z+4,R16
std z+5,R17
std z+6,R18
std z+7,R19
.dbline 145
;
; dNextF=-1-xishuA*dNowF-xishuB*dNowRad2;
ldi R16,<L20
ldi R17,>L20
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
ldi R16,<L21
ldi R17,>L21
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R30,R28
; stack offset 8
ldd R2,z+12
ldd R3,z+13
ldd R4,z+14
ldd R5,z+15
st -y,R5
st -y,R4
st -y,R3
st -y,R2
xcall empy32fs
xcall sub32fs
ldi R16,<L22
ldi R17,>L22
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R30,R28
; stack offset 8
ldd R2,z+36
ldd R3,z+37
ldd R4,z+38
ldd R5,z+39
st -y,R5
st -y,R4
st -y,R3
st -y,R2
xcall empy32fs
xcall sub32f
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 146
; dNextF=dNextF/xishuC;
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R5
st -y,R4
st -y,R3
st -y,R2
ldi R16,<L23
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -