【改訂版】C言語によるPICプログラミング入門

[表紙]【改訂版】C言語によるPICプログラミング入門

紙版発売

B5変形判/456ページ/CD1枚

定価3,278円(本体2,980円+税10%)

ISBN 978-4-7741-3778-0

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

PICマイクロコントローラとは,米マイクロチップテクノロジー社が発売する小型・廉価のワンチップマイコンで,さまざまな電気製品の制御・計測に使われています。本書は,このPICマイクロコントローラをC言語によって制御する手法について詳細に解説したものです。

CCS社のC言語を使用して,さまざまなプログラミング手法を丁寧に解説しています。改訂版はPIC16F/18Fいずれにも対応した内容で,付録のCDROMには本書に掲載したプログラムすべてを収録しています。PICを手軽に,そして,高度に使ってみたい方にお勧めの1冊です。

こんな方におすすめ

  • 制御設計技術者,PICプログラマ,ロボット技術者等を目指すエンジニア,学生
  • C言語を用いた制御系プログラミングに挑戦したい方

目次

第1章 C言語とは

1-1 プログラムとは

  • 1-1-1 コンピュータの構成
  • 1-1-2 プログラムと命令
  • 1-1-3 2進数と16進数

1-2 C言語とは

  • 1-2-1 アセンブリ言語から
  • 1-2-2 C言語の歴史
  • 1-2-3 C言語の特徴

第2章 PICの概要

2-1 PICとは

  • 2-1-1 PICの概要
  • 2-1-2 PICのアーキテクチャ概要
  • 2-1-3 PICのメモリ構成
  • 2-1-4 命令の構成
  • 2-1-5 特殊レジスタ

2-2 プログラム開発環境

  • 2-2-1 基本環境
  • 2-2-2 MPLAB IDE
  • 2-2-3 PICプログラマ

第3章 PIC用Cコンパイラ

3-1 PIC用Cコンパイラ

3-2 CCS社Cコンパイラ

  • 3-2-1 CCS社Cコンパイラの構成
  • 3-2-2 CCS社Cコンパイラの概要
  • 3-2-3 制約事項

3-3 PCM/PCH のインストール

  • 3-3-1 PCM/PCHのインストール
  • 3-3-2 MPLABとの統合

3-4 PCM/PCHの使い方

  • 3-4-1 C言語でのプログラム作成の流れ
  • 3-4-2 プロジェクト作成
  • 3-4-3 ソースファイルの作成
  • 3-4-4 コンパイル

3-5 デバッグ方法

  • 3-5-1 MPLAB IDEのシミュレータによるデバッグ
  • 3-5-2 MPLAB ICD2による実機デバッグ
  • 3-5-3 標準入出力関数によるデバッグ

3-6 PICへの書き込み

  • 3-6-1 PICkit2プログラマによる書き込み
  • 3-6-2 MPLAB ICD2による書き込み

第4章 演習用ハードウェア

4-1 演習用PIC汎用ユニット

  • 4-1-1 概要
  • 4-1-2 機能仕様と回路
  • 4-1-3 インタフェース仕様
  • 4-1-4 外部機器の接続
  • 4-1-5 使用パーツ
  • 4-1-6 組み立て方

第5章 C言語のプログラムとは

5-1 C言語プログラムの基本構成

  • 5-1-1 プログラムの基本構成
  • 5-1-2 関数と式とデータ

5-2 プログラム書式と記述スタイル

  • 5-2-1 書式の約束
  • 5-2-2 プログラミングスタイル
  • COLUMN MPLAB IDEのエディタ関連の設定

5-3 main関数

  • COLUMN アセンブリ言語とC言語

第6章 まず動かしてみよう

6-1 デバイス指定とコンフィギュレーション

  • 6-1-1 デバイス指定と#include
  • 6-1-2 コンフィギュレーションと#fuses
  • COLUMN コンフィギュレーションビット

6-2 入出力ピンの制御

  • 6-2-1 PICの入出力ピン
  • 6-2-2 C言語でのプログラミング
  • COLUMN PICの入出力ピンの回路構成

6-3 標準入出力関数の使い方

  • 6-3-1 RS232Cを使えるようにする
  • 6-3-2 printf文
  • COLUMN パソコン側はハイパーターミナル

第7章 プリプロセッサ

7-1 プリプロセッサの分類と一覧

7-2 記号定義とファイルインクルード

  • 7-2-1 記号定義プリプロセッサ
  • 7-2-2 ファイルのインクルード

7-3 条件付きコンパイル

  • 7-3-1 #if文の使い方
  • 7-3-2 #ifdef文の使い方
  • 7-3-3 #error文の使い方

7-4 デバイス特有の制御用プリプロセッサ

  • 7-4-1 ページとプログラムの配置
  • 7-4-2 #inline と#separate
  • 7-4-3 バンクと変数の配置
  • COLUMN EEPROMデータメモリに初期値を定義する方法

第8章 プログラム構造とフロー制御関数

8-1 3種類の基本構造

  • COLUMN 中括弧の使い方

8-2 if文の使い方

  • 8-2-1 if文の書式
  • 8-2-2 if 文のネスト
  • 8-2-3 条件式の記述方法
  • 8-2-4 複合条件式の記述方法

8-3 while文とdo while文

  • 8-3-1 while文
  • 8-3-2 do while文

8-4 for文の使い方

8-5 switch文の使い方

8-6 break文とcontinue文

  • 8-6-1 break文
  • 8-6-2 continue文
  • COLUMN 構造化プログラミングとは

第9章 データ型と演算子

9-1 データ型の種類と書式

  • 9-1-1 数値定数の書式
  • 9-1-2 変数とデータ型
  • 9-1-3 変数の宣言書式
  • 9-1-4 文字コードとchar型
  • 9-1-5 文字型データの書式と文字列

9-2 演算子の使い方

  • 9-2-1 算術演算子と自動型変換
  • 9-2-2 関係演算子と論理演算子
  • 9-2-3 インクリメント演算子とデクリメント演算子
  • 9-2-4 ビット演算子とシフト演算子
  • 9-2-5 その他の演算子
  • 9-2-6 演算子の優先順位

第10章 モジュール化と関数

10-1 プログラムのモジュール化

  • 10-1-1 構造化プログラミング手法
  • 10-1-2 よいプログラムとは

10-2 関数の作り方

  • 10-2-1 関数の基本書式
  • 10-2-2 引数と戻り値
  • 10-2-3 関数のプロトタイプ宣言

10-3 変数の記憶クラスと有効範囲

  • 10-3-1 変数の性質と有効範囲(スコープ)
  • 10-3-2 ローカル変数とグローバル変数
  • 10-3-3 実際の例

第11章 標準関数と標準入出力関数

11-1 標準関数

  • 11-1-1 標準関数
  • 11-1-2 CCS社独自関数
  • COLUMN メモリ処理関数は高速

11-2 標準入出力関数

  • 11-2-1 標準入出力関数の一覧
  • 11-2-2 putc関数とgetc関数
  • 11-2-3 printf関数の拡張
  • 11-2-4 puts関数とgets関数

第12章 配列とポインタ

12-1 配列とは

  • 12-1-1 配列の書式
  • 12-1-2 配列の使い方

12-2 文字列の扱い

12-3 ポインタ

  • 12-3-1 ポインタ変数
  • 12-3-2 配列とポインタ
  • 12-3-3 関数の引数とポインタ
  • 12-3-4 関数の引数と配列
  • COLUMN ポインタのメカニズム

第13章 構造体と共用体

13-1 構造体

  • 13-1-1 構造体の定義と宣言
  • 13-1-2 構造体メンバーの参照
  • 13-1-3 ビットフィールド
  • 13-1-4 構造体の配列
  • 13-1-5 構造体へのポインタ

13-2 共用体

  • 13-2-1 共用体の定義書式

13-3 列挙型

第14章 PIC16F/PIC18F共通組み込み関数

14-1 ディレイ関数

  • 14-1-1 ディレイ関数の概要
  • 14-1-2 ディレイ関数の使い方

14-2 入出力ピンの制御

  • 14-2-1 入出力モード設定
  • 14-2-2 入出力ピン制御用組み込み関数

14-3 ダイナミック点灯制御

  • 14-3-1 セグメント発光ダイオードの概要
  • 14-3-2 点灯制御方法
  • 14-3-3 具体例

14-4 液晶表示器の制御

  • 14-4-1 液晶表示器の概要
  • 14-4-2 インタフェース仕様
  • 14-4-3 初期化手順
  • 14-4-4 液晶表示器制御ライブラリ
  • 14-4-5 ライブラリ使用例

14-5 内蔵EEPROMの使い方

  • 14-5-1 内蔵EEPROMの概要
  • 14-5-2 内蔵EEPROM用組み込み関数
  • 14-5-3 内蔵EEPROMの使用例

14-6 USARTモジュールの使い方

  • 14-6-1 非同期式(調歩同期式)での動作
  • 14-6-2 USART制御レジスタ
  • 14-6-3 アドレスビットの使い方
  • 14-6-4 USART用組み込み関数
  • 14-6-5 USARTの使用例(受信割り込み例)

14-7 MSSPモジュールの使い方(SPI 通信)

  • 14-7-1 SPI通信の概要
  • 14-7-2 SPI組み込み関数
  • 14-7-3 SPI通信の例

14-8 MSSPの使い方(I2C通信)

  • 14-8-1 I2C通信の概要
  • 14-8-2 I2C通信用組み込み関数
  • 14-8-3 I2C通信の例(1)(外付けEEPROM)
  • 14-8-4 I2C通信の例(2)(PIC 間通信)

14-9 CCPモジュールの使い方

  • 14-9-1 制御用レジスタ
  • 14-9-2 キャプチャモード
  • 14-9-3 コンペアモード
  • 14-9-4 単純PWMモード
  • 14-9-5 ECCPのPWM モード
  • 14-9-6 CCPモジュール用組み込み関数
  • 14-9-7 キャプチャモードの使用例
  • 14-9-8 コンペアモードの使用例
  • 14-9-9 単純PWMモードの使用例
  • 14-9-10 ECCPモードのPWMの使用例

第15章 PIC16Fファミリ専用組み込み関数

15-1 割り込みコントローラ

  • 15-1-1 割り込みの概要
  • 15-1-2 割り込み要因
  • 15-1-3 割り込み用プリプロセッサ
  • 15-1-4 割り込み処理のプログラミング
  • 15-1-5 使用例(1)
  • 15-1-6 レジスタの退避と復旧
  • 15-1-7 使用例(2)
  • 15-1-8 使用例(3)

15-2 タイマ0モジュールの使い方

  • 15-2-1 タイマ0の概要
  • 15-2-2 タイマ0用組み込み関数
  • 15-2-3 インターバルタイマとしての使用例

15-3 タイマ1モジュールの使い方

  • 15-3-1 タイマ1の概要
  • 15-3-2 タイマ1用組み込み関数
  • 15-3-3 割り込みによるインターバルタイマ例

15-4 タイマ2モジュールの使い方

  • 15-4-1 タイマ2の概要
  • 15-4-2 タイマ2用組み込み関数

15-5 A/D変換モジュールの使い方

  • 15-5-1 A/D変換モジュールの概要
  • 15-5-2 A/D変換用組み込み関数
  • 15-5-3 実際の使用例(1)
  • 15-5-4 実際の使用例(2)

15-6 コンパレータと電圧リファレンス

  • 15-6-1 アナログコンパレータの構成
  • 15-6-2 コンパレータの使い方
  • 15-6-3 電圧リファレンスの構成
  • 15-6-4 コンパレータ用組み込み関数
  • 15-6-5 コンパレータの使用例

15-7 省電力化と高信頼化

  • 15-7-1 内部発振ブロック
  • 15-7-2 2速度スタートアップとフェールセーフクロックモニタ機能
  • 15-7-3 スリープモードとウェイクアップ
  • 15-7-4 ウォッチドッグタイマ
  • 15-7-5 省電力,高信頼化用組み込み関数
  • 15-7-6 省電力化の使用例

第16章 PIC18Fファミリ専用組み込み関数

16-1 PIC18Fファミリの割り込み

  • 16-1-1 PIC18Fファミリの割り込み概要
  • 16-1-2 多重割り込み処理
  • 16-1-3 割り込み用組み込み関数
  • 16-1-4 割り込みの使用例
  • 16-1-5 多重割り込みの使用例

16-2 タイマ

  • 16-2-1 タイマ0
  • 16-2-2 タイマ1
  • 16-2-3 タイマ3
  • 16-2-4 タイマの使用例

16-3 A/Dコンバータモジュールの使い方

  • 16-3-1 概要
  • 16-3-2 A/Dコンバータ用組み込み関数
  • 16-3-3 実際の使用例

16-4 アナログコンパレータと電圧リファレンス

  • 16-4-1 アナログコンパレータの構成
  • 16-4-2 電圧リファレンスの構成
  • 16-4-3 コンパレータ用組み込み関数
  • 16-4-4 コンパレータの使用例

16-5 省電力化と高信頼化

  • 16-5-1 内部発振ブロック
  • 16-5-2 省電力モード
  • 16-5-3 2速度スタートアップとフェールセーフクロックモニタ機能
  • 16-5-4 ウォッチドッグタイマ
  • 16-5-5 低電圧検出モジュール(LVD)
  • 16-5-6 省電力,高信頼化用組み込み関数
  • 16-5-7 省電力化の使用例

16-6 プログラムメモリのアクセス

  • 16-6-1 テーブルアクセスの概要
  • 16-6-2 テーブルリード動作
  • 16-6-3 テーブルライト動作
  • 16-6-4 組み込み関数
  • 16-6-5 プログラムメモリアクセスの使用例

付録 MPLAB IDEのインストールの仕方

著者プロフィール

後閑哲也(ごかんてつや)

1947年生まれ。子供のころに電子工作に魅了され,大学,仕事とすべて電子の世界を歩む。この子供のころからの電子工作の趣味の世界と,仕事としているコンピュータの世界を融合した遊びの世界をホームページや書籍で紹介し続けている。