-----------------------------プログラムソース 本体--------------------------------- #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---------------------------------