大人の科学から4bitマイコンの「GMC-4」が登場しました!
これを機会にたくさんの人がプログラミングやマイコンに興味を持ったら
面白くなるだろうなぁと考えています。
そこでGMC-4を紹介してみたいと思います。
・二進LED7個と数字LED1個とブザーを搭載
・直接打ち込みでプログラミング可能
・00〜4Fまでがプログラムメモリ(50〜5Fにも書き込み可能。実質は5Fまで)
・単3電池3個必要
と、このような仕様です。
これで何ができるんだ!と思う方もいると思いますが、
このように限界がはっきりしているからこそ何かができるんです!
ではGMC-4命令コードを見てみます。
Arのように小文字の「r」はレジスタの意。?は0〜Fの数がひとつ入ります。
A'rの「'」は補助レジスタを意味します。
コード(16進数) | 命令記号 | 実行フラグ | 説明 |
---|---|---|---|
0 | KA | 0,1 | 押されたキーをArに代入。押されていないなら実行フラグは1,押されたら実行フラグは0 |
1 | AO | 1 | Arの値を数字LEDに表示 |
2 | CH | 1 | ArとBr、YrとZrの値をそれぞれ交換 |
3 | CY | 1 | ArとYrの値を交換 |
4 | AM | 1 | Arの値をデータメモリの(50+Yr)番地に代入 |
5 | MA | 1 | データメモリの(50+Yr)番地の値をArに代入 |
6 | M+ | 0,1 | Arにデータメモリの(50+Yr)番地の値を足す。桁上がりしたとき実行フラグは1、それ以外は0 |
7 | M- | 01 | データメモリの(50+Yr)番地の値からArを引いてArへ代入。値がマイナスなら実行フラグは1、それ以外は0 |
8 | TIA ? | 1 | Arに指定した値(0〜F)を代入 |
9 | AIA ? | 0,1 | Arに指定した値(0〜F)を足す。桁上がりしたら実行フラグは1、それ以外は0 |
A | TIY ?/td> | 1 | Yrに指定した値(0〜F)を代入 |
B | AIY ? | 0,1 | Yrに指定した値(0〜F)を足す。桁上がりしたら実行フラグ1、それ以外は0 |
C | CIA ? | 0,1 | Arの値が?と同じなら実行フラグは0、違うなら実行フラグは1 |
D | CIY ? | 0,1 | Yrの値が?と同じなら実行フラグは0、違うなら実行フラグは1 |
F | JUMP ?? | 1 | 実行フラグが1なら??のアドレスに移動する。実行フラグが0ならそのまま素通りで実行フラグは1になる。 |
ここからはよく使える便利な命令です。
コード(16進数) | 命令記号 | 実行フラグ | 説明 |
---|---|---|---|
E0 | CAL RSTO | 1 | 数字LEDを消灯する |
E1 | CAL SETR | 1 | 2進LEDの一か所を点灯させる。YrにはそのLEDビット番号(0〜6)を代入しておく。 |
E2 | CAL RSTR | 1 | 2進LEDの一か所を消灯させる。YrにはそのLEDビット番号(0〜6)を代入しておく。 |
E4 | CAL CMPL | 1 | Arの二進数値の0と1を反転させる。(bit反転) |
E5 | CAL CHNG | 1 | Ar,Br,Yr,ZrとA'r,B'r,Y'r,Z'rの値を互いに交換 |
E6 | CAL SIFT | 0,1 | Arの値を1bit右へシフトする。もし元が偶数だったら実行フラグは1,奇数なら実行フラグは0になる。 |
E7 | CAL ENDS | 1 | エンドサウンドを流す |
E8 | CAL ERRS | 1 | エラーサウンドを流す |
E9 | CAL SHTS | 1 | ピッと短い音を鳴らす |
EA | CAL LONS | 1 | ピーと長い音を鳴らす |
EB | CAL SUND | 1 | Arで指定した音階(1〜E)を鳴らす |
EC | CAL TIMR | 1 | Arで指定しただけ処理を待つ。時間は(Ar+1)×0,1)秒 |
ED | CAL DSPR | 1 | データメモリの値を2進LEDに点灯する。5Fに上位3bit,5Eに下位4bitを入れておく。 |
EE | CAL DEM- | 1 | データメモリの値からArの値を引く。結果は十進数にしてメモリに格納。実行後、Yrの値が1引かれる。 |
EF | CAL DEM+ | 1 | データメモリの値にArの値を足す。結果は十進数にしてメモリに格納。桁上がりの場合、自動的にデータメモリが書き換わる。Yrの値が1引かれる。 |
このように30個の命令コードがあります。これを屈して様々なプログラムを作っていきます!