
まだ駆け出しでわからないことだらけで、以下のプログラムをふまえてPIC16F819とMAX232C(RS232C?)を接続したいのですが、どうプログラム(アセンブラ)を追加したら、また回路的にどうしたらいいのかわからないので教えてください。以下のプログラム(コメント省略)は、電圧変化により出力(LEDの点灯数の変化)を行ったものです。
LISTp=PIC16F819
#include<P16F819.inc>
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _LVP_OFF
AD_DATA_HEQU20h
AD_DATA_LEQU21h
WAITCOUNTEQU22h
ORGH'00'
GOTOSTART
ORGH'04'
GOTOSTART
;------------------------------
;初期設定
;------------------------------
START
BSFSTATUS, RP0
BCFADCON1, ADFM
BCFADCON1, ADCS2
BSFADCON1, PCFG3
BSFADCON1, PCFG2
BSFADCON1, PCFG1
BCFADCON1, PCFG0
MOVLWB'00000001'
MOVWFTRISA
MOVLWB'00000000'
MOVWFTRISB
BCFSTATUS, RP0
CLRFADCON0
CLRFPORTA
CLRFPORTB
;-------------------------------
;メインルーチン
;-------------------------------
MAIN
CALLAD_CONVERT
MOVLWb'10000000'
SUBWFAD_DATA_H, W
BTFSCSTATUS, C
GOTO V_UPPER_HALF
GOTOV_LOWER_HALF
V_UPPER_HALF
MOVLWb'11000000'
SUBWFAD_DATA_H, W
BTFSCSTATUS, C
GOTOV_3_4
GOTOV_1_2
V_LOWER_HALF
MOVLWb'01000000'
SUBWFAD_DATA_H, W
BTFSCSTATUS, C
GOTOV_1_4
GOTOV_ZERO
V_3_4
MOVLWb'00000111'
MOVWFPORTB
GOTOMAIN
V_1_2
MOVLWb'00000011'
MOVWFPORTB
GOTOMAIN
V_1_4
MOVLWb'00000001'
MOVWFPORTB
GOTOMAIN
V_ZERO
MOVLWb'00000000'
MOVWFPORTB
GOTOMAIN
;---------------------------------
;A/D 変換サブルーチン
;---------------------------------
AD_CONVERT
MOVLWB'10000001'
MOVWFADCON0
CALLWAIT_100U
BSFADCON0, GO
BTFSCADCON0, GO
GOTOADLOOP
MOVFADRESH, W
MOVWFAD_DATA_H
MOVFADRESL, W
MOVWFAD_DATA_L
RETURN
;------------------------------------------------------------
;100usec ( 100usec = 0.2u/Cycle at 20MHz x 500 )
;------------------------------------------------------------
WAIT_100U
MOVLWD'165'
MOVWFWAITCOUNT
WAIT_100UL
DECFSZWAITCOUNT,F
GOTOWAIT_100UL
RETURN
END
長くなりましたがご教授どうかお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
はじめまして,ご質問の投稿からずいぶんと時間がたっているようなので,この回答が届くかどうかはわかりませんが,ご参考までに.
いただいたプログラムはA/D変換のテストプログラムなので,経験の無い私にはお答えしかねるのですが,一般論で申し上げるのであれば,他の方のソースを読み,カットアンドコピー&修正しながら習得してゆけばよろしいかと思います.
あまり良い例とは言えないかもしれませんが,私も趣味でPICをいじっていて,ブログにその有様を公開しています.
http://fp-masamichi.cocolog-nifty.com/pic/
特段の目的も無く,趣味の日記代わりですが.今はRS-232CやデジタルI/O(液晶表示やスイッチパネルなど)制御を対象に,PIC16F88に厚くなっています.同じ16Fシリーズですからアセンブラは共通ですが,ご質問のPICとは異なります.PIC88はMax232等と組み合わせてRS-232C通信を実現するための非同期シリアルコミュニケーションI/F(UART)を内蔵しているタイプです.強力なPICですが,16F84Aよりも安いんですよ(秋月価格:18PinDIPタイプは230円です).
2008/1/2の日記に公開したソースには,RS-232Cの簡単なテストソフトが入っています.暇さえあればRS-232Cへ"Hello World!!"とのべつ幕無し送信しまくるだけのものですが,Windowsマシン+秋月のUSB-232C変換機にテラターム(フリーのターミナルソフト)を起動して38.4KBpsで連続受信しています.(ごくたまにPIC側の送信ミスなのか,テラターム側の受信こぼれが発生しますが,実用上は全く問題なく動作しています)もちろん,受信側も動作確認は済んでいます.
回路図も以前の記事に添付しています.ただ,RS232Cのドライバレシーバには,MAX232ではなく,もっと格安なADM3202を使っていますが.
こんなに小さくて安いCPUですが,侮る無かれ,本当に奥が深いですね.お互い,楽しみましょう.
参考URL:http://fp-masamichi.cocolog-nifty.com/pic/
No.1
- 回答日時:
PIC16F819はUARTという回路を内蔵していませんので、下記のページのようにには接続できません。
↓http://www.picfun.com/pic19.html
PIC16F84が同様にUART回路なしですので、下記のページが参考になると思います。↓
http://www.picfun.com/equipj30.html
タイマー割り込みを利用しているので難易度は上がりますが、PIC16F819でも利用可能です。
よくわからなければ、また質問してください。
有難うございます。参考にして頑張ってみたいと思います。まだまだ、未熟者ですのでまたわからない事が沢山あると思いますので、その時はまたよろしくお願いします。きっと2,3日したらまた質問させていただくと思います(笑)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# プログラミングの問題です。写真のプログラムの1から10を下のように入力しましたがプログラムが上手くい 3 2022/07/01 23:31
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- その他(Microsoft Office) Excel 2列分のDATAの並べ替え 1 2023/01/01 17:12
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- Excel(エクセル) 格納したデータを配列のように扱う方法はありますか? 8 2023/06/05 08:53
- PDF ハイパーリンク先の一括変更について 2 2022/03/23 08:13
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- C言語・C++・C# 1. 仮想CPU「exmini」を使用して,「$dataからn減算する」プログラムを作成してください 2 2022/07/04 17:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語の勉強方について
-
VBプログラムをEXCEL VBAに移植...
-
C言語のついての質問です
-
BCB6でのエラー…
-
PICのI2C通信のプログラムについて
-
API、OCX、DLLって何でしょう?
-
ASP初心者向けホームページ
-
C言語プログラミング 逆行列を...
-
プログラミング言語とは
-
大至急!!! ピクトグラミング...
-
プログラミングのセンス・技術...
-
Rubyでのプログラミング言語作成
-
出欠表のプログラム制作の難易...
-
これからの1年(駄文)
-
【プログラム】自身への課題【...
-
底辺プログラマー
-
Sleep命令で指定した待機時間が...
-
ホームページ作成について教え...
-
デザイナーとエンジニアリング
-
自動で施設の空きを通知するプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
コンソールアプリでファイル選...
-
Ryzen 3700(無印)はWin11に対応...
-
VBプログラムをEXCEL VBAに移植...
-
C#のプログラムを読むコツって...
-
VB.net エラーメッセージを英文...
-
SNMPトラップ情報をC#.netで作...
-
Perl5とActivePerl
-
バージョンのつけ方
-
OSとCPUの関係について
-
Cからgzip圧縮について
-
Sleep命令で指定した待機時間が...
-
C/C++でチャットソフトを作りた...
-
C言語のHP-UXからLinuxへのポ...
-
CoInitializeSecurityが失敗する
-
DeviceIoControlを使って、フロ...
-
変数の大きさを超える代入
-
基本的な質問ですみません:ソ...
-
地域と言語のオプションをプロ...
-
PCソフトを作ってみたいです!!
おすすめ情報