FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PIC 新お勉強9(シリアル通信3) PIC 新お勉強7(シリアル通信1)»

コメント

コメントの投稿













管理者にだけ表示を許可する

PIC 新お勉強8(シリアル通信2)


さっそく、パソコンとPICの通信を行います。
といっても、まずはPICからパソコンに一方的に信号を送ります。

PICでシリアル通信を行うためにPICにはUSARTモジュールというものが搭載されていて、
このモジュールに送信する8ビットのデータを渡すと、信号を送信してくれます。
しかし、16F84AにはUSARTモジュールは搭載されていません。
が、別にモジュールを使わなくてもシリアル通信のフォーマットにあわせて手順道理に信号を出力してやればいいだけなので、モジュールがなくても通信可能です。

しかも、PCMはモジュールがないPICに対しても、同じコードでモジュールがあるかのように対応してくれるようです。 すばらしいですね。

まずはシリアル通信に必要なコード
#use rs232(BAUD = 9600, XMIT = PIN_A0, RCV = PIN_A1)

シリアル通信ではどのくらいのスピードで信号を送るかを、送信受信であらかじめ設定しておく必要があります。 それをBAUDの値で設定します。 決められた数字がいくつかあって、そこから選択しなければなりません。今回は9600を選択しました。 これは9600bps ということで、一秒間で9600bitの信号を送信するという意味です。
さらに、PICのどのピンを送信にしてどれを受信にするかを決めます。
XMIT が送信、RCVが受信です。

これだけでおk

具体的に信号を送信するための関数はいくつかあり、
一文字分(8bit)のデータを送信する putc( ) もしくは putchar( )
文字列を送信する puts( )
あとは、便利なprintf( ) です。

さっそくパソコンにデータを送信してみます。


#include<16f84a.h>

#fuses HS,NOWDT,PUT,NOPROTECT
#use delay(CLOCK = 20000000)
#use rs232(BAUD = 9600, XMIT = PIN_A0, RCV = PIN_A1)

void main(){
    set_tris_a(0x01);
    set_tris_b(0);
    while(1){
        printf("hello pic!\n");
    }
}



PICとパソコンの間に、この前作った通信のレベルを合わせるADM3202をかませます。
pic_seri.jpg

さらに、パソコン側で信号を受信するソフトを立ち上げます。
windowsに標準で搭載されている、ハイパーターミナルを使います。

アクセサリ→通信→ハイパーターミナルで起動します。
ht1.jpg
起動したら、名前をつけます。てきとうです。

ht2.jpg
通信ポートを選択します。シリアルポートを搭載しているPCならばCOM1でいいと思いますが、
僕はUSB-シリアル変換ケーブルを使っているので、COM13を選択します。
僕の場合はたまたま13だっただけで、かならず13というわけではありません。

ht3.jpg
PICの通信速度と同じに設定し、上の図のように選択します。

ht4.jpg
これで、ハイパーターミナルが起動しました。

PICのスイッチを入れます。
ht5.jpg

PICのプログラム内のprintf( )のなかにあった文字が見事受信されていますが、
なんか変ですね。

windowsでは改行コード \n はLF+CRで表されます。
LFとは 改行を意味し、次の行に移動します。
CRとは 復帰を意味し、行の先頭に移動します。

PICでは \nとはLFのみを表します。改行はされますが、行の先頭には行きません。
CRは\rで表されます。

ということで、そこを改めて再び
printf("hello pic!\n\r");

ht6.jpg
わーい、無事にきれいに hello pic!が表示されました。


ポチッとお願いします。
スポンサーサイト

PIC 新お勉強9(シリアル通信3) PIC 新お勉強7(シリアル通信1)»

コメント

コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。