こんばんわ
としぶぅ~です。
夜は涼しくなりましたね。。。。歩いて帰ってきても汗かかなくなりました^^;
今日は残りのAD部分のプログラムを貼り付けます。
ad.c
/*================================================================================
ADプログラム
File Name : AD.c
Target Compiler: HI-TECH C PRO(Lite MODE)
Verion : 1.0
================================================================================ */
#include
#include "ad.h"
#include "delay.h"
unsigned char ad_data; //(20120908追加)
unsigned char ad_disp; //(20120919追加)
unsigned char ad_data_old; //(20120919追加)
//AD機能とポートの設定
void adinit(unsigned char ansel)
{
/**************************************************
使用するADポートの設定を行う
ansel: bit0:ANS0(RA0)
bit1:ANS1(RA1)
bit2:ANS2(RA2)
bit3:ANS3(RA3)
bit4:ANS4(RA4)
bit5:ANS5(RB6)
bit6:ANS6(RB7)
bit7:
**************************************************/
TRISA=TRISA | 0x38; //ADポート(RA4)を入力設定にする
ANSEL=ansel; //ADコンバータの設定 ANS0-7
ADON=1; //ADコンバータ機能の許可
ADIE=0; //AD割り込み不許可
}
//ad Convert(8bit)
unsigned char ad4()
{
/*************************************************
channel:AN4
基準電圧:+VREF-VSSを使用
AD変換clock:8MHz/16
ADFM=0 Leftjustified
変換時間:
**************************************************/
unsigned char temp = 10;
//設定
ADCON1=0x60; //0110 0000 A/D結果は左詰め,FOSC/16,A/D基準電圧:+VREF-VSS
ADCON0=0x61; //01xx x001 FOSC/16,ANS4,A/D Status(INPUT),A/D-ON
DelayUs(100); /* Delay関数使用 : 安定待ち */
//AD変換開始
GO_DONE=1;
//変換終了待ち
while(GO_DONE==1){}
//変換結果処理
return(ADRESH);
}
void ad_4ms()
{
unsigned char i;
ad_data = ad4();
i = ad_data;
/* 前回のデータと今回のデータが違っていたら表示フラグをセットする */
if((ad_data_old != ad_data)){
ad_disp = 1; /* 表示フラグセット */
ad_data_old = ad_data; /* 新データを旧データにセット */
}
}
こんな感じです。
マーカー部分の説明をします。
ad4()でADの設定します。
ADの基準電圧を+VREF入力~VSS(0V)で行うように設定する。
8bit変換を行うので、左詰めでADのデータを保存するように設定。
(10bit変換の場合は右づめにする。)
→ ま、どちらでもいいけど8bitの場合は、左づめにすれば、ADRESHのデータを
そのまま使えば、10bit中の下位2bitを無視して8bitデータとして扱える。
10bitでやるときは・・・・・今度やりますね^^
次は、ad_4ms()です。
ad4()を実行して前回のデータと比較して違っていたらad_disp変数に”1”を入れて、
LCD表示関数にて温度表示を更新する。
比較データが同じだったら”0”をいれる。 → ”0”なら表示は更新しない。
こんな感じの簡単なことしかしてません。
こんな感じでわかりますかね??
難しいことしてません^^;
とりあえずソースコードの貼り付けはこんな感じでいいかな。。。
明日はちょっと、動かなかったPickit3を動かしてみます。
とりあえず今日はこの辺で・・・・
おやすみなさい~(^^/