DCモータ制御回路のプログラムコード
1章:MPLABR X IDE v2.25開発環境の構築、「newmain18.cの内容変更ファイル」をベースに修正しました。
(1)タイマ0割込み設定関数
void InitInterTimer0 (void)
{
// クロック源を内部クロックに設定
T0CS = 0;
// プリスケーラをタイマ0に割り当て
PSA = 0;
// プリスケーラ値を16に設定=割込み周波数=48MHz/(4*256*16)=2930Hz
T0CONbits.T0PS0 = 1;//PIC18F4553
T0CONbits.T0PS1 = 1;//PIC18F4553
T0CONbits.T0PS2 = 0;//PIC18F4553
// TMR0レジスタをクリア
TMR0 = 0x0000;
// タイマ0割込みフラグをクリア
T0IF = 0;
// タイマ0割込みの許可
T0IE = 1;
}
(2)割込み処理
void interrupt SYS_InterruptHigh(void)
{
if(T0IF == 1)
{
switch (gM)
{
case 0:
if(gCTgTN){gCT=0;}
// タイマ0割込みフラグをクリア
T0IF = 0;
}
}
(3)void main(void)
void main(void)
{
init();
InitInterTimer0();
// 割込み全体の許可
GIE = 1;
n = 20;
while(1)
{
for ( int i = 0; i < n; i++ ) __delay_ms( 2 ); //10mS
LED = !LED;
if(SW2 == 0)
{
gM=1;
n = n+1;
if (n >= 20)
{
n = 1;
}
gSP--;
if(gSP<0){gSP=0;}
}
if(SW1 == 0)
{
gM=0;
n = n-1;
if (n <= 1)
{
n = 20;
}
gSP++;
if(gSP>99){gSP=99;}
}
}
}