ArmandoCircuitos
Inicio
Electronica
Programacion
Diagrama
Codigo
//Función para generar el PWM de baja frecuencia //ajustado para cristal de 20MHz. void Pwm_Sevo( float ang ) { unsigned int n, max; max = 1.61 * ang; //0.70 para 4MHz PORTD.F0 = 1; delay_ms(1); //820uS para 4MHz for( n = 0; n < max; n++ ) delay_us(1); PORTD.F0 = 0; delay_ms(15); } void main() { float ANGULO = 90; //Angulo inicial. TRISD.F0 = 0; OPTION_REG.F7 = 0; while(1){ Pwm_Sevo(ANGULO); //Se genera un pulso. //Si se pulsa el botón de RB3 se decrementan 10 grados. if( PORTB.F3 == 0 ){ ANGULO -= 10.0; if( ANGULO < 0.0 ) ANGULO = 0.0; while( Button(&PORTB,3,5,0) ); } //Si se pulsa el botón de RB0 se incrementan 10 grados. if( PORTB.F0 == 0 ) { ANGULO += 10.0; if( ANGULO > 180.0 ) ANGULO = 180.0; while( Button(&PORTB,0,5,0) ); } } }
Descarga del archivo
Descargar archivo