
PIC12F683でLEDをスイッチで点滅させる
電源から3番ピンの間に10KΩの抵抗を入れ、3番ピンからグランドの間にタクトスイッチをつなげ
5番ピンからFETでLEDをドライブさせる回路を組みました。
開発環境は、mikroC PRO for PICです。
いろんなサイトを見ながらコードを書きましたが動いてくれません。
どなたかご教示お願いします。
PIC触るの初めてです。
void main() {
TRISIO = 0b00100000; //GP4を1:入力に、他を0:出力設定
OSCCON = 0b01110000; // 8MHz internal clock
ANSEL = 0b00000000; //GP0~5をデジタル利用に設定
OPTION_REG.NOT_GPPU = 0; //内部プルアップ利用に設定
WPU = 0b00100000; //GP2を内部プルアップ
GPIO = 0b00000000; //GPIOの中身をきれいにする
CMCON0 = 0b00000111; //コンパレータを使わない
do {
if(Button(&GPIO, 4, 1, 0)) { //スイッチONの場合
GPIO.F4 = 1; //LED ON
} else { //スイッチOFFの場合
GPIO.F4 = 0; //LED OFF
}
}while(1);
}
No.1ベストアンサー
- 回答日時:
3番ピン(GP4)が入力で、Pull-upがONですね。
だったら、TRISIOの1にするビットが上にずれていませんか? bit4のはずです。
WPUも同様。
これらを設定の際にバンク切換をちゃんと指定していますか?
PICのメモリーやI/Oのアドレスは7ビットですね。これを超えるアドレスに対してはバンク切換で対応します。バンク指定はSTATUSレジスタ(アドレスは03h)のbit5です(ビット名はRP0)。これを1にしておくとバンク1が選択され、0ではバンク0が選択されます。なおSTATUSレジスタは現在指定されているバンク値と無関係にアクセスできます。
お使いの開発ツール(言語処理)によってはバンクは指定しなくても自動的に命令が付加されるものもあります。
もうひとつ気になったのがクロック発振の指定。OSCCONだけでなくCONFIGレジスタへの指定が必要です。
CONFIGレジスタはハード的な動作指定になるのでプログラムとして書くのではなくこのレジスタ自体もSFR(I/Oやメモリー)の並びにありません。開発ツールによって表記の仕方が違うと思うのでツールの説明書を見てください。内部発振、クロック出力なし に指定します。
なおCONFIGレジスタについてはPIC12F683 Data Sheet の84ページにあります(マイクロチップからDLできます)。
私も経験がありますが最初に動くまでが大変。でもちょっとでも動いたら後は楽チンです。頑張って!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- その他(パソコン・周辺機器) USB端子間に挟んで使う、スイッチのような物は売られていますか。 3 2022/08/25 22:26
- 車検・修理・メンテナンス 使用してないナンバー灯やバックランプはそのままでも車検に通りますか? 3 2022/07/23 11:45
- 照明・ライト 調光スイッチとLED電球の組み合わせについて 5 2022/11/21 11:46
- CPU・メモリ・マザーボード HP製パソコンのBIOSの立上げ方を教えて下さい。 2 2022/10/28 18:28
- カスタマイズ(車) 足元にLEDランプを付けるのですが端子の向きが分かりません。スイッチはどこに? 5 2023/04/13 11:06
- 電気・ガス・水道 パイロットスイッチの電圧降下について 3 2023/03/05 01:14
- バッテリー・充電器・電池 4.5Vくらいで動くオルタネイトスイッチ 2 2023/06/06 07:57
- 照明・ライト 懐中電灯は、スイッチを一回押すとランタン用のLEDが点いて、もう一回押すと懐中電灯用の別のLED電球 1 2023/04/05 20:18
- リフォーム・リノベーション 2種の電球の調光について 1 2023/06/07 23:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフィックLCD SG12...
-
micropythonコード 修正
-
printfで0x600000番地の次の0x6...
-
A/Dコンバータで電圧を測るプロ...
-
CASL1
-
Macターミナルで実行中のプログ...
-
CPad for LSI C-86の実行結果
-
秋月PICプログラマーを使っ...
-
PIC16F84Aから16F628Aの...
-
エクセルVBAで
-
通信ゲームを作りたいんですが
-
Mac 乗数の入力方法
-
携帯の環境変数の取り扱い
-
COMについて
-
JPGからSWFへ変換
-
Ofの使い方
-
メッセージボックスの表示につ...
-
wsdlからのサービス化を行い。
-
プロセスに表示されないソフト...
-
Xwinについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レジスタマップって何ですか?
-
PLCとPCの通信
-
組み込みマイコンでのソフトウ...
-
USBハブの自作について
-
H8マイコンのプロテクト方法
-
機械語のレジスタペアについて
-
TCNTとTIFRの意味
-
シリアル通信でのデータ取りこぼし
-
スプレッとの制御
-
PIC12F683でLEDをスイッチで点...
-
FATの故障? 1ファイル内の文字化け
-
古い計量機器からのrs232cを使...
-
マイクロ秒で精度が出るタイマー
-
デジタルマルチメータの自動計...
-
フラッシュメモリへの書き込み
-
プリンタポートの制御
-
無限ループを使う意味
-
geko201とマイコンのシリアル通...
-
C言語 マイコン
-
PICマイコンのCLRWDT動作について
おすすめ情報