Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Programa de regulación de velocidad de un motor de corriente continua mediante la modulación
- ;de anchura de pulso(PWM). Por la linea de salida se genera una onda cuadrada de frecuencia
- ;constante s 100Hz(periodo de 10 ms) y ciclo de trabajo variable desde 0% a 100%, dependiendo
- ;del valor de la entrada del Puerto A. Es decir, el tiempo en alto varia entre 0 ms (0%) y 10
- ;ms (100%) de acuerdo con la siguiente tabla:
- ; (Ciclos_ON) (Ciclos_OFF)
- ; Entrada CD(%) SEMIPERIODO ALTO SEMIPERIODO BAJO
- ; ------- ----- ---------------- ----------------
- ; 0 0% 0 mn = 0 x 1 ms 10 ms = 10 x ms
- ; 1 10% 1 ms = 1 x 1 ms 9 ms = 9 x 1 ms
- ; 2 20% 2 ms = 2 x 1 ms 8 ms = 8 x 1 ms
- ; ... ... -------- -------
- ; 9 90% 9 ms = 9 x 1 ms 1 ms = 1 x 1 ms
- ; 10 100% 10 ms = 10 x 1 ms 0 ms = 0 x 1 ms
- ; >10 0%
- ;
- ;ZONA DE DATOS***************************************************************************
- __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
- LIST P=16F84A
- INCLUDE <P16F84A.INC>
- CBLOCK 0x0C
- Ciclos_ON
- Ciclos_OFF
- GuardaEntrada
- Var
- ENDC
- MaximaEntrada EQU .10
- ;ZONA DE CODIGOS*************************************************************************
- ORG 0
- Inicio:
- bsf STATUS,RP0
- movlw b'00001111' ;RA3:RA0 como entradas.
- movwf TRISA
- clrf TRISB ;Las lineas del Puerto B se configuran como salidas.
- bcf STATUS,RP0
- Principal
- movf PORTA,W ;Lee el puerto de entrada.
- andlw b'00001111'
- movwf GuardaEntrada ;Guarda el valor.
- btfsc STATUS,Z ;Si RA3:RA0=0 el motor se detiene
- goto DC_CeroPorCiento
- sublw MaximaEntrada ;(W)=10-(PORTA)
- btfsc STATUS,Z
- goto DC_100PorCiento
- btfss STATUS,C ;¿C=1?,¿(w)positivo?,¿(PORTA)<=10?.
- goto DC_CeroPorCiento ;Ha resultado(PORTA>10).
- movwf Ciclos_OFF ;10-(PORTA)-->(Ciclos_OFF).
- movf GuardaEntrada,W
- movwf Ciclos_ON ;Carga RA3:RA0 en (Ciclos_ON).
- Motor_ON
- movlw b'10000000' ;Habilita los drivers y un sentido de giro.
- movwf PORTB
- call Retardo_1ms
- decfsz Ciclos_ON,F ;Si(Ciclos_ON)=0 salta a Motor_OFF.
- goto Motor_ON ;+2
- Motor_OFF
- clrf PORTB ;Inhabilita los drivers. Motor parado.
- call Retardo_1ms
- decfsz Ciclos_OFF,F ;Si(Ciclos_OFF)=0 salta a Principal.
- goto Motor_OFF ;+1
- goto Fin
- DC_CeroPorCiento
- clrf PORTB ;Inhabilita los drivers. Motor Parado.
- goto Fin
- DC_100PorCiento
- movlw b'10000000' ;Habilita los drivers y un sentido de giro
- movwf PORTB
- Fin:
- goto Principal
- INCLUDE<RETARDO.INC>
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement