R8C I/Oポートの仕組み SFR定義ファイルの中身.

Slides:



Advertisements
Similar presentations
プログラミング演習Ⅱ 課題 4 第 2 週 画像ファイル (ppm) の読み書き 画像データ用のメモリ確保・解放 1.
Advertisements

構造体 構造体とは? 複数のデータをパックしたもの。 新しい “ 型 “ として使用できる. 構造体 キーワード struct strcut は構造体を宣言する命令。 struct { double x,y; }a,b,c; ↑ ここまでが宣 言 ← この形式で、構造体 a,b,c, を定 義.
第 10 回 宿題 出題日: 12 月 14 日 締切日: 12 月 21 日. 提出について 以下の場合は、出題日の出席を欠席とする 締切日を過ぎた場合 正解率が 7 割未満の場合 提出は、 PDF ファイルを印刷して、それに答 えを書いて提出すること。
C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
1 全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える 処理後のデータを出力ファイルに書き出す 画像データ用に確保したメモリを解放.
Step.5 パケットダンプ Wiresharkでパケットをキャプチャする PC 1 PC 2 PC 3 PC 4 ネットワーク
アルゴリズムとデータ構造 第2回 線形リスト(復習).
A B x y z 復習 構造体変数 普通の変数 x y z 構造体変数 x y z 箱のイメージ 引き出しのイメージ
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
計算機アーキテクチャ特論Chapter.6.6~6.9
課題解説: 関数の引数にポインタを使って2数を入れ替える
データ構造とアルゴリズム 第10回 mallocとfree
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
基礎プログラミングおよび演習 第9回
アルゴリズムとデータ構造 2011年6月13日
構造体.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
情報処理Ⅱ 2007年12月10日(月).
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
プログラミング 3 構造体(1).
第10回 プログラミングⅡ 第10回
プログラミング論 関数ポインタ と 応用(qsort)
Cプログラミング演習 中間まとめ2.
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
Cプログラミング演習 第7回 メモリ内でのデータの配置.
精密工学科プログラミング基礎 第10回資料 (12/18実施)
R8C/Tiny I/Oポートの仕組み.
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
プログラミング 3 構造体(2).
第7回 プログラミングⅡ 第7回
アルゴリズムとデータ構造 補足資料4-1 「メモリと配列」
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
第11回 プログラミングⅡ 第11回
演習2の解答例 2006年12月22日 海谷 治彦.
R8C/Tinyマイコンの基礎.
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
データ構造とアルゴリズム 第11回 リスト構造(1)
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
ポインタとポインタを用いた関数定義.
アルゴリズムとデータ構造 2012年6月11日
プログラミング論 ポインタ
アルゴリズムとデータ構造1 2009年6月15日
ネットワーク・プログラミング Cプログラミングの基礎.
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
プログラミング論 構造体
ドキュメントジェネレータ 詳細仕様 長谷川啓
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
アルゴリズムとデータ構造 補足資料7-1 「メモリでの『構造体の配列』」
アルゴリズムとデータ構造 2010年6月17日
ソフトウェア工学 知能情報学部 新田直也.
全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング演習II 2003年11月19日(第6回) 木村巌.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
マスク合成(のような処理) 出力画像 Out 入力画像1 In1 In1 In2 Out 入力画像2 In
左右反転と180度回転 [0][xsize – 1] [0][0] → i ↓ j [ysize – 1][xsize – 1]
TList リスト構造とは? 複数のデータを扱うために、 データの内容と、次のデータへのポインタを持つ構造体を使う。
C言語講座第5回 2017 構造体.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

R8C I/Oポートの仕組み SFR定義ファイルの中身

SFR定義ファイルとは sfr_r815.hファイル p1_1などの変数名をプログラム中で利用でき るようにする I/Oポートへのアクセスの場合、1バイト単位の アクセス以外に、1ビット毎(1つのI/Oポート 毎)のアクセスもできるようにしている

SFR定義ファイルの中身 #pragma ADDRESS p1_addr 00E1H : struct bit_def{ char b0:1; char b1:1; char b2:1; char b3:1; char b4:1; char b5:1; char b6:1; char b7:1; }; union byte_def{ struct bit_def bit; char byte; union byte_def p1_addr;

SFR定義ファイルの中身 #pragma ADDRESS p1_addr 00E1H : struct bit_def{ char b0:1; char b1:1; char b2:1; char b3:1; char b4:1; char b5:1; char b6:1; char b7:1; }; union byte_def{ struct bit_def bit; char byte; union byte_def p1_addr; #pragma(「プラグマ」)とは、コンパイラに特定の情報を渡すために使用するコンパイラ指令です。 この中身は、コンパイラごとに異なっています。 この場合は、p1_addrという変数名を、アドレス00E1に強制的に割り当てています。 こうすることで、p1_addrという変数名でSFRの00E1アドレスへアクセスできるようになります。

SFR定義ファイルの中身 #pragma ADDRESS p1_addr 00E1H : struct bit_def{ char b0:1; char b1:1; char b2:1; char b3:1; char b4:1; char b5:1; char b6:1; char b7:1; }; union byte_def{ struct bit_def bit; char byte; union byte_def p1_addr; これはbit_def構造体の定義です。 char b0:1;と宣言すると1ビットのデータとなります。 この構造体のサイズは全部で8ビットです。(b0~b7) この構造体の変数を作成した場合   構造体変数名.b0 などの方法で、対応するビットへアクセスできます。 プログラム 構造体変数名.b0=1; x=構造体変数名.b1 構造体に対応したメモリ 5V 1 1 b7 b6 b5 b4 b3 b2 b1 b0

SFR定義ファイルの中身 #pragma ADDRESS p1_addr 00E1H : struct bit_def{ char b0:1; char b1:1; char b2:1; char b3:1; char b4:1; char b5:1; char b6:1; char b7:1; }; union byte_def{ struct bit_def bit; char byte; union byte_def p1_addr; これはbyte_def共用体の定義です。 bitというメンバ変数(bit_def型)と、byteというメンバ変数(char型)は、どちらも8ビットのデータです。 この共用体のサイズは全部で8ビットです。 この共用体の変数を作成した場合   共用体変数名.byte の方法で、8ビット全体にアクセスできます。 この共用体の変数で   共用体変数名.bit.b0 の方法で、1ビット毎にアクセスできます。 プログラム 共用体変数名.bit.b0=1; 共用体変数名.byte=0x0F; 構造体に対応したメモリ 0 0 0 0 1 1 1 1 1 b7 b6 b5 b4 b3 b2 b1 b0

SFR定義ファイルの中身 #pragma ADDRESS p1_addr 00E1H : struct bit_def{ char b0:1; char b1:1; char b2:1; char b3:1; char b4:1; char b5:1; char b6:1; char b7:1; }; union byte_def{ struct bit_def bit; char byte; union byte_def p1_addr; これが実際の変数の宣言です。 変数名p1_addrはbyte_def共用体の変数として定義されています。 #pragmaでアドレスを00E1に割り当てているので、SFRにアクセスする変数となっています。 プログラム p1_addr.bit.b0=1; メモリのSFR領域  00E1 1 b7 b6 b5 b4 b3 b2 b1 b0

SFR定義ファイルの中身2 #define p1 p1_addr.byte #define p1_0 p1_addr.bit.b0 : #defineでp1_0などがプログラム中で利用できるように定義しています。 こうすることで、p1_0がSFR内のポート1のビット0にアクセスできるようになります。