/* <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;
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
戻る