/* <trcar.c > */
#include <pic.h>/* ヘッダ・ファイル,HI-TECH PICC Lite v8.02PL1*/
#include "delay.h"/* HI-TECH PICC Lite v8.02PL1のサンプルdelay.cをリンク*/
/* タイマー関数、DelayMs(x)使用のため */
__CONFIG(0x3FFA);
/* コンフィギュレーション・ビットの設定
コード・プロテクト=OFF,パワーアップ・タイマ=OFF
ウォッチドッグ・タイマ=OFF,HS発振
__CONFIG(**11111111111010B);
*/
/*
*************************************************************************
PORT-Bに出力{モーター2個(M1,M2)、ドライブIC=TA7291S}で制御及びLED点滅
<< I/Oマップ >>
< RA0(出力)/NC(接続なし)
< RA1(出力)/NC(接続なし)
< RA2(出力)/NC(接続なし)
< RA3(入力)/NC(接続なし)
< RB0(入力)/右光センサー(L=白、H=黒)
< RB1(入力)/左光センサー(L=白、H=黒)
< RB2(出力)/IN2(モータードライブIC1)
< RB3(出力)/IN1(モータードライブIC1)
< RB4(出力)/IN2(モータードライブIC2)
< RB5(入力)/IN1(モータードライブIC2)
< RB6(出力)/LED(L=点灯、H=消灯)
< RB7(出力)/LED(L=点灯、H=消灯)
*************************************************************************
*/
#define MASK1 0x03 /* 00000011 */
#define SEN_LR_BL 0x03 /* 00000011 左右センサ=黒 */
#define SEN_L_BL 0x02 /* 00000010 左センサ=黒(右=白) */
#define SEN_R_BL 0x01 /* 00000001 右センサ=黒(左=白) */
#define SEN_LR_WH 0x00 /* 00000000 左右センサ=白 */
int main(void) {
int in_sen,work;
TRISA = 0xFF; /* control lines are input */
TRISB = 0x03; /* Port B:0,1-input 2~7 output
*/
while(1){
in_sen=PORTB;
work=in_sen & MASK1;
if(work== SEN_LR_WH){ /* 左右センサ(白:L) ==>
前進 */
PORTB = 0xc3;/* 11000011 */
DelayMs(10); /* 0.01Sec
*/
PORTB = 0xeb;/* 11101011 */
DelayMs(50); /* 0.05Sec */
}
else if(work==SEN_LR_BL){ /* 左右センサ(黒:H)
==> 前進 */
PORTB = 0x03;/* 00000011 */
DelayMs(10); /* 0.01Sec
*/
PORTB=0x2b; /* 00101011
*/
DelayMs(50);/* 0.05Sec */
}
else if(work==SEN_R_BL){ /* 右センサのみ(黒:H)
左車前進 */
PORTB = 0x83; /* 10000011
*/
DelayMs(10); /* 0.01Sec
*/
PORTB = 0xa3; /* 10100011
*/
DelayMs(50); /* 0.05Sec
*/
}
else if(work==SEN_L_BL){ /* 左センサのみ(黒:H)
右車前進 */
PORTB=0x43; /* 01000011
*/
DelayMs(10); /* 0.01Sec
*/
PORTB=0x4b; /* 01001011
*/
DelayMs(50); /* 0.05Sec
*/
}
}
return 0;
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
戻る