Блок функциональной сборки ORG в C18

Привет, stackoverflow.

Я работаю с рисунком 18f4550 с загрузчиком.

Из-за загрузчика мне нужно запустить код по указанному адресу в памяти.

В данном случае 0x1000, потому что у меня нет прерываний.

Это мой код (простой):

#include <p18f4550.h>
#include <delays.h>

#pragma config FOSC = INTOSCIO_EC //Internal oscillator, port function on RA6, EC used by USB 
#pragma config WDT = OFF //Disable watchdog timer

#define LEDPin PORTAbits.RA0 //Define LEDPin as PORT D Pin 1
#define LEDTris TRISDbits.TRISD1 //Define LEDTris as TRISD Pin 1
void main()
{   
    _asm org 1000h
    LEDTris = 0;//Set LED Pin data direction to OUTPUT
    LEDPin = 1;//Set LED Pin

    while(1)
    {
        LEDPin = ~LEDPin;//Toggle LED Pin
        Delay10KTCYx(25);//Delay 250K cycles (1 second at 1MHz since each instruction takes 4 cycles)
    }

}

Но!...

C: \ Users \ User \ Documents \ ProjectosPIC \ testeled \ main.c: 13: Ошибка: синтаксическая ошибка

Я знаю, как это исправить? Это проблема с компилятором ??

Я использую mplab IDE с микрочипом C18 toolsuite с mpasm и другими языками.

Почему возникает ошибка синтаксиса?

ty


person Etraud    schedule 24.08.2012    source источник


Ответы (2)


Если у вас есть компилятор C, вам не нужно беспокоиться об адресе org. Код запуска компилятора и / или компоновщика заботится об этом, а затем вызывает main. Если это не так, у вас нестандартный компилятор.

person JimR    schedule 24.08.2012

Маловероятно, что встроенная сборка поддерживает org.

Кроме того, main() - не самый первый фрагмент кода, который будет выполняться в вашей программе. Перед main() будет относительно короткий фрагмент кода для инициализации оборудования, глобальных переменных и, возможно, стандартной библиотеки C (++).

Так что эта ошибка не должна вызывать удивления.

Вам необходимо изучить параметры вашего компилятора и компоновщика, чтобы увидеть, как можно указать адреса загрузки и запуска. Часто установка таких адресов выполняется с помощью специального сценария компоновщика, который вы передаете компилятору или компоновщику в качестве параметра.

Поищите документацию к вашему компилятору / компоновщику и его файлам.

person Alexey Frunze    schedule 24.08.2012