你好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
答案 0 :(得分:0)
内联汇编不太可能支持org
。
此外,main()
不是将在您的程序中执行的第一段代码。在main()
之前,将会有一段相对较短的代码来初始化硬件,全局变量以及可能的C(++)标准库。
所以,这个错误根本不应该让人感到意外。
您需要研究编译器和链接器选项,以了解如何指定加载和起始地址。通常,设置此类地址是通过特殊的链接描述文件完成的,您可以将其作为参数传递给编译器或链接器。
查找编译器/链接器及其文件的文档。
答案 1 :(得分:0)
如果您有C编译器,则无需担心org
地址。编译器和/或链接器启动代码负责处理,然后调用main
。如果不是这样,那么你有一个非标准的编译器。