嗨,堆栈溢出。
我正在使用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:Error:语法错误
我你知道怎么修吗?这是编译器的问题吗??
我正在使用mplab与微芯片C18工具集,与mplab和其他语言。
为什么是正弦分类错误?
ty
发布于 2012-08-24 22:08:02
如果您有一个C编译器,则不需要担心org地址。编译器和/或链接器启动代码负责处理这个问题,然后调用main。如果这不是真的,则有一个非标准的编译器。
发布于 2012-08-24 21:53:58
内联程序集不太可能支持org。
此外,main()并不是在程序中执行的第一段代码。在++之前,将有一段相对较短的代码来初始化硬件、全局变量以及可能的C( main() )标准库。
因此,这个错误根本不应该让人感到意外。
您需要研究编译器和链接器选项,以了解如何指定加载和启动地址。通常情况下,设置这些地址是通过一个特殊的链接器脚本完成的,您可以将该脚本作为参数传递给编译器或链接器。
查找编译器/链接器及其文件的文档。
https://stackoverflow.com/questions/12115102
复制相似问题