BASIC4MCU | AVR | 컴파일러 | 메인 함수에 무한루프가 없으면?
페이지 정보
작성자 키트 작성일2017-08-25 17:07 조회3,856회 댓글0건본문
#include <avr/io.h>//int main(void){DDRA=1;PORTA=1;return 0;}테스트를 위해서 간단하게 작성 했습니다.AVRstudio 4.18로 컴파일 했습니다.Build started 9.7.2015 at 21:33:17AVR Memory Usage----------------Device: atmega128Program: 3110 bytes (2.4% Full)(.text + .data + .bootloader)Data: 0 bytes (0.0% Full)(.data + .bss + .noinit)Build succeeded with 0 Warnings...이까짓 코드에 3110바이트가 왜 소요되는지 모르겠지만 어쨋거나 컴파일 오류없습니다.^^디버깅(시뮬레이션) 모드로 진입해서 어셈블러 코드를 보면(View/Disassembler)+000000D9: F7D9 BRNE PC-0x04 Branch if not equal+000000DA: 940E00E0 CALL 0x000000E0 Call subroutine+000000DC: 940C0496 JMP 0x00000496 Jump+000000DE: 940C0000 JMP 0x00000000 Jump@000000E0: main---- 123123.c -------------------------------------------------------------------------------------4: int main(void){+000000E0: E081 LDI R24,0x01 Load immediate+000000E1: BB8A OUT 0x1A,R24 Out to I/O location6: PORTA=1;+000000E2: BB8B OUT 0x1B,R24 Out to I/O location8: }+000000E3: E080 LDI R24,0x00 Load immediate+000000E4: E090 LDI R25,0x00 Load immediate+000000E5: 9508 RET Subroutine return8: }+000000E6: 922F PUSH R2 Push register on stack+000000E7: 923F PUSH R3 Push register on stack+000000E8: 924F PUSH R4 Push register on stack+000000E9: 925F PUSH R5 Push register on stack색칠한 부분이 메인함수입니다.5. DDRA=1; 이 코드는 빠져있습니다.(컴파일러가 공짜라서 약간의 버그가 있어도..이정도는 봐주죠^^)메인함수 마지막에 어디로 리턴하는지 확인 하기 위해서 F11을 눌러서 싱글스텝을 실행 합니다.함수 바로 위로 리턴합니다.+000000D9: F7D9 BRNE PC-0x04 Branch if not equal+000000DA: 940E00E0 CALL 0x000000E0 Call subroutine 메인함수를 여기서 호출하고+000000DC: 940C0496 JMP 0x00000496 Jump 실행 후에 여기로 리턴 했습니다. 0x00000496으로 점프하는군요+000000DE: 940C0000 JMP 0x00000000 Jump@000000E0: main//+00000495: 9508 RET Subroutine return+00000496: 94F8 CLI Global Interrupt Disable 인터럽트를 금지시키고+00000497: 940C0611 JMP 0x00000611 Jump 0x00000611로 점프합니다. 이리저리 끌고 다니는군요..^^+00000499: 3028 CPI R18,0x08 Compare with immediate//+00000610: 9508 RET Subroutine return+00000611: 94F8 CLI Global Interrupt Disable 한번 더 인터럽트를 금지시키고+00000612: CFFF RJMP PC-0x0000 Relative jump 제자리로 점프합니다. 여기서 영원히 멈추는^^+00000613: FFFF ??? Data or unknown opcode//
댓글 0
조회수 3,856등록된 댓글이 없습니다.