# pwm con pic16f877a en mikrobasic pro



## XAVINET (Feb 19, 2012)

hola amigos estoy creando un programa en MIKROBASIC PRO donde pueda controlar un motor por PWM variando con un potenciomerto conectado a una entrada A/D del puertoA.0. 
pero mi proyectoque funciona asi, que al presionar el boton pulsador activa el puertob.1, luego de un tiempo el puertob.2 y luego la salida pwm del puertoc.2........ bueno hasta el momento funciona ok.
PERO QUISIERA QUE ME AYUDEN POR FAVOR A PARAR EL PWM VOLVIENDO A PRESIONAR EL PULSADOR...
AQUI LES DEJO MI CODIGO FUENTE Y LES A DJUNTO EL DISEÑO...
-----------------------------------------------------

program ALIMENTADOR

' Declarations section
dim  DutyCycle as  integer
dim adc_value as integer
dim a as byte
  trisb.0=1       ' portb.0 como entrada
  trisb.1=0       ' portb.1 como salida  "2t 4t"
  trisb.2=0       'portb.2 como salida "valvula solenoide"
 portb.1=0
  portb.2=0

main:
  if button(portb,0,100,0)then 'espera un pulso de 0
     while portb.0=0           'espera sin hacer nada hasta q se halla
                         'liberado el pulsador
      wend
          delay_ms(500)   'retardo al momento de soltar el pulsador
    if portb.1= 0  then
        setbit(portb,2)'mandar un pulso alto
        delay_ms(2000)   'retardo de 2 segundos
        setbit(portb,1)  'si el led estaba apagado lo prende
             PWM1_Init (5000)' inicialización del módulo PWM (5 kHz)
     PWM1_Start () ' Inicio PWM1 módulo con Zero DC
     PWM1_Set_Duty (DutyCycle)

    main2:

    adc_value = ADC_Read (0)
    DutyCycle = adc_value >> 2 ' Convertir el valor 10-bit ADC a 8 bits
    PWM1_Set_Duty (DutyCycle)

    goto main2
          else
         pwm1_stop()

    end if

   end if
   goto main

end.


----------

