| HOME | 回路チェック | SWICHシリアル出力 | シリアル入力 | RESPONSE | WEB |
/*********************************************************/
/*     シリアル出力                             */ 
/*********************************************************/      





 PICからシリアル通信でパソコンへ出力します。
作成するプログラムは、下のProjectのようにソース3つのヘッダ2つの計5つです。
パソコン側の通信ソフトはWindows付属のハイパーターミナルです。
ハイパーターミナルは2400BPMで接続します。
演習用回路基板のスイッチを押すたびに「Hello my World!」と表示されます。


delay.cとdelay.hはPICC-Liteをインストールするとsamplesの中のdelayのホルダー(C:\Program Files\HI-TECHSoftware
\PICC-Lite\9.50\samples\delay)にありますので、それを他のソースと同じホルダーにコピーします。
delay.hは周波数4Mhzを指定するために下のように一部書き換えます。
pucth.cとpucth.hは「C言語ではじめるPICマイコン」(中尾真治 著 Ohmcha)を利用させていただきました。


srial_st_out.c
/**********************************************************/
/*             srial_st_out.c                    */
/* RA1:シリアル出力 RA0はスイッチ RBは全て出力 pic16F84A    */
/* 5V, 4MHz, 2400bps 2007/1/17 by.katokato               */
/**********************************************************/

 #include <pic.h>
 #include <stdio.h>
 #include "delay.h"
 #include "pucth.h"


 __CONFIG(UNPROTECT & PWRTEN & WDTDIS & XT );

 #define out_port RA1 //send用のserial port の定義

 ioport();
//------------------------------------------------
 ioport()
 {
 TRISA=0x01; //入出力設定 RA0ポートを入力他は出力に
 TRISB=0x00; //入出力設定 RBポートすべて出力に
 }
//------------------------------------------------

 main()
 {
     ioport();
     out_port=1; //初期値
     RB0 = 1; //RB0点灯 start確認

     while(1){
          while(RA0){ //スイッチが押されるのを待つ
          }
          DelayMs(50); //チャタリングを取る
          if(RA0==1){
          continue;
          }
          printf("Hello my World!\n\r");
      }
 }

//----------------- END ---------------------------


注)CONFIG の先頭はアンダーバー2つです。



pucth.c
 #include <pic.h>
 #include "delay.h"

 void putch(unsigned char tx_byte) /* 約2400bps,8N1で1バイトだけ */

 {                      /* シリアル・データを送る */
      int i;

      RA1=0; /* スタート・ビット */

      DelayUs(12);

      for(i=0;i<10;i++){

           DelayUs(200);
           DelayUs(196);

           RA1=(tx_byte&0x01); /* データ・ビット */

           tx_byte>>=1;
           tx_byte|=0x80; /* ストップ・ビットを作っておく */
      }
 }

pucth.h
 void putch(unsigned char); 

delay.h
下の部分を「4MHZ」と書き換える
 #ifndef XTAL_FREQ
 #define XTAL_FREQ 4MHZ       /* Crystal frequency in MHz */
 #endif

⇒Next