2017-04-19 10 views
0

studio7 선언은 AVR이내가</p> <p>내가 AVR 스튜디오 7</p> <p>하지만 한 가지 문제를 사용하여 atmega128a 시도하고 당신의 도움이 필요 오류

난에 DDRB와 PORTB를 제어 할 때()

주 괜찮아요 작동

내가 DDRB 및 PORTB 제어 메인()

오류를

'예상 식별자 또는'이되면 난 그냥 왜 항상 DDRB을 나눠 것을 알고 싶어하고 PORTB는 만입니다 (

'휘발성 전에'주() 여기

내 코드

입니다
#define F_CPU 14745600UL 

#include <avr/io.h> 
#include <util/delay.h> 

DDRB = 0xFF; 
PORTB = 0x00; 

int main(void) 
{ 
    /* Replace with your application code */ 

    PORTB = 0x01; 
    _delay_ms(300); 
    while (1) 
    { 
     PORTB <<= 1; 

     _delay_ms(300); 

     if(PORTB == 0x80){ 
      PORTB = 0x01; 
      _delay_ms(300); 
     } 
    } 
} 

답변

1

C는 스크립팅 언어가 아닙니다. 실제로 실행되는 모든 코드 행은 이어야하며이 함수 내에 있어야합니다. 새로운 기능을 만들고 main에서 호출 할 수 있습니다. 그들은 다음과 같습니다 무언가로 대체 치울 매크로이기 때문에

+0

이 코드는 Visual Studio 2017 에서 작동합니다. 다른 컴파일러와 IDE에서 작동하지 않을 수도 있습니다. plz help me –

+0

Visual Studio에서이 코드가 작동하지 않는다고 생각합니다. 우선, DDR에서 DDR과 같이 정의 할 수있는 것은 무엇입니까? 나는 이미 C 프로그램을 구조화 할 수있는 방법을 알려줌으로써 당신을 도왔습니다. 제 제안을 따르는 데 문제가 있습니까? –

+0

새 함수를 작성하고'main'에서 호출하는 방법을 알고 있습니까? 시도해 볼 수 있습니까? –

0

그들은 함수의 내부에 할당해야합니다 <address>는 당신이 레지스터에 해당하는 메모리 주소입니다

(*(volatile uint8_t *)<address>) 

액세스하려고합니다. 함수 외부에서 유효한 연산이 아닌 포인터를 캐스팅하거나 참조 해제하려고합니다.