2023.12.31
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第121回]



●SDカードIF(41)SDカードをWindows7に接続(14)CSVファイル(12)BINBIT、BINBIT2

とうとう大晦日です。
せめてSDカードについてぐらいは年内に終るつもりだったのですがとうとう来年に持ち越しです。
若いころは暮も正月も祝日も土曜も日曜もなく只々がむしゃらにがんばっていたものでした。
休みが無いのは今も同じなのですけれど、なんだか年々作業量が減ってきて無駄に過ごす時間ばかり増えてきているように思います。
やっぱりトシなのでしょうかねえ。

前回までのところでは十進数に続いて16進数についても書いてきました。
書いている途中でまた気が付いてしまいました。
PICのI/Oポートの入出力データは基本としては16進数なのですが、そのデータ(8ビット)をI/Oポートの各ビットごとの値の集合として見た場合には16進数ではなくてビット表現のほうがわかりやすいと思います。
たとえばPORTBから入力したデータが’A5’だったとします。
それだけでどのビットが1でどのビットが0かを知ろうとすると「ええっとビット7は1でビット6は…」なんて頭の中でビットに換算しなければならなくなってしまいます。
そのように考えると十進数でもなく16進数でもなくて8ビットをビットごとに表現することも必要なのではと思います。
’A5’はビット表現では’10100101’です。
数値として考えるとビットでの表現は全くわかりにくいです。
16進数のほうがわかりやすい場合もあるでしょうし十進数のほうがさらにわかりやすい場合もあると思います。
しかし8ビットのデータの特定のビットのON、OFF(1か0か)に意味がある場合にはやっぱりビットごとに表現したほうがわかりやすいでしょう。

ということで。
今度はバイナリデータからビットデータを作成するプログラムを作りました(やれやれ、です)。
作成したプログラムはBINBIT.EXEです。
BINBIT.EXEを実行しました。

いままでと同じようにTEST31.BINを読み込んでTEST31.CSVを作成しました。
そのあとDEBUGコマンドでTEST31.CSVの内容を確認しました。
8ビットのデータが0と1(ASCIIコードの30と31)だけのデータ列に変換されました。

そのように作成されたTEST31.CSVをTeraPadで開きました。

さすがにビット表示を横並びで行なうと見にくいですねえ。

ファイルの終わりのところです。


今度はExcelで開きました。

あれ?
ここでやっと気が付きました。
先頭の’0’が表示されていない!
実は前回までのところでもよくよく見ると16進数の00〜09をExcelで表示させているところでは0〜9になってしまっていました(その時点では気が付いていませんでした)。
Excelでは数値の先頭に0がある場合にはその0は表示されません(ゼロサプレス)。
然らばということで表示後にセルの書式を「文字列」に指定してみたのですけれど。

左詰の表示になりましたから数値ではなくて文字列になったことは確かですが、しかし消えた0はもとには戻りません。
こういうデータをExcelで扱うことは無理ということなのかもしれません。
とりあえずこの問題は一旦置くことにいたします(のちほどあらためて検討することにします)。

十進数データや16進数データではこのあとデータを縦に表示するプログラムや1行のデータ数を任意の数にすることができるプログラムを作りました。
ビット表現のデータを横に表示するのは見にくい感じですので文字数/行を指定するプログラムは作らないことにして縦に表示するプログラムを作りました。
プログラム名はBINBIT2.EXEです。
BINBIT2.EXEを実行しました。

BINBIT2.EXEを実行してTEST31.CSVが作成されたことやその後でDEBUGコマンドを実行してTEST31.CSVの内容を確認したことなどは今まで何回も行なってきた作業と同じです。
DEBUGコマンドとその中でのDコマンドの実行によってビットデータの区切りが改行コード(0D 0A)になっていることが確認できました。

作成されたTEST31.CSVをTeraPadで開きました。


こちらは終わりの部分です。


今度はExcelで開きました。

データが縦に揃って表示されているだけに一層ゼロサプレスが行なわれていることが目立ちます。

こちらは終わりの部分です。

ビット7が1ならば期待した通りの表示になります。
上のほうに書きましたようにExcelの「ゼロサプレス問題」については後日また書くつもりです。
と言っても本日は大晦日です。
その問題は越年してしまうことになりました。
来年の課題第1号です。

今年1年拙文にお付き合いいただき有難うございました。
来年も一層のお引き立てをお願いいたします。
それでは皆様。
よいお年をお迎えください。

PICBASICコンパイラ[第121回]
2023.12.31upload

前へ
次へ
ホームページトップへ戻る