|
|
|
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 |
|
|