سلام من هر کدی رو تو کد ویژن کامپایل میکنم دستورات زیر هم به اسمبلی نوشته میشه
حالا سوالم اینه که چرا رجیستر های r2 تا r14 و sram باید پاک بشند مگه با ریست شدن حتمآ تمامی حافظه sram و رجیسترهای کاربردی ریست(صفر) نمیشن؟
حالا اگر هم قراره پاک بشه چرا از r2 تا r14 پاک میشه و همه 32 رجیستر کاربردی صفر نمیشه؟
و سوال دیگه هم اینکه این چند خط زیر برای اینه که بردار ریست از ابتدای حافظه فلش شروع بشه؟ مگه به صورت پیش فرض همین نیست؟
یه سوال کلی هم اینکه اگر کلآ این کد ها رو قرار ندیم مشکلی پیش میاد؟
ممنون از پاسخگوییتون
کسی نیست کمک کنه؟
کد:
__RESET:
CLI
CLR R30
OUT EECR,R30
;INTERRUPT VECTORS ARE PLACED
;AT THE START OF FLASH
LDI R31,1
OUT MCUCR,R31
OUT MCUCR,R30
;CLEAR R2-R14
LDI R24,(14-2)+1
LDI R26,2
CLR R27
__CLEAR_REG:
ST X+,R30
DEC R24
BRNE __CLEAR_REG
;CLEAR SRAM
LDI R24,LOW(__CLEAR_SRAM_SIZE)
LDI R25,HIGH(__CLEAR_SRAM_SIZE)
LDI R26,__SRAM_START
__CLEAR_SRAM:
ST X+,R30
SBIW R24,1
BRNE __CLEAR_SRAM
حالا اگر هم قراره پاک بشه چرا از r2 تا r14 پاک میشه و همه 32 رجیستر کاربردی صفر نمیشه؟
و سوال دیگه هم اینکه این چند خط زیر برای اینه که بردار ریست از ابتدای حافظه فلش شروع بشه؟ مگه به صورت پیش فرض همین نیست؟
کد:
__RESET:
CLI
CLR R30
OUT EECR,R30
;INTERRUPT VECTORS ARE PLACED
;AT THE START OF FLASH
LDI R31,1
OUT MCUCR,R31
OUT MCUCR,R30
ممنون از پاسخگوییتون
کسی نیست کمک کنه؟





دیدگاه