ORG功能组件块在C18中

时间:2012-08-24 18:53:38

标签: memory assembly microchip c18

你好stackoverflow。

我正在使用带有bootloader的pic 18f4550。

由于引导加载程序,我需要在内存中的指定地址中启动de代码。

在这种情况下为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:错误:语法   错误

我知道如何解决这个问题吗?这是编译器的问题??

我正在使用带有mpasm和其他语言的微芯片C18工具套件的mplab IDE。

为什么sintaxe错误?

TY

2 个答案:

答案 0 :(得分:0)

内联汇编不太可能支持org

此外,main()不是将在您的程序中执行的第一段代码。在main()之前,将会有一段相对较短的代码来初始化硬件,全局变量以及可能的C(++)标准库。

所以,这个错误根本不应该让人感到意外。

您需要研究编译器和链接器选项,以了解如何指定加载和起始地址。通常,设置此类地址是通过特殊的链接描述文件完成的,您可以将其作为参数传递给编译器或链接器。

查找编译器/链接器及其文件的文档。

答案 1 :(得分:0)

如果您有C编译器,则无需担心org地址。编译器和/或链接器启动代码负责处理,然后调用main。如果不是这样,那么你有一个非标准的编译器。