PICAXE 最初に調べた事

## 使える変数
PICAXEで用意されているのは、CPU毎に異なります。変数名はw0やb0とシステムで決められた値を使用します。アセンブラに近いですね。

・PICAXE-28X2　使える変数:56byte
　word変数　w0〜w27
　byte変数 b0〜b55

・PICAXE-14M2,PICAXE-18M2,PICAXE-20M2 使える変数:28byte
　word変数　w0〜w13
　byte変数 b0〜b27
　
小数点は使えない
整数しか使えない。 byte変数(8bit)で0～255、word変数(16bit)で0～65535。
負は扱えない

c言語の変数の型で例えると、unsigned char(b0〜b27) と unsigned int(w0〜w13) のみ扱えます。

byte変数は、word変数から1byteづつ使用される。（共有）
例 w0 b0:b1
   b0 使用時は w0 が使えないので注意

## 変数はsymboleコマンドで変更できる
w0 を、symbol gAccCont = w0 と宣言すると、以降 gAccCont と使える。
b0 を、symbol gAdcDat = b0 と宣言すると、以降 gAdcDat と使える。
c.1 を、symbol CH1ADCPORT = c.1　と宣言すると、以降 CH1ADCPORT と扱える。

symbol ADCHth = 200　と宣言すると、ADCHth が 200 と使える。
C言語の定義命令で表すと #define ADCHth 200 です。

## PICAXE と PICの対応
・PICAXE-08M2+　PIC12F1840
・PICAXE-14M2　 PIC16F1825
・PICAXE-18M2+　PIC16F1847
・PICAXE-20M2　 PIC16F1829

通常 IC PKG に PICAXE の刻印がありますが、PIC刻印があるタイプもある
https://picaxe.com/what-is-picaxe/picaxe-chip-labels/

参考サイト 電気の迷宮 PICAXEについて
http://eleclabyrinth.blog.fc2.com/blog-entry-2.html


## PICAXE のシリアルデバック
4800bpsであれば、Terminal を使用したデバック文字の送信ができた。
AXE027 PICAXE USB経由で文字を送信できるのでかなり便利です。
※なおボーレートの変更ができるようですが、わからなかった。
![ターミナル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111210/7a8ffd68-95cc-244f-ac06-3dfd5cd3c67c.png)

![ターミナル2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111210/607f00a3-4014-c938-804b-339cbcdb485b.png)

参考 hello, world
```cpp
main:
    SerTxd( "hello, world", cr, lf )
    pause 1000
    goto main
```
![hello_world.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111210/aa0eb30f-f12a-ae35-1d8e-e81e842a9bc8.jpeg)

## PICAXE のADC取り込み
A/Dコンバートした結果を8bitで取り込んで、値をシリアル値で確認したい。

```cpp
	adcconfig %000　; b2 = 0 VRef- is 0V , b1-0 = 00 VRef+ is V+ (power supply)
main:
    readadc c.1,b1              ; port c.1 から A/Dコンバータした結果を b1 に格納
	sertxd("b1:", #b1, cr, lf)　　　　； b1の内容を B1:dd に文字変換して、シリアル出力　
	pause 1000　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　   ; 1秒ウエイト
	goto main
```

## PICAXEのdebugコマンド
PICAXEのdebugコマンドを使用すると右側の窓部分で変数がリアルタイムで見られてよいですね。
ただしプログラムがかなり遅くなります。
仕組み的には、w0〜w13 をシリアルで送り続けていまして、その受信した結果を表示しています。

https://twitter.com/masashi_214/status/1741345276936540188

参考 剣菱Pさん PICAXEを使ってみる。【第６回】　debugコマンド
https://www.nicovideo.jp/watch/sm20899746

## システム変数 time

timeというワード変数に、カウントアップされます。
time = 0　と強制的に初期化しても良いらしい。

```cpp
main:
    time = 0
    
    do
    while time < 10
    
    high b.0
    pause 1000
    low b.0
goto main
```
## time のオーバーフロー
以下のように time に 0xfff9 を代入して debug で　レジスターを眺めると。
最大65535なので約18時間でオーバーフローですね。

```cpp
main:
	time = 0xfff9

g:
	w0 = time
	debug
	pause 100
	goto g
```

https://twitter.com/masashi_214/status/1741621217730433104

## Error: Can't open port COM1.

https://note.com/ndenki/n/n86afa3051d1c

## ソース内の日本語コメント（２バイト文字）の文字化け対応
https://qiita.com/SOYOKAZE-S/items/1dd66ca16290d571182e

## PICAXE関連の投稿
PICAXE（ピカクス）でLチカ
https://qiita.com/masashi_214/items/5495503bf6bd82c1980b
PICAXE 最初に調べた事
https://qiita.com/masashi_214/items/d1acb1ecdc32de5a1698
PICAXEで鉄道模型の在線検出と信号機の制御
https://qiita.com/masashi_214/items/c728814df4f7a2453112
PICAXE（ピカクス）のポート設定
https://qiita.com/masashi_214/items/e5d5e1b9817aed754f52
PICAXE（ピカクス） リンク集
https://qiita.com/masashi_214/items/8b630b2c60ddb466b1ac
PICAXE（ピカクス）のpwm設定
https://qiita.com/masashi_214/items/f92e52837a9fa902879f
PICAXEでPWMを使用した調光機能を使って蛍を作る
https://qiita.com/masashi_214/items/0231a75ae0c77c2be206