Tag Archives: HI-TECH C

[HI-TECH C] “Warning [228] illegal character”警告が出る場合の対処法

2012年11月3日 (カテゴリ: PIC:, , )

HI-TECH Cでプログラムをコンパイルすると、以下のようにWarning [228]の警告が出ることがあります。 これは”警告”なのでコンパイルは完了し、大抵の場合プログラムは想定どおり動作することが多いです。 Make: The target "C:\home\project\pic\16F84A_LCD\main.p1" is out of date. Executing: "C:\Program Files\HI-TECH Software\PICC\9.83\bin\picc.exe" –pass1 C:\main.…


続きを読む

PIC16F84Aで,HI-TECH Cを使用してLCD出力を行う

2012年11月3日 (カテゴリ: PIC:, , , )

PIC16シリーズの定番、PIC16F84Aを使用してLCDへの出力を行うプログラムです。 16F84AでC言語を使用したLCD制御のサンプルは、意外と見つからないので公開しておきます。 LCDは16文字x2行表示が行えるSC1602を使用します。 また、Cコンパイラは、HI-TECH Cを使用します。HI-TECH Cは、PICC LITEとも呼ばれています。 HI-TECH CにはLCD制御用のライブラリがない為、プロトコルを確認してコマンド送信を自前で実装する必要があります。 動作確認はPIC16F84Aで行っていますが、特殊な事はしてないので16Fシリーズなら基本的にどのチップでもその…


続きを読む

[PIC]16F88でRB6,RB7が入出力ピンとして使えない時にチェックする事

2012年10月7日 (カテゴリ: PIC:, )

PIC16F88等の18ピンのPICを使用している場合、RB6,RB7ピンが入力として使えない場合があります。 このような際ににチェックする事を羅列してみました。 RB6,RB7が入出力ピンとして使用できないときのチェックポイント Check1:アナログ入力ピンとの競合 RB6,RB7は、アナログ入力のAN5,AN6と共用になっています。 PORTBのデジタル入出力として利用したい場合は,ANSELレジスタの値を0にする必要があります。 [PIC]PIC16F88でPortAを入出力ピンとして動作しない場合にチェックする事 HI-TECH Cによるコード例 void main( voi…


続きを読む

[PIC]PIC16F88でPortAが入出力ピンとして動作しない場合にチェックする事

2012年10月6日 (カテゴリ: PIC:, )

PIC16F88にあるPortAのうち、RA0-RA4はアナログ入力と兼用になっているのですが、デフォルトではアナログ入力側が有効になっているのでデジタルのI/Oとして使用できません。 この為、ANSELレジスタ(Analog Select Register)をデジタル入出力として設定する必要があります。 ANSELレジスタ(0x9B) bit7 unimpremented bit6 ANS6 bit5 ANS5 bit4 ANS4 bit3 ANS3 bit2 ANS2 bit1 ANS1 bit0 ANS0bit7 unimpremented bit6 ANS6 bit5 ANS5 bit…


続きを読む

[PIC16F88]HI-TECH CでTimer1割り込みを使用する

2012年10月6日 (カテゴリ: C, PIC:, , )

PICの16F88はTimer0,1,2という3つのタイマーモジュールを持っており、それぞれのタイマーは役割が異なっています。 今回は、16F88でHI-TECH Cを使用してTimer1割り込みを利用し、0.5秒周期でLEDを点灯させてみます。 クロックは16F88の内部オシレータを8MHzで駆動させます。 #include <stdio.h> #include <htc.h>   #define TIMER_INTERVAL (0xffff – 20000) // TMRモジュールのカウント初期値 // 8MHz, 1/1プリスケーラで、10msecごとに…


続きを読む

[HI-TECH C]__CONFIG()でundefined identifier “CP_OFF”エラーが出る場合

2012年9月22日 (カテゴリ: PIC:)

出力されるエラーの例 [192] C:\project\pic\16F84A_Ctest\main.c; 16.12 undefined identifier "FOSC_HS"Error [192] C:\project\pic\16F84A_Ctest\main.c; 16.22 undefined identifier "WDTE_OFF"Error [192] C:\project\pic\16F84A_Ctest\main.c; 16.33 undefined identifier "PWRTE_ON"Error [192]…


続きを読む

[PIC]HI-TECH Cで、タイマー割り込みを行う(PIC16F84A)

2012年9月1日 (カテゴリ: C, PIC:)

PIC16F84Aには、TMRというタイマーモジュールがあり、これを利用と一定周期でタイマ割り込みをかけることが出来ます。 今回は、HI-TECH Cでタイマ割り込み処理を作成してみます。 ※アセンブラ(MPASM)でタイマー割り込み処理を行いたい場合は、こちらの記事を参考にして下さい。 [PIC]TMRモジュールを使用する(タイマー割り込み) TMRを使用したサンプルコードです。 これは,8Mhzで動作しているPICに対して,約10ミリ秒周期でタイマー割り込みをかけています。 #include <stdio.h> #include <htc.h>   #de…


続きを読む

[PIC]HI-TECH Cでコンフィギュレーションビットを指定する

2012年8月28日 (カテゴリ: C, PIC:)

PICのプログラムをアセンブリ(MPASM)で作成する場合は、CONFIG命令でコンフィギュレーションビットを指定するのですが、HI-TECH Cではこの設定は、__CONFIG()マクロで行います。 下記のプログラムは、__CONFIG()マクロの使用を使用したサンプルです。 #include <stdio.h> #include <htc.h>   void main( void ) { __CONFIG( FOSC_HS & WDTE_OFF & PWRTE_ON & CP_OFF ); …


続きを読む

[PIC]HI-TECH Cで一定時間スリープさせる

2012年8月27日 (カテゴリ: C, PIC:)

PICでは、HI-TECH Cコンパイラをを使用した、C言語による開発を行う事ができます。 C言語で開発を行う場合、プログラム中で一定時間処理をスリープさせるにはどうしたら良いでしょうか? HI-TECH Cの環境では、主に以下の4つの手法があります。 1. 空ループを回す 2. _delay()マクロを使用する 3. __delay_ms()マクロを使用する 4. __delay_us()マクロを使用する1. 空ループを回す 2. _delay()マクロを使用する 3. __delay_ms()マクロを使用する 4. __delay_us()マクロを使用する 上記のうち2,3,4のマクロはH…


続きを読む

PIC16F84AをC言語で,MPLAB IDE環境で開発する

2012年8月26日 (カテゴリ: C, PIC:, )

PIC16シリーズでは、入門者向けとしてよく使用されているPIC16F84Aですが、プログラムの格納エリアが小さいため通常はMPASMというアセンブラを使用してプログラムを行う事が多いです。 PICの製造メーカであるMicroChipが提供している統合開発環境のMPLABでも、標準ではアセンブラしか用意されていません。ですが、実はMicroChipはCのコンパイラも用意してくれているので、追加でコンパイラをインストールすれば、Cで開発する事も可能です。 今回はMPLABで、PIC16F84AのプログラムをC言語で開発する方法を説明します。 C言語によるPICプログラミング入門 MicroChi…


続きを読む