Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Programa de regulación de velocidad de un motor de corriente continua mediante la modulación
  2. ;de anchura de pulso(PWM). Por la linea de salida se genera una onda cuadrada de frecuencia
  3. ;constante s 100Hz(periodo de 10 ms) y ciclo de trabajo variable desde 0% a 100%, dependiendo
  4. ;del valor de la entrada del Puerto A. Es decir, el tiempo en alto varia entre 0 ms (0%) y 10
  5. ;ms (100%) de acuerdo con la siguiente tabla:
  6.  
  7. ;                                           (Ciclos_ON)             (Ciclos_OFF)
  8. ;           Entrada         CD(%)       SEMIPERIODO ALTO        SEMIPERIODO BAJO
  9. ;           -------         -----       ----------------        ----------------
  10. ;               0           0%           0 mn = 0 x 1 ms        10 ms = 10 x ms
  11. ;               1           10%          1 ms = 1 x 1 ms         9 ms = 9 x 1 ms
  12. ;               2           20%          2 ms = 2 x 1 ms         8 ms = 8 x 1 ms
  13. ;               ...         ...             --------                -------
  14. ;               9           90%          9 ms = 9 x 1 ms         1 ms = 1 x 1 ms
  15. ;               10          100%        10 ms = 10 x 1 ms        0 ms = 0 x 1 ms
  16. ;               >10         0%
  17. ;
  18. ;ZONA DE DATOS***************************************************************************
  19.  
  20.         __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
  21.         LIST    P=16F84A
  22.         INCLUDE <P16F84A.INC>
  23.        
  24.         CBLOCK 0x0C
  25.         Ciclos_ON
  26.         Ciclos_OFF
  27.         GuardaEntrada
  28.         Var
  29.         ENDC
  30.        
  31.     MaximaEntrada   EQU     .10
  32.    
  33. ;ZONA DE CODIGOS*************************************************************************
  34.  
  35.         ORG     0
  36.     Inicio:
  37.         bsf     STATUS,RP0
  38.         movlw   b'00001111'             ;RA3:RA0 como entradas.
  39.         movwf   TRISA  
  40.         clrf    TRISB                   ;Las lineas del Puerto B se configuran como salidas.
  41.         bcf     STATUS,RP0
  42.     Principal
  43.         movf    PORTA,W                 ;Lee el puerto de entrada. 
  44.         andlw   b'00001111'
  45.         movwf   GuardaEntrada           ;Guarda el valor.
  46.         btfsc   STATUS,Z                ;Si RA3:RA0=0 el motor se detiene
  47.         goto    DC_CeroPorCiento
  48.         sublw   MaximaEntrada           ;(W)=10-(PORTA)
  49.         btfsc   STATUS,Z               
  50.         goto    DC_100PorCiento
  51.         btfss   STATUS,C                ;¿C=1?,¿(w)positivo?,¿(PORTA)<=10?.
  52.         goto    DC_CeroPorCiento        ;Ha resultado(PORTA>10).
  53.         movwf   Ciclos_OFF              ;10-(PORTA)-->(Ciclos_OFF).
  54.         movf    GuardaEntrada,W        
  55.         movwf   Ciclos_ON               ;Carga RA3:RA0 en (Ciclos_ON).
  56.     Motor_ON
  57.         movlw   b'10000000'             ;Habilita los drivers y un sentido de giro.
  58.         movwf   PORTB
  59.         call    Retardo_1ms
  60.         decfsz  Ciclos_ON,F             ;Si(Ciclos_ON)=0 salta a Motor_OFF.
  61.         goto    Motor_ON                ;+2
  62.     Motor_OFF
  63.         clrf    PORTB                   ;Inhabilita los drivers. Motor parado.
  64.         call    Retardo_1ms
  65.         decfsz  Ciclos_OFF,F            ;Si(Ciclos_OFF)=0 salta a Principal.
  66.         goto    Motor_OFF               ;+1
  67.         goto    Fin
  68.     DC_CeroPorCiento
  69.         clrf    PORTB                   ;Inhabilita los drivers. Motor Parado.
  70.         goto    Fin
  71.     DC_100PorCiento
  72.         movlw   b'10000000'             ;Habilita los drivers y un sentido de giro
  73.         movwf   PORTB
  74.     Fin:
  75.         goto    Principal
  76.        
  77.         INCLUDE<RETARDO.INC>
  78.     END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement