
パナソニックのMN101というマイコンを使いたいのですが、特殊レジスタの定義方法がよくわかりません。
今までルネサスのマイコンを使っていて、ルネサスの方は#pragma addressと共用体をつかってバイトだけじゃなくてビット単位でレジスタに読み書き出来たのですが、パナソニックは#pragma addressが使えません。
サポートページでダウンロード出来る定義ファイルはバイト単位でしか読み書きできませんでした。
#pragma addressを使わずにビット単位で読み書きする方法を教えてください。
共用体で例えばPort1の中の1ビットをPort1.bit.b1みたいに読み書きする方法はわかったのですが、ルネサスのようにそれにP1_1と名前を付けて扱いたいです。

No.3ベストアンサー
- 回答日時:
Port1.bit.b1 というのが、メーカーの提供しているファイルに
定義されていればまず安全でしょう。
さて、 P1_1 という記述で、Port1.bit.b1 にアクセスするため
には、単純に、
#define P1_1 Port1.bit.b1
とするだけです。
ルネサスのものも、#pragma address の指定はビット演算とは
直接関係ありません。(単に、固定アドレスであることを明示
しているだけです)
ルネサスの定義ファイルの中でも、
union byte_def p1_addr;
#define p1 p1_addr.byte
#define p1_0 p1_addr.bit.b0 /* Port P10 bit */
のように指定されているのがわかると思います。
No.4
- 回答日時:
ルネサスの場合、コンパイラでサポートされて、マニュアルにも載っているので安心ですが、そうでないコンパイラで無理にやるのは危険だと思います。
インライン関数やマクロとかで妥協するのが無難ではないかと思います。
No.2
- 回答日時:
#SFRの定義じゃなくてSFRへのアクセス方法の定義、ですよね?
> 共用体で例えばPort1の中の1ビットをPort1.bit.b1みたいに読み書きする方法はわかったのですが、ルネサスのようにそれにP1_1と名前を付けて扱いたいです。
質問の目的がそこだけなら、普通にdefineすればいいのでは。
#define P1_1 (Port1.bit.b1)
というふうに。
#ってHEWのSFWもビット単位アクセスは同じような共用体使ってたような……
No.1
- 回答日時:
ビット単位でレジスタにアクセスする一般的な方法はありません。
パナソニックのマイコン用のコンパイラは何を使っているのか知りませんが、(私が使ったことがある)GCCの場合、ビットフィールドを使ってレジスタにアクセスするのは危険です。
ビット演算とシフト演算を駆使して操作を行うようにしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) PIC16F1シリーズマイコンのNCO機能について 1 2023/04/18 08:41
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- システム 外付けHDDの初期化について 4 2023/03/05 21:19
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- その他(プログラミング・Web制作) Visual Studio Code 関数の使い方について 3 2023/05/31 13:15
- システム 外付けHDDの初期化について 4 2023/03/05 20:00
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- au(KDDI) 特定の画面を見るとスマホが固まります ご覧頂き有難うございます。 特定のページを見るとスマホが固まり 1 2023/08/21 19:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
プログラマー達は何故、プログ...
-
最初に聞かれたこと
-
あってる
-
大量のデータを読み込んで表示...
-
c言語の問題の説明、各所ごとに
-
【C言語】全角文字の配列を、全...
-
visual studio 2022でのC#プロ...
-
gccを行ってもexeファイルが生...
-
C++でデスクトップGUIアプリ開...
-
プログラミング言語についてc++...
-
プログラム言語について c言語...
-
C#でログファイルにファイルパ...
-
c#のTLS1.2での通信について
-
int16_t の _t は何?
-
C言語 1から20までの逆数の和を...
-
C言語の関数のextern宣言
-
UART通信の取説で,left floati...
-
逆コンパイルと逆アセンブルの...
-
右ビットシフト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マイコンのビット
-
パソコンに詳しい方教えて下さ...
-
Windows上のファイル操作の履歴...
-
Outlookの「受信日時」「件名」...
-
TCP/IP のパケットの分断と結合...
-
Zipファイルをエクセルに指定変...
-
バッチファイルでディレクトリ...
-
別のフォルダにファイルを移動...
-
UDP受信時の通信異常検知について
-
ipadで社内ネットワークに接続
-
Outlookの「受信日時」「送信者...
-
どうしたらいいか教えて下さい。
-
Lhaplusが発したと、みられるエ...
-
バックアップの用語
-
C#にてCTI。RS232Cの受信と送信...
-
SystemWalker Centric Manager...
-
VC++メッセージの送受信につい...
-
複数のテキストファイルの特定...
-
グローバルIPアドレスを取得し...
-
Batファイルでhostsを追加したい
おすすめ情報