📄 ex_support.s
字号:
L3:
.dbline 157
; }
; }
; else if (fNumberB > 0)
movw R24,R28
adiw R24,4
ldi R16,<L5
ldi R17,>L5
rcall lpm32
st -y,R25
st -y,R24
rcall fpcmp1
brlt X11
rjmp L16
X11:
X5:
.dbline 158
; {
.dbline 159
; if (fNumberA < 0)
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldi R16,<L5
ldi R17,>L5
rcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
rcall fpcmp2
brge L18
X6:
.dbline 160
; {
rjmp L21
L20:
.dbline 162
; while((fNumberA + fNumberB) < fNumberB)
; {
.dbline 163
; fNumberA += fNumberB;
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
movw R24,R28
adiw R24,4
st -y,R25
st -y,R24
rcall fpadd1
std y+0,R16
std y+1,R17
std y+2,R18
std y+3,R19
.dbline 164
; }
L21:
.dbline 161
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
movw R24,R28
adiw R24,4
st -y,R25
st -y,R24
rcall fpadd1
movw R24,R28
adiw R24,4
st -y,R25
st -y,R24
rcall fpcmp1
brlt L20
X7:
.dbline 166
;
; return fNumberA;
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
rjmp L2
L18:
.dbline 168
; }
; else if (fNumberA > 0)
movw R24,R28
ldi R16,<L5
ldi R17,>L5
rcall lpm32
st -y,R25
st -y,R24
rcall fpcmp1
brge L23
X8:
.dbline 169
; {
rjmp L26
L25:
.dbline 171
; while(fNumberA > fNumberB)
; {
.dbline 172
; fNumberA -= fNumberB;
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
movw R24,R28
adiw R24,4
st -y,R25
st -y,R24
rcall fpsub1
std y+0,R16
std y+1,R17
std y+2,R18
std y+3,R19
.dbline 173
; }
L26:
.dbline 170
movw R24,R28
ldd R16,y+4
ldd R17,y+5
ldd R18,y+6
ldd R19,y+7
st -y,R25
st -y,R24
rcall fpcmp1
brlt L25
X9:
.dbline 175
;
; return fNumberA;
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
rjmp L2
L23:
.dbline 178
; }
; else
; {
.dbline 179
; return 0.0;
ldi R16,<L5
ldi R17,>L5
rcall lpm32
rjmp L2
L16:
.dbline 183
; }
; }
; else
; {
.dbline 184
; return 0.0;
ldi R16,<L5
ldi R17,>L5
rcall lpm32
.dbline -2
L2:
.dbline 0 ; func end
adiw R28,4
ret
.dbsym l fNumberB 4 D
.dbsym l fNumberA 0 D
.dbend
.dbfunc e PROC_Get_Relative_Location _PROC_Get_Relative_Location fc
; cflags0 -> R10
; fTempY0 -> y+8
; fTempX0 -> y+4
; fTempAngle0 -> y+0
.even
_PROC_Get_Relative_Location::
st -y,R10
st -y,R11
sbiw R28,12
.dbline -1
.dbline 196
; }
; }
;
;
; /***********************************************************
; * 函数说明: 相对坐标转换函数 *
; * 输入: 无 *
; * 输出: FALSE *
; * 调用函数: 无 *
; ***********************************************************/
; BOOL PROC_Get_Relative_Location(void)
; {
.dbline 199
; float fTempAngle,fTempX,fTempY;
;
; SAFE_CODE_PERFORMANCE
.dbline 199
in R10,0x3f
.dbline 199
cli
.dbline 199
lds R4,_g_fAbsoluteAngle+2
lds R5,_g_fAbsoluteAngle+2+1
lds R2,_g_fAbsoluteAngle
lds R3,_g_fAbsoluteAngle+1
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 199
lds R4,_g_fAbsoluteX+2
lds R5,_g_fAbsoluteX+2+1
lds R2,_g_fAbsoluteX
lds R3,_g_fAbsoluteX+1
std y+4,R2
std y+5,R3
std y+6,R4
std y+7,R5
.dbline 199
lds R4,_g_fAbsoluteY+2
lds R5,_g_fAbsoluteY+2+1
lds R2,_g_fAbsoluteY
lds R3,_g_fAbsoluteY+1
std y+8,R2
std y+9,R3
std y+10,R4
std y+11,R5
.dbline 199
.dbline 199
out 0x3f,R10
.dbline 199
.dbline 206
; (
; fTempAngle = g_fAbsoluteAngle;
; fTempX = g_fAbsoluteX;
; fTempY = g_fAbsoluteY;
; )
;
; g_fAngle = K_ANGLE * (float)g_wCounter + fTempAngle;
ldi R16,<L29
ldi R17,>L29
rcall lpm32
movw R2,R16
movw R4,R18
lds R16,_g_wCounter
lds R17,_g_wCounter+1
rcall uint2fp
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
rcall fpmule2
movw R24,R28
st -y,R25
st -y,R24
rcall fpadd1
sts _g_fAngle+1,R17
sts _g_fAngle,R16
sts _g_fAngle+2+1,R19
sts _g_fAngle+2,R18
.dbline 207
; g_fX = fTempX + RELATIVE_L * cos(fTempAngle);
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
rcall _cosf
movw R2,R16
movw R4,R18
ldd R6,y+4
ldd R7,y+5
ldd R8,y+6
ldd R9,y+7
ldi R16,<L30
ldi R17,>L30
rcall lpm32
st -y,R5
st -y,R4
st -y,R3
st -y,R2
rcall fpmule2x
movw R16,R6
movw R18,R8
rcall fpadd2
sts _g_fX+1,R17
sts _g_fX,R16
sts _g_fX+2+1,R19
sts _g_fX+2,R18
.dbline 208
; g_fY = fTempY + RELATIVE_L * sin(fTempAngle);
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
rcall _sinf
movw R2,R16
movw R4,R18
ldd R6,y+8
ldd R7,y+9
ldd R8,y+10
ldd R9,y+11
ldi R16,<L30
ldi R17,>L30
rcall lpm32
st -y,R5
st -y,R4
st -y,R3
st -y,R2
rcall fpmule2x
movw R16,R6
movw R18,R8
rcall fpadd2
sts _g_fY+1,R17
sts _g_fY,R16
sts _g_fY+2+1,R19
sts _g_fY+2,R18
.dbline 210
;
; return FALSE;
clr R16
.dbline -2
L28:
.dbline 0 ; func end
adiw R28,12
ld R11,y+
ld R10,y+
ret
.dbsym r cflags0 10 c
.dbsym l fTempY0 8 D
.dbsym l fTempX0 4 D
.dbsym l fTempAngle0 0 D
.dbend
.dbfunc e Delay_MS _Delay_MS fV
; wTime -> R16,R17
.even
_Delay_MS::
.dbline -1
.dbline 220
; }
;
; /***********************************************************
; * 函数说明:系统毫秒延时函数 *
; * 输入: 需要延时的时间长度 *
; * 输出: 无 *
; * 调用函数:无 *
; ***********************************************************/
; void Delay_MS(uint16 wTime)
; {
.dbline 221
; s_wSystemDelayTimerCounter = wTime;
sts _s_wSystemDelayTimerCounter+1,R17
sts _s_wSystemDelayTimerCounter,R16
L32:
.dbline 223
;
; while(s_wSystemDelayTimerCounter);
L33:
.dbline 223
lds R2,_s_wSystemDelayTimerCounter
lds R3,_s_wSystemDelayTimerCounter+1
tst R2
brne L32
tst R3
brne L32
X12:
.dbline -2
L31:
.dbline 0 ; func end
ret
.dbsym r wTime 16 i
.dbend
.dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
.even
_Insert_Timer0_OVF_ISR_Code::
.dbline -1
.dbline 233
; }
;
; /***********************************************************
; * 函数说明:定时器0中断处理程序代码插入函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:无 *
; ***********************************************************/
; void Insert_Timer0_OVF_ISR_Code(void)
; {
.dbline 234
; g_wSystemTimer++;
lds R24,_g_wSystemTimer
lds R25,_g_wSystemTimer+1
adiw R24,1
sts _g_wSystemTimer+1,R25
sts _g_wSystemTimer,R24
.dbline 236
;
; if (s_wSystemDelayTimerCounter)
lds R2,_s_wSystemDelayTimerCounter
lds R3,_s_wSystemDelayTimerCounter+1
tst R2
brne X13
tst R3
breq L36
X13:
.dbline 237
; {
.dbline 238
; s_wSystemDelayTimerCounter--;
movw R24,R2
sbiw R24,1
sts _s_wSystemDelayTimerCounter+1,R25
sts _s_wSystemDelayTimerCounter,R24
.dbline 239
; }
L36:
.dbline 241
;
; if (!(g_wSystemTimer & (BIT(9) - 1)))
lds R24,_g_wSystemTimer
lds R25,_g_wSystemTimer+1
andi R25,1
cpi R24,0
cpc R24,R25
brne L38
X14:
.dbline 242
; {
.dbline 243
; PORTC ^= BIT(PC2);
ldi R24,4
in R2,0x8
eor R2,R24
out 0x8,R2
.dbline 244
; }
L38:
.dbline -2
L35:
.dbline 0 ; func end
ret
.dbend
.area lit(rom, con, rel)
L30:
.word 0x8000,0x4317
L29:
.word 0xfdb,0x3bc9
L5:
.word 0x0,0x0
; }
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -