急遽アセンブラーのプログラムを書く必要が出てきてしまいました。cpuは8051互換です。お勧めのアセンブラーはどれでしょうか。またアセンブラー初心者なので本もご紹介いただけると助かります。ちなみに書く必要がでてきたプログラムは8051の外部タイマー出力に接続されたI2C BUS EEPROM(24C16)にI2C BUSエミュレートし読み書きするプログラムです。サンプルプログラムはあるのですが、CPUの動作クロックの違いや内部タイマーの誤差の問題か書き込みタイミングの問題でデータが化けるので安定させたいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/11/11 15:49:14
  • 終了:--

回答(1件)

id:garyo No.1

garyo回答回数1782ベストアンサー獲得回数962004/11/11 16:17:48

ポイント130pt

>わたしが欲しいのは8051の基本的なインストラクションとかの情報なので「MCS(R) 51 Microcontroller Family User’s Manual」

基本の資料として上記の「MCS(R) 51 Microcontroller Family User’s Manual」はどうでしょうか。

I2Cでのデータ化けということであれば、まず、I2Cのデバイス側のセットアップ時間、ホールド時間をちゃんと満たしているか、また波形がなまったり、ノイズが乗っていないかオシロで確認するといいと思います。配線は太く短くローインピーダンスにしておかないとノイズに弱くなります。

CPU側で書き込んだ後、データを読み出して正しい値が書かれているかコンペアして確認したほうがいいですよ。

http://sdcc.sourceforge.net/

SDCC - Small Device C Compiler

SDCC - Small Device C Compiler

8051 ソフトウェア開発ツールv7.0

id:okuyama

とても参考になります。ありがとうございます。

ご紹介いただいたのはcコンパイラですね。

すでにあるサンプルプログラムがアセンブラ

なのです。cで書くとコンパイル後のサイズは

どうなのでしょうか。ターゲットのFLASH ROMの容量的にぎりぎりなのですが。

2004/11/12 21:51:35
  • id:garyo
    アセンブラなら

    ちょっとめんどくさいかも知れませんが、
    1.asm()文を使う
    組込み系で使うCコンパイラであれば大抵持っています。

    2.Cコンパイラの中入っているアセンブラを使う
    通常のコンパイラはプリプロセッサ、コンパイラ、アセンブラ、リンカと分かれているのでその中のアセンブラとリンカを使います。
    これはコンパイラの構成に依存するので、使えるかどうかは現物を見ないとわかりませんが。

    3.Cで書く
    この場合標準ライブラリを一切組み込まなければ、かなりサイズは小さくなるはずです。インクルード文を一切使わないわけですね。昔8bitCPUの頃は良くやってました。URLはI2Cバスの説明です。通信だけなら簡単です。

    後、仕事でやるのか、勉強でやるのか、趣味でやるのかで回答が変わってくるかも知れません(使えるお金や仕上げのレベルが変わる)。
    http://www.necel.com/ja/faq/mi78k/__78iic.html
  • id:taknt
    Cなど使わずに

    直接 アセンブラを使ったほうがいいですね。

    http://www.vector.co.jp/soft/dos/prog/se008546.html
    http://www.vector.co.jp/soft/dos/prog/se016483.html
  • id:kurukuru-neko

    日本フィリップス I2Cの資料

    http://jp.nxp.com/products/interface_control/i2c//

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません