
---------------------------------------------------------------------
#include <stdlib.h>
#include <pic.h>
#include <htc.h> // delay用に必要
#define _XTAL_FREQ 8000000 // delay用に必要(クロック8MHzを指定)
// コンフィギュレーション1の設定
// CLKOUTピンをRA4ピンで使用する(CLKOUTEN_OFF):内部クロック使用する(INTIO)
// 外部クロック監視しない(FCMEN_OFF):外部・内部クロックの切替えでの起動はなし(IESO_OFF)
// 電源電圧降下常時監視機能ON(BOREN_ON):電源ONから64ms後にプログラムを開始する(PWRTEN_ON)
// ウオッチドッグタイマー無し(WDTE_OFF):
// 外部リセット信号は使用せずにデジタル入力(RA3)ピンとする(MCLRE_OFF)
// プログラムメモリーを保護しない(CP_OFF):データメモリーを保護しない(CPD_OFF)
__CONFIG(CLKOUTEN_OFF & FOSC_INTOSC & FCMEN_OFF & IESO_OFF & BOREN_ON &
PWRTE_ON & WDTE_OFF & MCLRE_OFF & CP_OFF & CPD_OFF) ;
// コンフィギュレーション2の設定
// 動作クロックを32MHzでは動作させない(PLLEN_OFF)
// スタックがオーバフローやアンダーフローしたらリセットをする(STVREN_ON)
// 低電圧プログラミング機能使用しない(LVP_OFF)
// Flashメモリーを保護しない(WRT_OFF):電源電圧降下常時監視電圧(2.5V)設定(BORV_25)
__CONFIG(PLLEN_OFF & STVREN_ON & WRT_OFF & BORV_25 & LVP_OFF);
// 指定した時間(num x 10ms)だけウエイトを行う処理関数
void Wait(unsigned int num)
{
int i ;
// numで指定した回数だけ繰り返す
for (i=0 ; i<num ; i++) {
__delay_ms(10) ; // 10msプログラムの一時停止
}
}
// 内部温度センサー値の入力処理
unsigned int adconv()
{
unsigned int temp;
GO_nDONE = 1 ; // PICに内部温度センサー値読取り開始を指示
while(GO_nDONE) ; // PICが読取り完了するまで待つ
temp = ADRESH ; // PICは読取った値をADRESHとADRESLのレジスターにセットする
temp = ( temp << 8 ) | ADRESL ; // 10ビットの分解能力です
return temp ;
}
// メインの処理
void main()
{
unsigned int n , temp ;
char s[8] ;
OSCCON = 0b01110010 ; // 内部クロックは8MHzとする
ANSELA = 0b00000000 ; // アナログは使用しない(すべてデジタルI/Oに割当てる)
TRISA = 0b00001000 ; // ピンは全て出力に割当てる(RA3は入力のみとなる)
PORTA = 0b00000000 ; // 出力ピンの初期化(全てLOWにする)
FVRCON = 0b00100000 ; // 内部温度センサーを使用する、VOUT=VDD-4VT (High Range)に設定
ADCON1 = 0b11100000 ; // 読取値は右寄せ、A/D変換クロックはFOSC/64、VDDをリファレンスとする
ADCON0 = 0b01110101 ; // アナログ変換情報設定(内部温度センサーから読込む)
__delay_us(200) ; // アナログ変換情報が設定されるまでとりあえず待つ
while(1) {
n = adconv() ; // 内部温度センサー値を取り出す
/****************************************************
* 通常はここに温度変換処理を記述します (n→temp) *
****************************************************/
itoa(s,temp,10) ; // 変換数値を文字列に変換する
Wait(100) ; // 1秒毎に処理を繰り返す
}
}
---------------------------------------------------------------------
プログラムについて
リンク切れ見直し(*1) 2020/03/22
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2020 Shigehiro Kimura All Rights Reserved.