0

こんにちは、スタックオーバーフローです。

ブートローダーで pic 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:エラー: 構文エラー

私はそれを修正する方法を知っていますか?これはコンパイラの問題ですか??

私は、mpasm およびその他の言語を備えたマイクロチップ C18 ツールスイートで mplab IDE を使用しています。

シンタックスエラーはなぜですか?

タイ

4

2 に答える 2

1

C コンパイラを使用している場合は、orgアドレスについて心配する必要はありません。コンパイラやリンカの起動コードがそれを処理してから、 を呼び出しますmain。これが当てはまらない場合は、非標準のコンパイラを使用しています。

于 2012-08-24T22:08:02.500 に答える
0

インライン アセンブリが をサポートする可能性は低いですorg

さらに、main()プログラムで実行される最初のコードではありません。の前に、ハードウェア、グローバル変数、および場合によっては C(++) 標準ライブラリを初期化するための比較的短いコードがありますmain()

したがって、このエラーはまったく驚くべきことではありません。

コンパイラとリンカーのオプションを調べて、ロード アドレスと開始アドレスを指定する方法を確認する必要があります。多くの場合、このようなアドレスの設定は、コンパイラまたはリンカーにパラメーターとして渡す特別なリンカー スクリプトを介して行われます。

コンパイラ/リンカーとそのファイルのドキュメントを調べてください。

于 2012-08-24T21:53:58.330 に答える