![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PIC16F84のプログラムでこのようなものを作りました。
revel1 movlw75
movwftm3
movlw255
movwftm4
no1_on movrb,#11110000b ;(1)
movrb,#10000000b
movrb,#11000000b
movrb,#10100000b
movrb,#11000000b
movrb,#10000000b ;(2)
decfsztm4,1
gotono1_on
decfsztm3,1
gotono1_on
これは、(1)~(2)の動作を75×255=19125回(多分)繰り返すという物です。
同様の処理を多数行ないたいのですが、プログラムしてみたところ、容量オーバーの為か?アセンブルできませんでした。これを同様の動作でもう少しシンプルに出来ないでしょうか?よろしくお願いします。
No.2ベストアンサー
- 回答日時:
補足拝見しました。
movlwの問題ではないと言う事ですね。
そして、約100回、同じ物を書かれたのでしょうか?
とすると、やはり、容量オーバーしますね。
PICにはあまりプログラム領域はありませんから。
MPLABだと、確かに容量オーバーでアセンブルできないと
思います。(もっと高価なアセンブラをお使いでしたら失礼!)
(1)~(2)を数十パターン用意するのでしたら
やはり、CALL命令が良いと思います。
そういう書き方は、PICが一番得意とする処です
(プログラムカウンタの扱いは柔軟なのに
プログラムそのものはガチガチなのが、PICの特徴ですから)
ありがとうございます。
アセンブラはどこかのHPでフリーで入手したものでして、高価な物でないことは間違い無いです。といっても本当に素人レベルなので違いは分りませんが(^_^;)。
やはり、CALL命令ですか。実は最初一生懸命約100回分を書き込んでアセンブルしてました(今から思えばよくやったものです・・・)。
CALL命令ならかなりスマートに出来そうですね。
とりあえずそれでトライしてみます。
ありがとうございました。
No.1
- 回答日時:
これだけだと判断が付かないのですが
容量オーバーと言うことは無いでしょう。
エラーは何が出ましたか?
アセンブラは何ですか?
tm3,tm4はちゃんと定義されていますか?
10進数と16進数はちゃんと区別していますか?
そして、もしかして.....ですが、
秋月のアセンブラにはバグがあることをご存じですか?
movlwは上手く動きません。
mov命令を代用して下さい
ありがとうございます。
すいません、説明不足のようでした。
プログラムを多数繰り返すとありましたが、(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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- オンラインゲーム 15年位前?のロボットをプログラムしてアリーナで戦うゲーム 1 2022/06/08 22:32
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- システム CPUの問題について 2 2022/07/09 12:04
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(プログラミング・Web制作) Windows上のプログラム。「予め決められた時刻に自分で起動して処理して自分で終了する」って可能? 3 2023/01/04 14:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PDP-11のアセンブラ課題
-
アセンブラで割り算
-
アセンブラ言語がわかりません。
-
MASMの擬似命令「ASSUME」について
-
バイナリの実行ファイルをgccを...
-
PICアセンブラ、これって変?
-
PIC16F84のプログラム
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
文系のSE志望です。プログラミ...
-
昔のゲーム製作に使用する言語...
-
68000アセンブリについて
-
PLC 命令について
-
8ビットのデータの、先頭ビット...
-
一般のソフトで画像を扱う場合...
-
レジストってなんですか?
-
03分22秒36のような時間の単位...
-
入力回数のカウントをする方法
-
アセンブリ言語の質問のコト
-
2進数が10進数になる途中式
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
実行ファイルからソースはみれる?
-
アセンブラ言語がわかりません。
-
アセンブラエディタ
-
バイナリの実行ファイルをgccを...
-
ニーモニックコードを使って割...
-
アセンブラで割り算
-
PC-9801でマシン語を学習するに...
-
このアセンブラの意味を教えて...
-
最初のアセンブラ
-
PICはアセンブラとC言語のどち...
-
アセンブラのLA
-
アセンブラ言語で質問です。
-
【H8マイコン】HEWで埋め込みア...
-
PDP-11のアセンブラ課題
-
[C言語→アセンブリ言語]はどう...
-
アセンブラの配列処理
-
PICに書き込むプログラムや変数...
-
PICのアセンブラからC言語へ変...
おすすめ情報