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でテスト プログラムを焼いて 電源オン! で、タクトスイッチを押すと光ります もう一回押すと消えます さらにもう一回押すと光ります この繰り返し。 チャタリング対策と長押し対策を盛り込んだので だいたい期待通りな動きをしてくれます あとはこれに電源回路と トランジスタスイッチの回路をつければできあがり。 |