Только резистор надо поставить между En1 и RB3.Каким номиналом?Или не нужен?
Так правильно?
Motor.h
Цитата:
char motor_duty_=127;
char motor_init_=0;
void Motor_Init()
{ if (motor_init_==0)
{motor_init_=1;
TRISB.F0=0;
TRISB.F1=0;
Pwm_Init(5000);
}
}
void Change_Duty(char speed)
{
if (speed != motor_duty_)
{
motor_duty_=speed;
Pwm_Change_Duty(speed);
}
}
void Motor_A_FWD()
{Pwm_Start();
PORTB.F0=0;
PORTB.F1=1;
}
void Motor_A_BWD()
{Pwm_Start();
PORTB.F0=1;
PORTB.F1=0;
}
void Motor_A_OFF()
{Pwm_Stop();
PORTB.F0=0;
PORTB.F1=0;
}
void Forward(char speed)
{Motor_Init();
Change_Duty(speed);
Motor_A_FWD();
}
void Backward(char speed)
{Motor_Init();
Change_Duty(speed);
Motor_A_BWD();
}
void Motor_Stop()
{Motor_Init();
Change_Duty(0);
Motor_A_OFF();
}
|
Сама программа
Цитата:
#include <motor.h>
void main()
{
CMCON=7;
PORTB = 0;
TRISB = 0;
while (1)
{
Forward(10);
delay_ms(2000);
Forward(255);
delay_ms(2000);
Motor_Stop();
delay_ms(1000);
Backward(255);
delay_ms(1000);
Motor_Stop();
delay_ms(1000);
}
}
|