PICマイコンの開発環境であるMPLAB X IDEに備わっているデバッグ用のプログラミング言語Stimulus Control Languageを使って、自作のPICプログラムをデバッグしてみる記録です。今回はリテラルの表記と代入文、数値演算について。
リテラルの表記
SCLでは下表に示すいろいろな形式でのリテラル表記をサポートしています。
表記 | 意味 |
---|---|
1 | 10進数で1 |
B"10" | 2進数で10 |
8#70# | 8進数で70 |
10#10# | 10進数で10 |
16#FFFFFFFF# | 16進数でFFFFFFFF |
16#FFFF_FFFF# | 16進数でFFFFFFFF ('_'は無視される) |
1e9 | 10進数で1,000,000,000 (10億) |
'a' | 文字'a' |
"SCL" | 文字列"SCL" |
true | 真偽値true |
'1' | ピンへの代入の際はHigh |
'0' | ピンへの代入の際はLow |
なおSCLでは小数はサポートしていないので、たとえばアナログレジスタに3.5Vをセットしたい場合は、「3500 mv
」のように単位を調整して整数値になるようにしなければなりません……、と書いてあるのですが、現在のSCLのバージョンでは小数もサポートしているようです。「3.5 V」という表記でエラーが出ませんでした。
代入文
SCLにも当然代入文があるのですが、代入する対象によって演算子が異なります。
ピン、SFR、SFRフィールド、メモリ位置への代入
PICのピン(PORTAなど)、SFR(Special Function Register)、SFR内のフィールド、メモリアドレスに値をセットする場合、代入演算子として"<=
"を使います。
RA1 <= '1'; // RA1ピンをHighにする。 AN0 <= 3500 mv; // AN0レジスタに3.5 Vをセットする。 ADRESH <= 128; // ADRESHレジスタに128をセットする。 ADRESH <= 16#80#; // ADRESHレジスタに0x80をセットする。 ADRESH <= B"10000000"; // ADRESHレジスタに2進で10000000をセットする。 SSPCON1.CKP <= '1'; // SSPCON1レジスタのCKPフィールドに'1'をセットする。
ユーザ定義変数への代入
ユーザ定義変数への代入の場合は代入演算子として':='を使います。
intVar := 123; // intVarに123をセットする。 timeVar := 10 ms; // timeVarに10msをセットする。 strVar := "test"; // strVarに"test"をセットする。
整数演算
SCLでは整数に対する演算として四則演算(+, -, *, /)をサポートします。演算結果の代入も、代入先によって演算子を使い分けてください。
TMR1 <= TMR1 + 1; intVar := WREG / 5; sharedVar <= intVar + RCREG * 3 - 1;
コメント