PICでAD変換をやってみた。使った回路は、先日と同じ回路で、PIC16F676を使った。
プログラムは
c言語版とアセンブラ版(
ソースコード&
インクルードファイル)の両方を作ってみた。
ボリュームの電圧を10に分けて、低い電圧から0->9まで7セグの表示が変わるようにした。
回路図↓
PR
やっと、動くところまでいった。
これから、ADとか他の機能をCで動かしてみようと思う。
c言語でpicのプログラムを作ろうとしたら、delayに関してなにかエラーを出しているようだった。
いろいろ調べてみると、必要な文が抜けていた。
(ちなみに、HI-TECH C コンパイラ)
使用周波数の定義
#define _XTAL_FREQ 4000000
こうやって、コンパイラに使用周波数を教える必要がある。(この場合は4MHz)
また、_delay,__delay_ms,__delay_usには引数に制限があるみたいで、
電気工作室が参考になりました。
インクルードファイルのソース(pic.h)をみると、このように_XTAL_FREQ を定義しろと言ってますね。
#ifdef __PICCPRO__
/****************************************************************/
/* Built-in delay routine */
/****************************************************************/
#pragma inline(_delay)
extern void _delay(unsigned long);
// NOTE: To use the macros below, YOU must have previously defined _XTAL_FREQ
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
#endif