frame_decoration

とりあえず動かしたいとき

テンプレートをコピペでおk

コンフィギュレーションワード

PIC #fuses
16f84a HS,NOWDT,PUT
16f648a INTRC_IO,NOWDT,NOPROTECT,PUT,NOMCLR,NOLVP,NOBROWNOUT
16f877 HS,NOWDT,PUT,NOPROTECT,BROWNOUT,NOLVP,NOCPD,WRT
この辺使っとけば問題ないしょ
648aのは内部発信機


シリアル通信

#use RS232(BAUD=9600,XMIT=PIN_A0,RCV=PIN_A1)
この例だと送信ピンがA0、受信ピンがA1
ボーレートは早すぎると通信失敗するので9600くらいがちょうどいい


CRCコード(やっつけ)

以下のプログラムでCRCコードが生成できるので
①送信側でデータからCRC生成
②データ+CRCを送信
③受信側でデータからCRC生成、送られてきたCRCとチェック
#define GG 9
unsigned crc_code(int len, char *data){
	int i;
	unsigned d;
	unsigned bit;
	unsigned crc;
	
	d=0;
	while (len-- >0)  d=((d<<8)+*data++)%GG;
	
	crc=0;
	d=(d<<4)%GG;
	if(d>0){
		for(i=0,bit=1;i<16;i++,bit<<=1){
			if(((d+crc)^GG) & bit) crc|=bit;
		}
	}
	return crc;
}
デバイスコードの下位ビットが余ってて無理やり詰め込んだので巡回長が小さいまま
気休め程度に・・・


構造体ビットフィールド

struct int2bit{
	unsigned int a :	1;
	unsigned int b :	1;
	unsigned int c :	1;
	unsigned int d :	1;
	unsigned int e :	1;
	unsigned int f :	1;
	unsigned int g :	1;
	unsigned int h :	1;
};
int2bit data=0b00100000;
下位ビットからabcdefが割り当たる
data.fで1のビットにアクセスできる
連続してデータを取得したいときはビットシフト(<<,>>)を使えばいいので意味なかったorz

Linux16F84シミュレータ

simulpic
synapticからインストール可
最終更新:2008年02月05日 20:34