[HI-TECH C] “Warning [228] illegal character”警告が出る場合の対処法
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出力を行う
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が入出力ピンとして使えない時にチェックする事
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が入出力ピンとして動作しない場合にチェックする事
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割り込みを使用する
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”エラーが出る場合
出力されるエラーの例 [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)
PIC16F84Aには、TMRというタイマーモジュールがあり、これを利用と一定周期でタイマ割り込みをかけることが出来ます。 今回は、HI-TECH Cでタイマ割り込み処理を作成してみます。 ※アセンブラ(MPASM)でタイマー割り込み処理を行いたい場合は、こちらの記事を参考にして下さい。 [PIC]TMRモジュールを使用する(タイマー割り込み) TMRを使用したサンプルコードです。 これは,8Mhzで動作しているPICに対して,約10ミリ秒周期でタイマー割り込みをかけています。 #include <stdio.h> #include <htc.h> #de…
続きを読む
[PIC]HI-TECH Cでコンフィギュレーションビットを指定する
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で一定時間スリープさせる
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環境で開発する
PIC16シリーズでは、入門者向けとしてよく使用されているPIC16F84Aですが、プログラムの格納エリアが小さいため通常はMPASMというアセンブラを使用してプログラムを行う事が多いです。 PICの製造メーカであるMicroChipが提供している統合開発環境のMPLABでも、標準ではアセンブラしか用意されていません。ですが、実はMicroChipはCのコンパイラも用意してくれているので、追加でコンパイラをインストールすれば、Cで開発する事も可能です。 今回はMPLABで、PIC16F84AのプログラムをC言語で開発する方法を説明します。 C言語によるPICプログラミング入門 MicroChi…
続きを読む