문제

방금 몇 주 전에 대학에서 마이크로 프로세서 수업을 마쳤습니다. 그곳에서 우리는 어셈블리에서만 프로그래밍했습니다. 우리는 인터럽트에 대해 상당한 금액 (IMHO)을 배웠습니다.

내 질문은 다음과 같습니다. 나는 인터럽트를 논의하는 데이터 시트 섹션에서 16F684의 Hitech 컴파일러를 사용하여 C로 프로그래밍하고 있습니다.PIC 16F684 데이터 시트 섹션 12.4) 프로그램은 인터럽트 벡터 0x0004로 이동한다고 말합니다. 마이크로 프로세서 클래스의 어셈블리를 사용하여 간단히 그 주소를 가리키는 .org 문을 설정하고 아래에 필요한 어셈블리를 작성하여 인터럽트가 발생하면 점프하고 실행됩니다. 나는 어셈블리에서 그것을 알아낼 수 있지만, CI에서 프로그램 할 때 프로그램 조각이 메모리에 배치되는 위치를 제어 할 수 없다고 생각하지 않으므로 문제가 발생합니다. C의 인터럽트에서 명령을 배치하는 방법을 알 수 없습니다.

명확히 해야하는지 알려주세요!

도움이 되었습니까?

해결책

Microchip 의이 FAQ Hitech C에서 인터럽트 사용에 대한 정보가 있습니다.

다른 팁

Hitech C는 C 언어를 연장합니다 interrupt 기능 유형 :

void interrupt my_interrupt_handler (void) {
    handle_interrupts_here();
}

실제로 컴파일러 매뉴얼을 가져와야합니다. 나는 Pic-lite의 설명서가 다운로드하기에 무료라고 생각합니다. 적어도 2001 년에 내 사본을 다운로드했을 때였습니다.

Hitech 문서를 파헤쳐 야하지만 종종 컴파일러에는 인터럽트 기능을 정의하는 특수 키워드가 있습니다. 컴파일러 또는 런타임 시스템은 특별히 인터럽트에 의해 호출 된 함수를 처리해야합니다. 벡터를 설정하는 것 외에도 컴파일러 (또는 런타임 시스템)는 모든 레지스터를 보존해야합니다. 정상적이고 무한한 기능을 위해 그렇게 할 필요는 없습니다.

매뉴얼은 당신의 친구가 될 것입니다.

그만큼 사진 용 CCS 컴파일러 다양한 인터럽트 소스에 대한 인터럽트 처리 기능에서 #int_* 컴파일러 지침 또는 '속성'을 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top