新製品の紹介(プチ連載です)
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
前へ
次へ
ホームページトップへ戻る