WinAVRで,特に属性を付けずに変数を定義すると,AVRのRAM空間上に置かれる。
AVRはハーバードアーキテクチャーなんで,プログラムがあるFlash ROMとRAMは別のバスにつながれている。
よく使われる整数データの型は,<inttypes.h>にまとめられている。
<avr/io.h>をインクルードすると,<avr/sfr-defs.h>経由で,<inttypes.h>が自動的にインクルードされる。
定数は,"const"キーワードで定義する。
整数型名 | 変数サイズ | 表現できる範囲 |
int8_t | 1 | -128~127 |
uint8_t | 1 | 0~255 |
int16_t | 2 | -32768~32767 |
uint16_t | 2 | 0~65535 |
int32_t | 4 | -2147483648~2147483647 |
uint32_t | 4 | 0~4294967295 |
int64_t | 8 | -9.22*10^18~9.22*10^18 |
uint64_t | 8 | 0~1.844*10^19 |
const uint8_t ver = 10; // RAM上に定数を設定
定数宣言は,その後値を代入などで変更できないことを除けば,初期値付き変数確保と違いはない。この定数値はFlash ROM上ではなく,RAM上に置かれる。RAM容量は少ないので,あまりこのような使い方はしない。
新しくコメントをつける