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