2016.2.3
前へ
次へ
ホームページトップへ戻る

新製品の紹介(プチ連載です)
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

前へ
次へ
ホームページトップへ戻る