---
---
PIC18F用のコンパイラであるXC8にも、標準文字出力関数である printf が標準で装備されています。この関数はPIC18F14K50でも使用することはできますが、メモリー使用量が大きいため、あまり使用しませんでした。 しかし、メモリ容量に余裕がある場合は、これら便利な関数を大いに利用するべきです。
標準文字出力関数のうち特に有益な関数は printf でしょう。整数値を自由に構成(フォーマット)して出力することが可能です。XC8の場合、この関数の初期設定では、出力に何も指定されていません、LCD表示で printf を利用可能にするには、今までのプログラムに以下を追加する必要があります。
これで、標準出力チャネルにユーザー出力(LCD)が登録されます。
以下に printf の使用例を示します。
| format | 使用例 | 表示結果 | 説明 |
|---|---|---|---|
| %d | printf("%d",123); | 123 | 10進表示 |
| %u | printf("%u",123); | 123 | 符号なし10進表示 |
| %X | printf("%X",123); | 7B | 16進大文字表示 %x は小文字表示 |
| printf("%4X",123); | 7B | 桁数指定 数値の前に2つスペースが入る | |
| %X 変数 |
char num = 0x3B; printf("%04X",num); |
003B | 16進4桁 変数を指定する 桁数指定のまえにゼロを付加するとゼロ詰めになる |
| %c | printf("%c",'A'); | A | 1文字を表示 |
| 文字列 | printf("LCD test"); | LCD test | 文字列を表示 |
| char str[] = "LCD test"; printf(str); |
LCD test | 文字列の配列変数を表示 | |
| 組合せ | char num = 0xA7; printf("out=%04X",num); |
out=00A7 | 文字列"out="と変数を表示 |
| char num = 0xA7; char str[] = "IN"; printf("%s=%04X",str,num); |
IN=00A7 | 文字列配列と数値変数、及び 直接指定文字 "=" を組み合わせて表示 |
sprintf を使うとフォーマットした文字列を直接標準出力に出力するのではなく、指定した文字配列に書き込むことができます。その使用例を以下に示します。
#include <stdio.h>
int main(void)
{
char sbuf[100],
s[]="Print this string";
int x = 1, y;
char a = '\n';
y = sprintf(sbuf, "%s %d time%c", s, x, a);
printf("Number of characters printed to "
"string buffer = %d\n", y);
printf("String = %s\n", sbuf);
}
Example Output ----------------------------------
Number of characters printed to string buffer = 25
String = Print this string 1 time