2017-10-03 6 views
0

AtmelStudio에서 AVR을 디버깅하는 방법을 배우고 있습니다. 그래서 저는 테스트 할 수있는 간단한 프로그램을 작성했습니다. 그러나 올바르게 컴파일되지만 예상대로 실행되지는 않습니다. 내가 쓴 다음 코드 ATmega32 Atmel Studio에서 AVR 디버깅

#include <avr/io.h> 
int main(void) 
{ 
DDRA = 0xFF; 
PORTA = (10/100)*255; 
return 0; 
} 

그리고 디버깅 시작과 중단을 선택 디버그 메뉴에서

. IO 창에서 I/O 포트 (PORTA)를 선택했습니다. 단계별 실행을 위해 F11 키를 눌렀습니다. 필요한 값으로 DDRD 만 기록되지만 porta에는 값이 할당되지 않고 디버깅이 완료됩니다. 왜 PORTA는 쓰여지지 않습니다.

답변

1

정수 나누기가 C에서 작동하는 방식 때문에 10/100은 0으로 평가되므로 실제로 PORTA에 0이 할당됩니다. PORTA 값이 0이면 프로그램이 예상대로 작동합니다. 스크린 샷이나 짧은 동영상을 보지 않고 "porta가 어떤 가치도 부여되지 않았다"는 진술을 믿기 어렵습니다.

이 대신 작성하는 것이 좋습니다 :

PORTA = 255 * 10/100;