PIC初心者用掲示板

PICの初心者用の質問箱です。
何でもお気軽にどうぞ!

■最新ツリー一覧

□このツリー付近のツリー一覧

★新規ツリー作成

◆ 5619. 超簡単な入出力プログラムを作成したいのです [HO] 2005/07/24 03:02
    ┗ 5620. 投稿者削除 [ ] 2005/07/24 07:08
        ┗ 5622. Re: 超簡単な入出力プログラムを作成したいのです [JO_O2005/07/24 09:40
            ┗ 5626. Re: 超簡単な入出力プログラムを作成したいのです [HO] 2005/07/24 21:52
    ┗ 5621. Re: 超簡単な入出力プログラムを作成したいのです [ハイパーレスキュー隊員] 2005/07/24 09:33
        ┗ 5623. Re: 超簡単な入出力プログラムを作成したいのです [ハイパーレスキュー隊員] 2005/07/24 09:53
            ┗ 5627. Re: 超簡単な入出力プログラムを作成したいのです [HO] 2005/07/24 22:04
    ┗ 5632. Re: 超簡単な入出力プログラムを作成したいのです [リバー] 2005/07/25 11:49
        ┗ 5633. Re: 超簡単な入出力プログラムを作成したいのです [ハイパーレスキュー隊員] 2005/07/25 12:42
            ┗ 5634. 投稿者削除 [ ] 2005/07/25 18:03
    ┗ 5783. 投稿者削除 [ ] 2005/08/08 00:22
    ┗ 5784. Re: 超簡単な入出力プログラムを作成したいのです [HO] 2005/08/08 00:25


5619. 超簡単な入出力プログラムを作成したいのです [HO] 2005/07/24 03:02
はじめまして。

ホームオートメーション化をするために、PICを使って簡単な制御装置を作成したく思っております。

秋月電子さんのPICライターキットを作り、できあいのLED点滅回路のプログラム動作確認までこぎつけました。

初期設定などがよく解らないので、面倒くさくなっております。

下記の実験プログラムの作成をどなたかヘルプしていただけませんか?

実験回路の動作条件
1.入力ポートをA,B、出力ポートをCとします。
  初期状態は全部Lです。
2.Aを監視します。
3.AがL→Hとなったら、CをL→Hにします。
4.Bを監視します。
5.BがL→Hとなったら、CをH→Lにします。
6.2に戻ります。

Aは手押しスイッチに接続してあり、実際には5の前にAはH→Lとなっております。

学生時代に出始めのZ80のPCを簡単な機械語プログラムでしたが制御していたのに、こんな簡単なアセンブラを書けないなんてまったくもってお恥ずかしい話です。

年のせいかハンダ付けの細かい作業も目が見えにくくなってしまい、拡大レンズで確認しながらやったり、電界コンデンサ逆接して破損したりしながらの作業をしております(汗)。

ここさえできれば、あとは自力で作り変えることができそうなんですよね。

どうかよろしくお願いします。

5620. 投稿者削除 [ ] 2005/07/24 07:08

5621. Re: 超簡単な入出力プログラムを作成したいのです [ハイパーレスキュー隊員] 2005/07/24 09:33
ソフト面だけでなくハードの状況も説明が必要ですよ。
>初期状態は全部Lです。
これがプルダウンを意味しているなら、たとえばタクトスイッチを取り付けたとして、押したときだけ(ロックしない)オンであるとするならハイにならない可能性がありますね。
この場合、ポートの内部プルアップを有効にしなければならない・・・
このところはZ80に無い機能で違うところです。
(初期状態とはソフト上の初期化のことで、レジスタをクリアしただけと受け取られます。)
Z80をいじったことがあるなら、Z80との違いを書き出して比較表を作れば、簡単(?)に移植できるのではないでしょうか。
マイコンはハードとソフトが密接な関係が有り、条件を定義しないと回答はいくつもあります。

5622. Re: 超簡単な入出力プログラムを作成したいのです [JO_O2005/07/24 09:40
>ご高齢とのことですが、Z80の経験をお持ちなら

レスが無いようなのでちょっとヒントを

PICが何を御使用なのかわかりませんが、16fxxxでADコンバーターが無いものとして。

MEMO EQU 020h

NOP

BSF STATUS,RP0
MOVLW 0FFh
MOVWF TRISA
MOVWF TRISB

CLRF TRISC
BCF STATUS,RP0

MAIN
MOVF PORTA,0
MOVWF MEMO

MOVF PORTB,W
COMF

ANDWF MEMO,0
MOVWF PORTC

GOTO MAIN



がんばって下さい、調べても分からないときは、又ここで質問してください。

5623. Re: 超簡単な入出力プログラムを作成したいのです [ハイパーレスキュー隊員] 2005/07/24 09:53
>タクトスイッチを取り付けた
この書き方も不完全でしたね。
入力ポートとGND間に接続した場合の話です。

とにかくアクティブ・ハイとしたのかアクティブ・ローに設計し、そのように機能するよう作って、動作をテスタなりで確認した上での、ソフトの話になります。
この辺を混同するから難しくなる・・・
ハードが不味けりゃソフトのデバックも無駄な努力。

5626. Re: 超簡単な入出力プログラムを作成したいのです [HO] 2005/07/24 21:52
ありがとうございます。

このプログラムを参考にして、やってみようと思います。

手元にあるのは

16F84A
16F88

の2種類です。
とりあえず16F84Aでやってみます。
まだちょっと質問できるレベルではないので、命令を1つづつ調べてみます。

わからなくなったらまた質問投げさせていただきます。

ああ、それから<高齢>といっても、シャープMZ80シリーズが出た頃学生していた世代です。気持ちはいつまでも20代後半です(笑)。

5627. Re: 超簡単な入出力プログラムを作成したいのです [HO] 2005/07/24 22:04
ありがとうございます。

レジスタをクリアしてもポートは変わらないままだから注意が必要、とかいうのは昔あったような気がします。

ハードが悪いのかソフトのバグなのかの切り分けはたいへんなので、ハードの設計施工は絶対に間違えてはいけない、というのもありましたね。

だんだん思い出してきました。

卒研でADコンバータとDAコンバータ、プリンタインターフェースなど簡単なハードとソフトを作成しました。
やりたいことはそのレベルのプログラムで動くだろうと思っております。

しかし残念ながらZ80のコードは私の頭の中のROMからほとんど”揮発”してしまっております。

もうちょっと勉強してやってみます。
その上で解らなかったり、うまく動作しなければ、また質問させていただきます。

どうぞよろしくお願いします。


5632. Re: 超簡単な入出力プログラムを作成したいのです [リバー] 2005/07/25 11:49
>ホームオートメーション化をするために、PICを使って簡単な制御装置を作成したく思っております。
>実験回路の動作条件
>1.入力ポートをA,B、出力ポートをCとします。
>  初期状態は全部Lです。
>2.Aを監視します。
>3.AがL→Hとなったら、CをL→Hにします。
>4.Bを監視します。
>5.BがL→Hとなったら、CをH→Lにします。
>6.2に戻ります。
>
>Aは手押しスイッチに接続してあり、実際には5の前にAはH→Lとなっております。

このサイトでするような返事じゃないんですが、この実験回路が実際に使用する制御と同じなのでしたら、PICを使わなくてもフリップフロップひとつでいけるんじゃないでしょうか?
これが練習用で、実際にはもっと複雑な制御をなさるのならこの発言は取り消します。

5633. Re: 超簡単な入出力プログラムを作成したいのです [ハイパーレスキュー隊員] 2005/07/25 12:42
取り消す必要は無いと思いますが、
PICを学ぶことに意味があるのに、他の方法では無意味です。
PICの導入に当たって先ず確認しなければならないことは当然入出力です。
マイコンなんですから当然の要求ですね。
仮にTTLで同等の回路を作る技術が有っても他のマイコンの知識があっても、初歩的な確認は必要です。

PS.
[ ] は鬱陶しいアラシですね。本当に鬱陶しい。

5634. 投稿者削除 [ ] 2005/07/25 18:03

5783. 投稿者削除 [ ] 2005/08/08 00:22

5784. Re: 超簡単な入出力プログラムを作成したいのです [HO] 2005/08/08 00:25
みなさんありがとうございます。
ヤボ用が重なり先週もこの土日も作業がなかなか進みませんでした。
リレーやリレー用トランジスタ等も購入し、あとはプログラムを作るだけ、というところまできております。
というか、自分で自分自身を追い詰めております(笑)。

浅川毅著「PICアセンブラ入門」東京電機大学出版局発行
をパラパラと読んだら、PICのだいたいのところが理解できました。条件分岐のやり方などに慣れればなんてことなさそうですね。

あと、私の質問におかしな箇所があるのにも気づきました。

ポートA,B,Cはポートではなくビットでした。
その他、AはL→H→Lとなるなど、いろいろへんなところがありそうです。


フリップフロップの利用はどうかということですが、入力信号を検知したのち、少々遅延させてから出力信号を出すようにしたいので、マイコン制御が簡単かと思います。

新しいことをはじめるのはどうも腰が重たくなりがちです。

うまくいってもいかなくても、結果をご報告させていただきますね。

決戦は次回の土日で!
とまた自分を追い込んでおきます。

5839. コンパイルの方法について [HO] 2005/08/14 18:58
基本的なところでつまづいております。

アセンブリ言語で適当な実験プログラムをでっち上げてみたのですが、はて?と思っております。

1.MPLAB IDEと秋月電子さんのCD-ROMに入っているpa.exeとは文法が違うのでしょうか?本によって書き方が違うので迷っております。

手元にある参考書は以下の3つです。

書いてあることがちょっとづつ異なっているので、悩んでおります。

浅川毅著「PICアセンブラ入門」東京電機大学出版局
遠藤敏夫著「わかるPICマイコン制御」誠文堂新光社
高橋隆雄著「やさしいPICマイコンプログラミング&電子工作」秀和システム

2.pa.exeでコンパイルする場合、16f84a.hというヘッダーファイルがないのですが、
 include 16f84a.h
ではなく
 include 16f84.h
でいいのでしょうか?

5989. 動きました [HO] 2005/08/28 02:15
基本的なプログラムが動きました。

鈴木美朗志著「たのしくできるPICプログラミングと制御実験」東京電機大学出版局

のプログラム3.1をパクらせていただきました。

混乱の原因は、
・秋月電子さんとMPLABのアセンブリ言語の文法が少々異なる。
・MPLABも最新バージョンと本やWEBにあるプログラムでCONFIGの表記の仕方が異なる。
・これらを説明したものが見当たらない、または見つけられなかった。
・MPLABの設定や操作方法がわかりづらい。

そこで、上記書籍の文法で作成したプログラムを、付属のCD−ROMにあるMPLAB5.5でコンパイルすることにしました。
そしたら、素直に動きました。

ここまでくるのに1ヶ月かかってしまいましたが、これも早いとこ笑い話にしてしまいたいものです。

ここから先は、実際のシステムの制御との格闘になります。

明日1日で動けばいいですが、、、、、、。

いろいろアドバイスどうもお世話様でした。