• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PIC16F84のプログラム)

PIC16F84で作成したプログラム

このQ&Aのポイント
  • PIC16F84のプログラムで、75×255=19125回(多分)繰り返す動作を行うものです。
  • 同様の処理を多数行なうため、プログラムの容量オーバーが発生し、アセンブルできなかった。
  • シンプルな方法で同様の動作を行う方法はあるかを質問している。

質問者が選んだベストアンサー

  • ベストアンサー
  • tnt
  • ベストアンサー率40% (1358/3355)
回答No.2

補足拝見しました。 movlwの問題ではないと言う事ですね。 そして、約100回、同じ物を書かれたのでしょうか? とすると、やはり、容量オーバーしますね。 PICにはあまりプログラム領域はありませんから。 MPLABだと、確かに容量オーバーでアセンブルできないと 思います。(もっと高価なアセンブラをお使いでしたら失礼!) (1)~(2)を数十パターン用意するのでしたら やはり、CALL命令が良いと思います。 そういう書き方は、PICが一番得意とする処です (プログラムカウンタの扱いは柔軟なのに  プログラムそのものはガチガチなのが、PICの特徴ですから)

motokichi
質問者

お礼

ありがとうございます。 アセンブラはどこかのHPでフリーで入手したものでして、高価な物でないことは間違い無いです。といっても本当に素人レベルなので違いは分りませんが(^_^;)。 やはり、CALL命令ですか。実は最初一生懸命約100回分を書き込んでアセンブルしてました(今から思えばよくやったものです・・・)。 CALL命令ならかなりスマートに出来そうですね。 とりあえずそれでトライしてみます。 ありがとうございました。

その他の回答 (1)

  • tnt
  • ベストアンサー率40% (1358/3355)
回答No.1

これだけだと判断が付かないのですが 容量オーバーと言うことは無いでしょう。 エラーは何が出ましたか? アセンブラは何ですか? tm3,tm4はちゃんと定義されていますか? 10進数と16進数はちゃんと区別していますか? そして、もしかして.....ですが、 秋月のアセンブラにはバグがあることをご存じですか? movlwは上手く動きません。 mov命令を代用して下さい

motokichi
質問者

お礼

ありがとうございます。 すいません、説明不足のようでした。 プログラムを多数繰り返すとありましたが、(1)~(2)までの内容の若干違うものを約100回程度繰り返したいと思っています。 数を減らしてアセンブルすると(50回程度)きちんとアセンブルでき、PICも思った動きをしてくれます。 ちなみにアセンブラは秋月ではありません。 友人から教わったHPよりダウンロードしたものです。まだ素人でしてあまり詳しい事は分りませんが、movlwは正常に動きます。 ちなみにこの文を書きながら思いついたのですが revel1    movlw 75        movwf tm3        movlw 255        movwf tm4        call main         no1_on          decfsz tm4,1        goto no1_on        decfsz tm3,1        goto no1_on main    mov rb,#11110000b     ;(1)        mov rb,#10000000b        mov rb,#11000000b        mov rb,#10100000b        mov rb,#11000000b        mov rb,#10000000b    ;(2)        ret では動作的には同じになる。で正解でしょうか?(やってみれば分りますが・・・) 100回程度繰り返すと書きましたが、詳しくは(1)~(2)を十数パターン用意して、それをそれぞれを6~7回で約100回繰り返すというものです。 これなら(1)~(2)の十数パターンをサブルーチンにしてcallで呼び出せば(1)~(2)を何十回も書かなくてすみますよね?なんとなく解決したような気になってきました(素人の勘違いかもしれませんが・・)。 とりあえずこの思いついた方法で試してみます。アドバイスありがとうございました。

関連するQ&A

専門家に質問してみよう