2019/05/06(MON) フリップフロップ@
先日、肉祭りの時に
PICマイコンでフリップフロップ作ってと依頼があった。
フリップフロップ?
どっかで聞いたような・・・
双子のアイドルとか?
フォト

GAINAXの伝説のOVAとか?
フォト

そうではなく・・・
Wikipediaによりますと
「フリップフロップ (flip-flop) は、
 二進法の基本である1ビットの情報を
 一時的に"0"または"1"の状態として
 保持する(記憶する)ことができる論理回路で、
 順序回路の基本要素である。」
だそうだ。
つまるところ、スイッチを押すたびに
パタパタとオンとオフを切り替える奴ね。
そんなの昔作ったな。
ということで、回路図
フォト

入力はそのまんまでOKだけど
出力は、とりあえずはLEDにしているけど
実際はトランジスタとFETでスイッチを作ります
まずはプログラムの実験回路ということで。
あ、そうそう久々に8本足のPIC12F629を使います
まぁ4本足でもいいんだけど
そんなPICはないので・・・
はい
ピンアサインはこんな感じ。
電源と入力、出力の4つしか使いません
フォト


プログラム。
フォト

↑相変わらずアセンブラで書いてますw
まずはコンフィグと変数宣言ですね


フォト

↑プログラムの先頭と割り込みルーチン
今回は割り込みは使いません


フォト

↑初期化処理
GPIOの設定とかしてます


フォト

↑メイン処理です
70-71行目でスイッチの入力を無限ループで待ってます
で、入力があった時にはチャタリング対策として
約100msのwaitを入れてます
で、86-87行目で、XORでオン/オフを切り替えます


フォト

↑約100msのwaitする処理
ちゃんと数えてないので間違っているかもしれませんが
おおよそ100msのwaitしてくれます
およそ1msのwaitを100回ループしています


フォト

114-115行目はキャリブレーション値ね
つまりお約束の処理。


ブレッドボードで動きを確かめてみましょう!
PIC12F629とタクトスイッチとLEDでテスト
フォト

プログラムを焼いて
電源オン!
で、タクトスイッチを押すと光ります
フォト

もう一回押すと消えます
フォト

さらにもう一回押すと光ります
フォト

この繰り返し。
チャタリング対策と長押し対策を盛り込んだので
だいたい期待通りな動きをしてくれます
あとはこれに電源回路と
トランジスタスイッチの回路をつければできあがり。