Pwm con pic y botones


unsigned short j, oj;

void InitMain()
{
  osccon = 0x77;          // oscilador a 8MHz
  PORTB = 0;              // Set PORTB to 0
  TRISB = 0;              // PORTB son salidas

  ADCON1 = 6;             // todo pin ADC a digital I/O
  PORTA = 255;
  TRISA = 255;            // PORTA como entradas

  PORTC = 0xFF;           // Set PORTC to $FF
  TRISC = 0;              // PORTC son salidas
  Pwm_Init(5000);         // Inicializa el modulo PWM
}//~

void main() {
  InitMain();
  j   = 80;               // valor inicial para j
  oj  = 0;                // oj will keep the 'old j' value
  Pwm_Start();            // Empieza PWM

  while (1) {             // ciclo infinito
    if (Button(&PORTA, 0,1,1))   // presiona el boton en RA0
      j++ ;                      //    incrementa j
    if (Button(&PORTA, 1,1,1))   // presiona el boton en RA1
      j-- ;                      //    decrementa j

    if (oj != j) {        // si cambia el ciclo,
      Pwm_Change_Duty(j); //   cambia la frecuencia,
      oj = j;             //   se menoriza,
      PORTB = oj;         //   and display on PORTB
    }
    Delay_ms(200);        // retardo de 200ms
  }
}


Comentarios