首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C18中的ORG函数组装块

C18中的ORG函数组装块
EN

Stack Overflow用户
提问于 2012-08-24 18:53:38
回答 2查看 376关注 0票数 0

嗨,堆栈溢出。

我正在使用pic 18f4550和引导加载程序。

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

在这种情况下,0x1000,因为我没有任何干扰。

到目前为止,这是我的代码(简单):

代码语言:javascript
复制
#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

EN

回答 2

Stack Overflow用户

发布于 2012-08-24 22:08:02

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

票数 1
EN

Stack Overflow用户

发布于 2012-08-24 21:53:58

内联程序集不太可能支持org

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

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

您需要研究编译器和链接器选项,以了解如何指定加载和启动地址。通常情况下,设置这些地址是通过一个特殊的链接器脚本完成的,您可以将该脚本作为参数传递给编译器或链接器。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12115102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档