PIC16F877で始める - PIC電圧計

Posted by kyosuke at 07/25 2007
>>次の記事: MPLABを使ってみよう
>>前の記事: どのマイコンを使おうか迷い中



とりあえず、PICが普通に使えるようにします。

今もっているPICで一番、高機能っぽいPIC16F877を使用。
40ピンのDIPで扱いやすいかな。




ちなみにPIC16F877の性能

プログラムメモリ8kワード
データメモリ368バイト
データEEPROM256バイト
最大クロック周波数20MHz
外部入出力ピン33
10ビットA/Dチャンネル8
シリアル通信モジュールUSART、I2C/SPI
CCP/PWMモジュール2
BOR機能
タイマモジュール16ビット1、8ビット2、WDT1
パラレルスレープポート
命令数35

だと。


機能があーだ、性能がこーだなんていっても始まらないから、
とりあえず、簡単なコードを書いてみる。


LEDが点滅するプログラムでも書いてみるべ。
フローチャート的には、

 スタート
   ↓
 初期化
   ↓
 メイン
   ↓
 LEDオン?
↓オン  ↓オフ
LEDオフ LEDオン
↓     ↓
  ↓ ↓
   ↓
  遅延
   ↓
  メインに戻る


こんな感じ。
プログラムを書いてみた。

LIST		P=PIC16F877
INCLUDE		"P16F877.INC"
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

	ORG	0CH
CNT1	RES	1
CNT2	RES	1
CNT3	RES	1

	ORG	0
START
	BSF	STATUS,RP0
        CLRF    TRISA
        BCF     STATUS,PRO
        MOVLW	0FFH
        MOVWF   PORTA

MAIN
	BTFSS	PORTA,0

; はて?
; 出力ピンが1で、
; そのピンにBTFSSをかけた場合、
; スキップするのだろうか?
; MPLABあたりでデバックできるかな?
; MPLABをダウンロードしようと思ったら
; 31.8MBもありやがる。
; DSLが死亡して、Dial UPの私には今は無理。
; できるものとして扱う。
; DSLが復活した暁には、
; デバックをする

	GOTO	LEDON
LEDOFF
	BCF	PORTA,0
	CALL	T1SEC
	GOTO	MAIN
LEDON
	MOVLW	0FFH
	MOVWF	PORTA
	CALL	T1SEC
	GOTO	MAIN

; 1secのタイマをつくるには、
; 2^8=256
; 10MHz=>0.4us?=>0.4us*2.5*10^6=1sec
; 2500000のIRをしなければならない、
; 適当に3つに分ける
; 1sec<=100ms<=1msぐらいになればいいな

T1SEC
	MOVLW	0AH
	MOVWF	CNT3	
T1SEC2
	CALL	T100MSEC
	DECFSZ	CNT3,F
	GOTO	T1SEC2
	RETURN

T100MSEC
	MOVLW	064H	;100
	MOVWF	CNT2
T100MSEC2
	CALL	T1MSEC
	DECFSZ	CNT2,F
	GOTO	T100MSEC2
	RETURN

T1MSEC
	MOVLW	0FFH
	MOVWF	CNT1
T1MSEC
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ	CNT1,F
	GOTO	T1MSEC
	RETURN

以上。

ちなみに
DECFSZはDecrement f, skip if 0
の意味。

DECFSZ CNT1,F
          ↑
FはFに上書きしろという意味。WだったらWregに上書き。

これで、動くかな?
多分、動かないだろう!


>>次の記事: MPLABを使ってみよう
>>前の記事: どのマイコンを使おうか迷い中





PIC電圧計のモノ作り記事

Vol_reg_thumb
定電圧電源の製作、電圧表示付き(7セグメント3つ)
PIC電圧計の完成!(C言語バージョン+7セグメントLED)&lt;br /&gt; http://give-n-take.net/gat/user/show_diary/229 &lt;br /...
続きを読む>>定電圧電源の製作、電圧表示付き(7セグメント3つ)
Posted by kyosuke at 04/10 2008

Vol_reg_seg_thumb
PIC電圧計の完成!(C言語バージョン+7セグメントLED)
PICマイコンの10ビットA/Dコンバータのプログラム+回路図+LEDバー&lt;br /&gt; http://toolible.net/monozukuri/articles/51&lt;br ...
続きを読む>>PIC電圧計の完成!(C言語バージョン+7セグメントLED)
Posted by kyosuke at 04/02 2008

Vol_reg_thumb
PICマイコンの10ビットA/Dコンバータのプログラム+回路図+LEDバー
電圧計の完成!&lt;br /&gt; http://toolible.net/monozukuri/articles/21&lt;br /&gt; &lt;br /&gt; とか書いてあります...
続きを読む>>PICマイコンの10ビットA/Dコンバータのプログラム+回路図+LEDバー
Posted by kyosuke at 03/30 2008

Pictester_thumb
PIC電圧計の完成!(アセンブラバージョン)
前回は、割り込み処理のデバックが終わった。&lt;br /&gt; &lt;br /&gt; いうなれば、今回のデバックが電圧計のためのものと。。&lt;br /&gt; &lt;br /&gt...
続きを読む>>PIC電圧計の完成!(アセンブラバージョン)
Posted by kyosuke at 08/11 2007

No_image
電圧計PICプログラム デバック
さて、デバックする。&lt;br /&gt; &lt;br /&gt; 凡ミスを取り除いて、&lt;br /&gt; ビルトOK。&lt;br /&gt; &lt;br /&gt; RUNし...
続きを読む>>電圧計PICプログラム デバック
Posted by kyosuke at 08/09 2007

PIC電圧計 の14記事を見る