• ベストアンサー

H8/3052 ディップスイッチについて

こんにちは。 今研究で秋月書店のH8/3052のマイコンを使っています。 LED,LCD,タクトスイッチを動作確認のためのC言語のプログラムはできましたが、ディップスイッチのC言語がうまくかけないため動作確認できません。 ディップスイッチによってLEDかLCDなどを動作させるC言語のプログラムの情報がありましたら教えていただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ricardo_
  • ベストアンサー率19% (14/72)
回答No.2

 過去にプッシュスイッチでLEDを点灯するプログラムを作りました。  下記に載せます。ポートをプッシュスイッチからDIPスイッチに変えれば動くでしょう。 #include <3048F.H> /* ラベルを使えるようにします。 */ int main(void) {P4.DDR = 0x00 ; /* ポート4を入力に設定 (P4_4,5,6,7)=(SW1,2,3,4) */ P4.PCR.BYTE = 0xFF ; /* ポート4をプルアップに設定 */ P5.DDR = 0xFF ; /* ポート5を出力に設定 (P5_0,1)=(LED1,2) */ /*=== ポート4を読み、4ビットシフトし、反転し、ポート5へ出力 ===*/ while(1) { P5.DR.BYTE = ~(P4.DR.BYTE >>4) ;} ; }

wend
質問者

お礼

できました。 いろいろと、ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

 出力が出来たんなら入力も出来るはずなんですが。  開発環境が指定されていないのでHEWの例を示します。

参考URL:
http://soudan1.biglobe.ne.jp/qa5436632.html
wend
質問者

お礼

ご教授ありがとうございます。 これを参考にして動作確認させたいと思います。 ちなみに開発環境はイエローです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • H8/3048F IRQポートを使った外部割込みについて

    秋月電子のH8/3048Fマイコンボードを購入し、C言語による組み込みプログラムの演習を行っていて、マイコンボードのIRQ端子を使った外部割込みを実装しようとしてつまずいてしまいました。 メインループでLED点灯などの処理を行い、タクトスイッチの押下があったら別の処理を割り込ませ、またもとの処理に戻るという外部割込み処理を行いたいのですが、うまくいきません。 今おきている問題としては、 (1)電源の投入して、メインの処理(LED点灯)が行われる前になぜか一度IRQ割り込みが発生し、別処理が行われ、その後メインの処理を行う。 (2)IRQポートには立下り割り込み処理を行いたいので、プルダウン抵抗回路を組み、通常状態では、 IRQポート→チャタリング防止用のシュミットトリガ74LS19(NOT回路が含まれている)→10KΩの抵抗器→GND という回路でHIGH状態からタクトスイッチによる押下が行われたら、 0.1μFのコンデンサ→+5V という回路につながり、LOWになって、立下りエッジが検出され、割り込み処理が行われるはずだが、タクトスイッチを押下してもなかなか反応せず、5~6回押さないと割り込みが行われない。 (3)割り込み処理実行後、元の処理に戻らない。(このとき、タクトスイッチ押下による割り込み処理は再度受け付けてくれる) の3点です。 C言語関連のH8マイコンの教材は無く、Web上の情報でしか勉強していないので、必要な知識が欠けているかもしれませんが、どなたかお知恵を貸していただけないでしょうか? 当方のH8/3048Fによるプログラミング暦は1ヶ月ほどで、LEDの制御、外部スイッチ入力による処理等基本的なことは出来ていると思います。 メイン処理と割り込み処理のソースコードを載せておきます。 void int_irq0() //割り込み処理関数 { /* lcd_init(); lcd_locate(0,0); lcd_print("ワリコンダYO!"); wait(500); lcd_locate(0,0); lcd_print("モトニモドルYO!"); */ P5.DR.BIT.B0 = 1; wait(300); P5.DR.BIT.B0 = 0; wait(300); INTC.ISR.BIT.IRQ0F = 0; //ISRフラグをクリアする } void main(void){ //char moji[16] = "AKI-H8"; unsigned int rand_seed = 100; P1.DDR = 0x00; P5.DDR = 0xff; PB.DDR = 0xff; INTC.ISCR.BYTE = 0; INTC.ISCR.BIT.IRQ0SC = 1; //立下りエッジで割り込み検出 INTC.IER.BIT.IRQ0E = 1; EI; srand(rand_seed); timer_init(); /* タイマーの初期化 */ lcd_init(); /* 液晶表示器の初期化 */ lcd_locate(0,0); /* カーソル位置の指定 */ lcd_print("スイッチオセ!"); /* 文字列の表示 */ while(1){ //disp_data(); led_randset(); wait(100); led_allclr(); wait(10); } /* 無限ループ */ }

  • H8マイコンをモノにしたいです!!

    学習用のH8マイコンキットを買い、H8マイコンの勉強がしたいと考えています。 現在、購入の際に考えているのは、 1.マイコンの基礎などのテキストが付いているモノ。(マイコン初心者なので、始めはテキスト通りに進めたい) 2.ハンダ付けの経験はないので、既に組んであるモノを探してます。 3.C言語を使ってマイコンの勉強が出来るモノ。 4.機能としては、スイッチ、LED、7セグメントLED、またはLCDが付いているモノ。 色々調べて、今の候補は、 ・ビーリバーエレクトロニクスさんの、マイコン学習ボードBASIC(17000円) ・Yellow Softさんの、H8マイコン学習セット(55000円) を考えているんですが、値段を見たときに、もちもん安い方が購入しやすいですが、 正直なんでこんなに違いがあるのかも分かりません。 マイコンをこれから勉強するにあたって、どの学習キットを選べばいいか、アドバイスください。 (上の2つ以外でも、良いキットがあればお願いします) ちなみに私は、C言語の入門は終えましたが、マイコンは初心者です。 どなたかアドバイス頂けないでしょうか?? ※上記2点の学習用のH8マイコンキットはここを見ました。 <http://beriver.co.jp/cpu3.html#basic> <http://www.yellowsoft.com/products/h8gset.html>

  • H8マイコン(3052)でCdS

    H8マイコン初心者です。 よく参考書に乗っているようなA/D変換で電圧を計って、 それをLCDに表示するプログラムを組みました。 手元に可変抵抗がないためCdSセルを使って 暗くなったらLCDに表示された電圧が変化する というプログラムを作ったんですがうまくいきません。 どなたかCdSをH8マイコンで使用した参考プログラム(C/C++) みたいなものが乗っているサイトを知りませんか? もしくは書籍でもかまいません。 ご返答宜しくお願いします。

  • H8のポートの状態

    最近H8をいじり初めて色々と試しています。 使用しているマイコンはH8 3052/Fです。またCでプログラムしています。 そこで質問なんですけど、今H8マイコンボードとPCがシリアル接続されて いるとして、接続が確立している場合にLEDを点灯させて、接続が確立され ていないときは無点灯というような動作を作成したいんですけど、どのよ うな手法を用いればよいでしょうか?

  • PICの変わりにH8を使いたいのですが。。

    秋月でグラフィックLCD開発キットを購入しました。 マイコンの勉強をしようと思って初心者の私でも始められるかな~って思ったのですが、ここで一つ質問させてください。 グラフィック液晶モジュールの取り説に、 「H8マイコン、PICマイコンなどの表示に最適です。」 とありますが、 この開発キットでPICの代わりにH8を使っても大丈夫ってことになるでしょうか? 初心者なのでチンプンカンプンな質問でしたらすみません。。

  • C言語初心者です。

    はじめて質問します。よろしくお願いします。 私は学生で、卒業研究でC言語についてやっているのですが、 あまりにも難しくてよく理解できません。 先生に聞いても専門的な事をおっしゃるので、 何の事かさっぱりわかりません。 今しているのは、技術評論社の「H8マイコンプログラミング入門」という本のH8マイコンによって空気圧サーボと呼ばれる機械を動かすプログラムを、電波新聞社の「USB機器の製作」という本のAKI-H8というマイコンで動作させるというものです。 とりあえず、AKI-H8でLEDを点灯させたりボタンを押したりする簡単なサンプルプログラムのようなものを幾つか教えていただければと思います。プログラムは全然初心者で理解できていないのでよろしくお願いします。

  • フルカラーLEDについて

    マイコンでフルカラーLED(5x5)について研究しています。 C言語を使ってプログラムを組んでLEDを点灯させています。簡単な点灯はできるのですが、なにか面白い点灯方法orプログラムはないでしょうか?少し煮詰まってしまってます。ヒントください。

  • H8マイコンについて教えてください。

    僕はPICをやっていますが最近H8マイコンの高機能さに魅力を感じ はじめてみたいと思うようになりました。 そこで以下のことについて教えてほしいです。 質問1 PICは石単体で買ってきてそれにプログラムを書き込み 水晶やらその他の部品を取り付けて作っていくのでH8も 石単体で買ってくるものだと思ってました。 でも調べてみると秋月のマイコンボードみたいに 基盤に水晶やら抵抗やら色々半田付けされてて それにプログラムを書き込んで作るようなのが沢山ありました。 H8は石単体で買ってくる物ではないんですか? (もしくは足のピッチを2.54に変換したもの) 画像検索で調べるとDIPタイプのH8もあるようですが・・・ 質問2 H8へのプログラムの書き込みですがPICでは "PIC ライター"とかで検索するとライターの作り方とか 自作ライターのページが沢山出てきますがH8に関しては ぜんぜんヒットしません。 僕のイメージとしてはゼロプレッシャーのついたライターを作って それにH8をセットしプログラムを書き込むものだとばかり 思ってたんですがH8はどうやってプログラムを書き込むんですか? 質問3 部品の配置やブレップボードで自由度が高いので できれば表面実装ではなくDIPやPLCCみたいな石で ライターに刺して作れるといいんですが・・・ 表面実装以外はあまり一般的ではないんでしょうか? 質問4 使用する言語についてですがPICではアセンブラでは アセンブラを使っています。 でもH8はC言語も結構やってる人が多いみたいでC言語自体も 興味があるのでそっちでやろうかと思っています。 でも部分的にアセンブラ(インラインアセンブラ?) が必要なってくる部分があると思うんですが やっぱり全部アセンブラのほうがやりやすいんでしょうか? 以上、よろしくお願いします。

  • H8/3052F 同士の簡単な通信についての問題

    秋月製マイコンボード(マザーボードも秋月製です)、H8/3052F(以下H8)につきまして質問があります。 なお開発環境にはベストテクノロジーのGDLを使用し、C言語にてプログラムを行ってます。 現在、2枚のH8を連動させて動かすことを試みています。 目的としましてはH8を物理量の計測に使用しています。 私のとった手法は、以下の通りです。 1、H8の、ある汎用ポート同士を1本の信号線で繋ぐ 2、片方のH8(仮にH8(A)とします)のマザーボード付属のタクトスイッチを押す。これを合図にH8(A)は計測を開始し、それと同時にH8(A)の汎用ポートから信号が出力される。 3、もう片方のH8(仮にH8(B)とします)はH8(A)からの出力があるまで待機し、出力を検知すると計測を開始する。 プログラムの内容としましては、以下のようにしました。 ※H8(A)の入力検知用のタクトスイッチは、ポート4のビット4についています。また信号の出力はポート1のビット0です。 ※H8(B)の入力検知用のポートはポート4のビット0です。 ※両ボードともに同一の安定化電源から電源を取っているので、グランドは共有できていると思います。 <H8(A)側のmainプログラム> /*ポート定義****/ P4.DDR = 0; /*ポート4のタクトスイッチを入力に設定。押すと0、何もなしで1*/ P4.PCR.BYTE = 0xff; /*ポート4を全ビットプルアップ。*/ P1.DDR = 0xff; /*P1を出力に設定*/ /*****************/ /*スイッチ入力待機部分*********/ while(P4.DR.BIT.B4); /*タクトスイッチが押されるまで、待機*/ P1.DR.BIT.B0 = 1; /*P1のビット0から5V信号を出力、別のH8(B)に信号を送る*/ /******************************/ (~以下、計測プログラム部へ) <H8(B)側のmainプログラム> /*ポート定義****/ P4.DDR = 0; /*P4端子を入力に設定。信号入力で0、何もなしで1*/ P4.PCR.BYTE = 0xff; /*ポート4を全ビットプルアップ。*/ /*****************/ /*スイッチ入力待機部分*********/ while(P4.DR.BIT.B0); /*P4のビット0にH8(A)からの信号入力があるまで、待機*/ /******************************/ (~以下、計測プログラム部へ) 以上のようなプログラムを組みました。 H8(A)側は正しく駆動し、タクトスイッチを押すと、計測を開始するとともに5Vの信号が出力できています。 問題はH8(B)側で、H8(B)のボードの電源を入れた直後から、H8(A)の信号を待たずに計測を開始してしまいます。 最初はH8(B)のポート4ビット0の初期値に0が入っており,いきなりwhile文を抜けてしまうのかと思いました. そこで,H8(A)からの信号線を外しますと、ずっと計測待機状態に入るのでプログラム的には一応回っているようです。 (私の認識では,ハードウェアマニュアルによればポート4の初期値は全ビット0ですが,MOSプルアップをすることにより,全ビット1に反転する(?)と考えています) 次に,H8(A)側から予期せぬ信号が入力されているのかと思い,テスターで電圧を測ってみました. しかし,タクトスイッチ入力前は0Vで,入力後は5Vが出力されており,見かけ上は問題がなさそうでした. なぜ、H8(B)は電源を入れたとたんに駆動を開始してしまうのでしょうか? もしお分かりになる方がいらしたら、ご教授願います。

  • H8マイコン開発

    H8/3069Fマイコンボードを買ってきて勉強をしようと思うのですが、 どこから手を付けていいのかわからないです・・・・。 C言語/アセンブラでプログラムを書いて何か実行させてみたいのですが、何かいい参考になるのはないでしょうか?