---
---
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