新製品の紹介(プチ連載です)
27C256WRITER組立キット
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
たまにはちょいと息抜きで小品も作ってみたいものです。
簡単にチョイチョイと…。
でも、なかなかそうは簡単にはいかなくて、いつものごとく回を重ねてしまうことになるのかも…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第8回]
●PIC12F629プログラム
PIC12F629はわずか8pinのICです。
そんなもので何ができるのか、と疑問に思われるかもしれませんが、今回のように入力または出力が数本だけあればよい、という用途にはぴったりです。
外見は小さいですけれど、ちゃんとタイマーも内蔵していますし、ごく普通にプログラムできます。
ということで、今回はEPROM消去器(紫外線殺菌灯)のON/OFFをPIC12F628で制御するプログラムを書いてみました。
電源ONでスタンバイして、プッシュスイッチが押されたら、約30分間リレーをONするプログラムです。
といっても[第6回]に書きましたように、PICでは直接リレーは制御できませんから、リレーをドライブするのはトランジスタ(2SC1815)です。
そのトランジスタをPICでONします。
回路図が前回([第7回])にありますから参照してください。
タイマープログラムというと内蔵タイマー(Timer0)などを使って割込みを利用して、などと思われるかも知れませんが、そんなものは使いません。
今回のタイマーはそんなに正確なものである必要はありません。
大体30分ぐらいONできればいいのですからアバウトで構いません。
しかもその間はほかになにもやることはありませんから、プログラムループを利用したソフトウェアタイマーで十分です。
なにもしないと書きましたが、実はタイマーONの期間中はちゃんとプログラムが動いていることをモニターできるようにLEDを点滅させています。
下がプログラムリストです。
;;;PIC 12F629 testprogram test.asm
;16/1/3
;clock=4MHz
#include <p12f629.inc>
;
;Program Configuration Register 1
__CONFIG _CP_OFF & _MCLRE_OFF & _WDT_ON & _INTRC_OSC_CLKOUT
;
cf=0
zf=2
f=1
w=0
;
tcn0 equ 20
tcn1 equ 21
cntrh equ 22
cntrl equ 23
gpiowk equ 24
;
org 00
goto start
;
org 05
start
bsf STATUS,5 ;bank 1
movlw 08;port=out
movwf TRISIO
bcf STATUS,5;bank 0
start2
clrf gpiowk
clrf GPIO
;
wait
clrwdt
btfsc GPIO,3
goto wait
;
movlw 00
movwf cntrl;700=1792 about 1800
movlw 07
movwf cntrh
bsf gpiowk,1
bsf GPIO,1
loop
call t1s
movlw 4
xorwf gpiowk,w
movwf gpiowk
movwf GPIO
decfsz cntrl,f
goto loop
decfsz cntrh,f
goto loop
bcf GPIO,1
goto start2
;
t4ms
movlw 0fa;=250
movwf tcn0
t4ms2
clrwdt
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decfsz tcn0,f
goto t4ms2
return
;
t1s
movlw 0ec;=250--->236
movwf tcn1
t1s2
call t4ms
decfsz tcn1,f
goto t1s2
return
;
end
;
|
ループ回数を設定して実行してみたら、ちょっとずれていたので、アバウトでよいのですけれど、カットアンドトライで数値をいじくって補正しました。
前回の回路図を見ていただければわかりますが、システムクロックとして内蔵のオシレータを指定しましたので、外付けのクリスタルも不要です。
27C256WRITER組立キット[第8回]
2016.2.3upload
前へ
次へ
ホームページトップへ戻る