忍者ブログ

PICのド素人のブログ

10年ほど前にヤフーブログにあった記録をここへ移しました。「PIC16F84Aで作ってみました 」というホームページも運営していました。今はそこも消滅し   http://picdetukutte.toshi-ie.com/PIC16F84A.html   にすべてではありませんが引っ越しています。あわせてご覧いただければ幸いです。

縁日(えんにち)のピカピカ ~PIC12F629

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

縁日(えんにち)のピカピカ ~PIC12F629

2~3年前から縁日(えんにち)でピカピカ光るモノが売られていた。
今年の夏もきっと売られるんでしょうなあ。
中国製っぽい赤と青とかのLEDが振動を与えるとピカピカ光るヤツ。
そんなピカピカを作ってみた。
振動ではなく単純にスイッチオン!で作動するごくごく当たり前な仕様です。
 
なんでそんなクダラナイ物を作ったかと申しますと
実はワタクシ、夜10時ぐらいから約1時間ウオーキングと称して深夜徘徊をしているのだ。
んで、街路灯の少ない暗い道を歩いていると無灯火の自転車とぶつかりそうになるのだよ。
こっちもしっかり前を見ていりゃ良いのだけれど、下向いて歩いてるときがあるので
そーゆーときに「あっ!」となるわけ。
 
だから、こっちも相手にわかるように光るモノを身に付けてたら安心だね、ってことでね。
でも懐中電灯でもいいんじゃないかな、とも思ったけれど下着泥棒も懐中電灯を持ってそうだしね。
下着泥棒に間違えれたら困るので懐中電灯は却下。
で、ウチにあった例の中国製のピカピカを付けてたら良い感じ。
変なヤツとは思われてるようなので人も近付いて来ないのでいいね。
でもこの中国製、小さなボタン電池なのですぐ電池が無くなってしまった。
んじゃ、単3電池で作りましょってことですよ。
 
イメージ 1
 
電池ホルダーを改造して作ったのだ。
 
回路は簡単。
PIC12F629とソケット、0.1μF、151Ω、LED赤、黄、青、と単3電池3本だけ。
 
ASMファイルはこの下。
LEDはカソード3つまとめて1つの151ΩにつないでGNDへ。
0.1μFはVDD_VSS間に接続。
 
;
;
; PIC12F629 <<散歩用LEDランプ>>>
;
;  PIC12F629のピン配置
;               _____________
;    VDD 4.5V =1;            ;8= 0V VSS
;     NOT USE =2;(GP5)  (GP0);7= LED0 赤----|
;     NOT USE =3;(GP4)  (GP1);6= LED1 黄----|----<151Ω>-----<GND>
;     NOT USE =4;(GP3)  (GP2);5= LED2 青----|
;               _____________               

;
   ;←このマークより右側はPICは読み取りません。好きなことを書いて構いません。 

 list      p=12f629 ; 翻訳時にリストファイルを作ります
 #include <p12f629.inc> ; 12F675用定義ファイルを読み込みます
 errorlevel  -302 ; 翻訳時に302エラーが出ないようにします
 __CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT ;4MHz  
 ;↑これらの内容は自分で調べてみてください。パターン化した物と考えてもらっても良いです。

 radix dec  ; 省略時の数値表現を10進数にします。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ORG 000H
  GOTO INIT ;通常のプログラムの始まりは「INIT」です。そこへ行けと言う命令語 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
 COUNT  EQU 20H ;カウンタ
 TM1  EQU 21H ;タイマー1
 TM2  EQU 22H ;タイマー2
 TM3  EQU 23H ;タイマー3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;---- 初期化ルーチン ----  ;ここはマイクロチップ社のデータ表を見ながらの作業になります。
INIT     ;<<<ここからがプログラムの始まり PICの初期設定をします。>>>

 BSF STATUS,RP0  ;BANK 1 へ行けの意味 ;PICの設定箇所には「BANK 0」「BANK 1」などがあります。
 MOVLW   B'00001000'  ;3番ピンは入力用 あとは出力用ピン(電源やセラロックはそれなりに機能します)
 MOVWF TRISIO                  ; 上記のピンの割付を決定
 MOVLW   B'00000111'             ;オプション情報 今回は黙ってこのまま。(気になるなら調べてみてください)
 MOVWF OPTION_REG   ;OPTIONレジスタに書き込む
 BCF STATUS,RP0  ;BANK 0 へ行けの意味 ;PICの設定箇所には「BANK 0」「BANK 1」などがあります。
 MOVLW B'00000111'
 MOVWF CMCON
 CLRF GPIO
 GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN     ;<<<メインプログラム>>>
 MOVLW D'10'
 MOVWF COUNT   ;10をCOUNTへ代入
MAIN0
 BSF GPIO,0   ;LED0 ON 赤ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,0   ;LED0 OFF 赤OFF
 CALL TIMER   ;タイマールーチン
 DECFSZ COUNT,F   ;COUNT-1=0?
 GOTO MAIN0   ;NO
     ;YES 
 CALL TIMER   ;タイマールーチン
 CALL TIMER   ;タイマールーチン
 MOVLW D'10'
 MOVWF COUNT   ;10をCOUNTへ代入
MAIN1
 BSF GPIO,1   ;LED1 ON 黄ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,1   ;LED1 OFF 黄OFF
 CALL TIMER   ;タイマールーチン
 DECFSZ COUNT,F   ;COUNT-1=0?
 GOTO MAIN1   ;NO
     ;YES 
 CALL TIMER   ;タイマールーチン
 CALL TIMER   ;タイマールーチン
 MOVLW D'10'
 MOVWF COUNT   ;10をCOUNTへ代入
MAIN2
 BSF GPIO,2   ;LED2 ON 青ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,2   ;LED2 OFF 青OFF
 CALL TIMER   ;タイマールーチン
 DECFSZ COUNT,F   ;COUNT-1=0?
 GOTO MAIN2   ;NO
     ;YES
 CALL TIMER   ;タイマールーチン
 CALL TIMER   ;タイマールーチン
 MOVLW D'10'
 MOVWF COUNT   ;10をCOUNTへ代入
MAIN3 
 BSF GPIO,0   ;LED0 ON 赤ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,0   ;LED0 OFF 赤OFF
 CALL TIMER   ;タイマールーチン
 BSF GPIO,0   ;LED0 ON 赤ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,0   ;LED0 OFF 赤OFF
 CALL TIMER   ;タイマールーチン
 BSF GPIO,1   ;LED1 ON 黄ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,1   ;LED1 OFF 黄OFF
 CALL TIMER   ;タイマールーチン
 BSF GPIO,1   ;LED1 ON 黄ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,1   ;LED1 OFF 黄OFF
 CALL TIMER   ;タイマールーチン
 BSF GPIO,2   ;LED2 ON 青ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,2   ;LED2 OFF 青OFF
 CALL TIMER   ;タイマールーチン
 BSF GPIO,2   ;LED2 ON 青ON
 CALL TIMER   ;タイマールーチン
 BCF GPIO,2   ;LED2 OFF 青OFF
 CALL TIMER   ;タイマールーチン
 DECFSZ COUNT,F   ;COUNT-1=0?
 GOTO MAIN3   ;NO
     ;YES
 CALL TIMER   ;タイマールーチン
 CALL TIMER   ;タイマールーチン
 GOTO MAIN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIMER     ;<<<タイマールーチン 0.05SEC>>>
 MOVLW D'250'
 MOVWF TM1   ;250をTM1へ代入
TIMER1
 MOVLW D'50'
 MOVWF TM2   ;50をTM2へ代入
TIMER2
 NOP
 DECFSZ TM2,F   ;TM2-1=0?
 GOTO TIMER2   ;NO
     ;YES
 DECFSZ TM1,F   ;TM1-1=0?
 GOTO TIMER1   ;NO
     ;YES
 RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 END
 

拍手[0回]

PR

コメント

プロフィール

HN:
waewax
性別:
非公開

P R