-----------------------------プログラムソース 本体---------------------------------
#include <htc.h>


__CONFIG(FCMDIS & IESODIS & BORDIS & UNPROTECT & MCLRDIS & PWRTEN & WDTDIS & INTIO);
__IDLOC(1207);


	ioport();
  #define _XTAL_FREQ 31000	/* 31kHz */
  #define wait 50		/* 50ミリ秒 */
p1();
p2();
p3();
p4();
pp1();
pp2();
pp3();
pp4();
pluse();
revs();


inpot();	
f_flug1();
f_flug2();
f_flug3();

int pon=1;
int poff=0;

int kai;
int n=20;
int flug1=0;
int flug2=0;
int flug3=0;

main()
{
	OSCCON=0x00;			/* 31kHz */
	ioport();

	while(1){
/*正回転*/
			if(RA5==0){
			 	f_flug1();
				flug3=0;
			}
			if(RA5==1 && flug1==1) pluse(); 
/*逆回転*/		
			if(RA3==0){
				f_flug3();
				flug1=0;
			}
			if(RA3==1 && flug3==1) revs(); 
/*停止*/			
			if(RA4==0) f_flug2();
			if(RA4==1 && flug2==1){
			 	flug1=0;
				flug2=0;
				flug3=0;
			}


	}////whileの最後


}////メインの最後

//******************* 関数 *******************
pluse()/*正回転*/
{
	pp1();
	pp2();
	pp3();
	pp4();
	flug1=0;
}

revs()/*逆回転*/
{
	pp4();
	pp3();
	pp2();
	pp1();
}

f_flug1()
{
flug1=1;
}

f_flug2()
{
flug2=1;
}

f_flug3()
{
flug3=1;
}

/* 2磁励 pp1-pp4 */
pp1()
{
	RA2=pon;
	RC0=pon;
	RC1=poff;
	RC2=poff;
		__delay_ms(wait);
}

pp2()
{
	RA2=poff;
	RC0=pon;
	RC1=pon;
	RC2=poff;
		__delay_ms(wait);
}
pp3()
{
	RA2=poff;
	RC0=poff;
	RC1=pon;
	RC2=pon;
		__delay_ms(wait);
}
pp4()
{
	RC0=poff;
	RC1=poff;
	RC2=pon;
	RA2=pon;
		__delay_ms(wait);
}

	
/* 1磁励 p1-p4 */
p1()
{
	RA2=pon;
		__delay_ms(wait);

	RA2=poff;
		__delay_ms(wait);
}
p2()
{
	RC0=pon;
		__delay_ms(wait);

	RC0=poff;
		__delay_ms(wait);
}
p3()
{
	RC1=pon;
		__delay_ms(wait);

	RC1=poff;
		__delay_ms(wait);
}
p4()
{	
	RC2=pon;
		__delay_ms(wait);

	RC2=poff;
		__delay_ms(wait);
}



ioport()
{

		ANSEL=0x00;			/* AN4-7はデジタルI/Oモード */
		CMCON0=0x07;
		TRISA=0xFB;			/* RA0,1,3,4,5は入力ピン RA2は出力ピン*/
		TRISC=0;			/* RC0-5は出力ピン */
		PORTA=0xFB;			/* RA0,1,3,4,5はH RA2はL*/
		PORTC=0;			/* RC0-5はL */

}

-----------------------------プログラムソース END---------------------------------