ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
17 июля
302083 Топик полностью
il-2 (26.01.2012 20:26, просмотров: 183) ответил MegaJohn на Как бы в IAR AVR заполнить CSTACK и RSTACK моими значениями ? Это нужно для проверки на сколько они используются.
Вот рабочий код, дарю:  //main.cpp extern "C" { extern __version_1 void _InitStacks(void); extern __version_1 unsigned int _CalcculateRStack(void); extern __version_1 unsigned int _CalcculateCStack(void); __task char __low_level_init(void) { _InitStacks(); return(1); } } ;debug.s90 PUBLIC _InitStacks PUBLIC _CalcculateRStack PUBLIC _CalcculateCStack ; Forward declarations of segments used in initialization RSEG CSTACK:DATA:NOROOT(0) RSEG RSTACK:DATA:NOROOT(0) RSEG CODE _InitStacks: LDI R18,0 LDI R26,LOW(SFB(RSTACK)) LDI R27,HIGH(SFB(RSTACK)) LDI R24,LOW((SIZEOF RSTACK)-10) LDI R25,HIGH((SIZEOF RSTACK)-10) ; CLI RCALL _FillStackArea LDI R26,LOW(SFB(CSTACK)) LDI R27,HIGH(SFB(CSTACK)) LDI R24,LOW(SIZEOF CSTACK) LDI R25,HIGH(SIZEOF CSTACK) RCALL _FillStackArea ; SEI RET _FillStackArea: ST X+,R18 SBIW R24,1 BRNE _FillStackArea RET _CalcculateRStack: PUSH R18 PUSH R24 PUSH R25 PUSH R26 PUSH R27 LDI R26,LOW(SFB(RSTACK)) LDI R27,HIGH(SFB(RSTACK)) RJMP calcspace _CalcculateCStack: PUSH R18 PUSH R24 PUSH R25 PUSH R26 PUSH R27 LDI R26,LOW(SFB(CSTACK)) LDI R27,HIGH(SFB(CSTACK)) calcspace: LDI R24,0xFF LDI R25,0xFF loop: ADIW R24,1 LD R18,X+ CPI R18,0 BREQ loop MOVW R16,R24 POP R27 POP R26 POP R25 POP R24 POP R18 RET END