掲示板


[記事リスト] [返信する] [新着記事] [過去ログ] [ワード検索] [留意事項] [管理用]

記事No 763
タイトル Re^6: プログラム領域
投稿日 : 2016/11/30(Wed) 17:46:58
投稿者 negishi   <nekinorijp@yahoo.co.jp>
参照先
jump_to_isrとか使わずに
例をもとに
関数Funcをwhileの最後に入れて実行するだけでうまくいきました。


> 下記ページの 「#orgの使い方」のページを参照してください。
>
> http://www.picfun.com/ctechframe.html
>
>
> > MPLAB XC8インストールしてみたのですが、アプリケーションがうまく動かなくて挫折しました。
> > 何とかMPLAB IDEv7.5でうまく元の領域に戻る方法はないでしょうか?
> > 一応プログラムはこんな構造なんですが
> >
> > 後半のROM領域のプログラム(関数)func(){}
> >
> > main(){
> > while(1){
> > jump_to_isr(後半のプログラム領域の最初のアドレス);}
> > }
> >
> > func関数終了後 whileの最初に戻るようにしたい
> >
> >
> > > CCSのC言語だったのですね。アセンブラかと思いました。
> > > MPLAB XC8ならこういう問題は全く気にならなくなります。
> > >
> > > > >#org start,end
> > > > でプログラムの後半部分指定してjump_to_isr(address)で後半の最初のアドレスを指定したところ後半のROMにプログラムが書けたのですが、今度は前半部にうまく戻れなくなってしまいました。
> > > >
> > > > jump_to_isr(address)で戻りたいそれらしきアドレスを指定したのですが、戻れず一番最初の#use delay()に戻ってしまいプログラムが止まってしまいます。#orgが先に無いからダメなのかと思い#orgを前半部分指定で書いて見たのですがコンパイルエラーが出てしまいます
> > > >
> > > >
> > > >
> > > > PIC16は2kW単位のページで構成されていて、命令で直接ジャンプ
> > > > > できるのはページ内に限定されます。
> > > > > ページを超えてジャンプするときにはページ切り替えをしてから
> > > > > ジャンプ命令を実行する必要があります。
> > > > > プログラム作成も、ページを意識して2kWを超えないように記述し
> > > > > 超える場合はORGでページを指定してから記述する必要があります。
> > > > >
> > > > > Cコンパイラを使えばこういう問題は気にしなくてよくなります。
> > > > >
> > > > >
> > > > > > 16f87でプログラムを書いてコンパイルするとOut of ROM、A segment or the program is too large main と出てコンパイルエラーが出てしまいます。
> > > > > > 調べたらROM使用量50%までは大丈夫だと分かりました。でも半分も残っているのにもうプログラムが書けないのは何でなのでしょう。どうしたら残り50%も使えるのかわかる方がいたら教えて頂きたいです。

- 関連一覧ツリー (▼ をクリックするとツリーを一括表示します)


- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ
参照先
画像UP
暗証キー (英数字で8文字以内)
投稿キー (右画像の数字を入力) 投稿キー


- 投稿記事修正/削除フォーム -
処理 No 暗証キー

- WebForum -