سلام من هر کدی رو تو کد ویژن کامپایل میکنم دستورات زیر هم به اسمبلی نوشته میشه
حالا سوالم اینه که چرا رجیستر های 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
ممنون از پاسخگوییتون
کسی نیست کمک کنه؟
دیدگاه