ミュウロボ・パワーアップキット
ホーム | パーツ | 工作例 | ロボコン | ロボット教室 | ロボット制御
メロディのプログラム | センサープログラム | RCサーボの制御 | 入出力プログラム | モーターのPWM制御 | LEDの制御
MYU BASIC | MYUROBO転送ソフト | 構造化ドリトル | ドリトルでプログラム | ミュウアセンブラ |
ミュウロボ命令一覧 | ミュウアセンブラ一覧 | 構造化ドリトル制御命令一覧
基板のPIC16F630をPIC16F636に交換することでミュウロボをパワーアップすることができます。
ミュウロボ・パワーアップキットPIC16F636は送料込み800円で提供しております。
ご注文方法はこちら

<PIC16F636の特徴>
■EEPROMの容量が倍(256Byte)となりメモリも増えた
制御プログラムの容量が倍になり、より複雑なプログラムが可能になります。
インデックスメモリが12バイトから32バイトとなりMYU BASICで使える変数、配列、内部スタックの合計も32バイトとなった。
サブルーチンからサブルーチンを呼ぶネストも22まで可能。(従来は8まで)
※新しいPUSHA命令を多用するとネストは少なくなっていきます。
■内部クロックが4MHzから8MHz
処理速度が速くなります。ただし、タイマー1も256KHz(0.004mSec)と早くなりタイマー1を使ったプログラムは注意が必要です。
※タイマー1以外のプログラムは従来のままで使用できます。
■新しい命令を追加
1、ポートの入出力をビット単位で変更できます。用途によって入力ポートや出力ポートを増やすことが可能
TRISA ポートAの入出力をビットごと(0:出力 1:入力)に設定する
TRISC ポートCの入出力をビットごと(0:出力 1:入力)に設定する

※ポートを入力に設定した場合、ポートAはプルアップされますがポートCはされません。

2、転送ケーブルを通してパソコンのシリアル信号を受取ることができる
下のプログラムはハイパーターミナルを使いキーボードからロボットをリモート操作します。("1":右回り "2":前進 "3":左回り "4":停止)
※ハイパーターミナルは、9600bps StopBit=1 ノンパリティ フロー制御なしに設定します。
※転送ケーブルは一旦ケーブルを抜きをリミットスイッチを押して(プログラム実行)から再度接続します。
//転送ケーブルをつないだままロボットをリモート操作(MYU BASIC V1.1)
Do
  REMOTE GETRS    //GETRSで1バイトシリアル信号を受取る
Loop
Proc REMOTE(S)
  If S="1" Then
    PC=3      //左回り
  ElseIf S="2" Then
    PC=5      //前進
  ElseIf S="3" Then
    PC=36      //右回り
  ElseIf S="4" Then
    PC=0      //停止
  EndIf
EndProc

3、MYU BASICのコンパイラ効率が上がり、より大きなプログラムが可能
(以下の例ではコンパイルサイズが79バイトから51バイトになる)
//ポートAの0,1ビット(In2とIn3)の状態をブサーの回数で知らせる
Do
  BZ PAMASK() //プロシージャBZの呼び出し 引数に関数PAMASK()を使う
  Wait 10   //1秒のウエイト
Loop
Proc BZ(C)    //引数だけブザーを鳴らせる
  Do While C  //Cが0以外ならDo Loop間を繰り返す
    Buzzer 1 //ブザーを0.1秒鳴らす
    Wait 1
    --C    //C=C-1
  Loop
EndProc
Function PAMASK()  //プロシージャや関数は、引数の無い場合でも()で囲う
  PAMASK=PA AND 3 //ポートAの0,1ビットをマスクして戻り値とする
EndFunction

<MYU BASIC V1.1で追加したシステム変数(16F636専用)>
TRISA=<式>  設定専用:ポートAの入出力をビットごと(0:出力 1:入力)に設定する
例:TRSA=B'11000' ポートAの0-2ビットを出力に、3-4ビットを入力に設定
TRISC=<式>  設定専用:ポートCの入出力をビットごと(0:出力 1:入力)に設定する
※ポートを入力に設定した場合、ポートAはプルアップされますがポートCはされません。
READRS     取得専用:シリアルポートのデータがある場合はその値が返され、ない場合は0が返される
GETRS      取得専用:シリアルポートから1バイトデータを読み込むまで待ち、値を返す
※MYU BASIC V1.1ではCPUを右図のようにドロップダウンリストから16F636を選択してコンパイルします。
<MYU BASIC V1.1で追加したSTEPボタン(16F636専用)>
PCとミュウロボ制御基板を転送ケーブルで接続したままSTEPボタンを押すとプログラムのステップ動作ができます。

<PIC16F636で追加した命令、レジスタ>
IXP:インデックスポインタレジスタ プロシージャや関数の位置を示すレジスタ

命令 引数 解説 Code
TRISA 1 ポートAの入出力をビットごと(0:出力 1:入力)に設定する 75
TRISC 1 ポートCの入出力をビットごと(0:出力 1:入力)に設定する 76
PUTA 1 IX = IXP - 引数(1-255)を実行後、Aレジスタの値をIXMにセット 77
GETA 1 IX = IXP - 引数(1-255)を実行後、IXMの値をAレジスタにセット 78
IXP 1 IXPレジスタに引数(0-255)をセット 79
PUSHA 0 スタックにAレジスタの値を保存 176
POPA 0 スタックから値を取り出しAレジスタにセット 177
INCIXP 0 IXPレジスタ = IXPレジスタ + 1 178
DECIXP 0 IXPレジスタ = IXPレジスタ - 1 179
AIXPM 0 IX = IXPを実行後、Aレジスタの値をIXMにセット。IXP = IXP + 1する 180
IXPMA 0 IXP = IXP - 1した後、IX = IXPを実行。IXMの値をAレジスタにセット 181
XCHGARG1 0 AレジスタとARG1レジスタの値交換 182
ANDARG1 0 Aレジスタ = Aレジスタ AND ARG1 183
ORARG1 0 Aレジスタ = Aレジスタ OR ARG1 184
XORARG1 0 Aレジスタ = Aレジスタ XOR ARG1 185
READRS 0 シリアルポートのデータがある場合、キャリーフラグがセットされ値がAレジスタに保存される
データがない場合、キャリーフラグとAレジスタがクリアされる
186
INIT 0 ポートを初期化する 187