Sunteți pe pagina 1din 2

3.1.

Control de velocidad 30

3.1.2. Programa para control de velocidad


Para el programa se utilizaron los 8 bits del puerto B como entradas y 2 bits del puerto A se utilizaron como salida hacia el driver para controlar el motor. Los ocho bits de entrada del puerto B, indican el tiempo que durara el ciclo de trabajo o el ancho de pulso, por ejemplo, si se quiere que el ciclo de trabajo o el ancho de pulso sea del 50% se coloca en el puerto B la palabra 80h (10000000
b

) y por lo tanto el motor girara de manera constante a una velocidad dada. En cambio si se quire que el motor ofrezca su maxima ve locidad se coloca la palabra FFh. El codigo utilizado se muestra en seguida. LIST P=16F873 ;Usaremos el PIC16F873-04/P RADIX HEX ;Todo en hexadecimal w EQU 0 ;Cuando d=0 el destino es w f EQU 1 ;Cuando d=1 el destino es f ;****************Declaracion de las variables****************** PUERTOA EQU 05 PUERTOB EQU 06 ESTADO EQU 03 ;********Variables auxiliares para el retardo************* AUX1 EQU 0F AUX2 EQU 0E AUX3 EQU 0C ORG 0 goto inicio ORG 5 ;***************Configuracion de Entradas/Salidas************** 3.1. Control de velocidad 31 inicio bsf ESTADO,5 ;Apertura del banco 1 clrw ;Se limpia w (w=00h) movwf PUERTOA ;PUERTOA como salidas movlw 0x0FF movwf PUERTOB ;PUERTOB como entradas bcf ESTADO,5 ;Cierre del banco 1 ;**************Programa principal******************************* clrf PUERTOA ;Todo apagado en el puerto A ciclo movf PUERTOB,w ;Mueve lo del puerto de entrada a W movwf AUX2 ;Mueve w a la direccion de memoria que ;apunta AUX2 (0Eh) ;********Calculo de tiempo que durara en bajo la se~nal****** sublw 0x0FF ;Resta el valor de entrada a FFh y se ;guarda en w

movwf AUX3 ;se mueve el resultado de la resta a la ;direccion que apunta AUX3 (0Ch) ;********************************************************** * movf AUX2,w addlw 0X01 movwf AUX2 decfsz AUX2,f goto uno goto cero ;********************************************************** uno movlw 0x01 ;Lleva el valor 01h a W movwf PUERTOA ;Lleva W al puerto A call retardo ;Llamado de el divisor de frecuencia decfsz AUX2,f ;Se decrementa AUX2 y se deposita en ;ella misma y si llega a cero cambia ;la salida a 00h goto uno ;si no es cero se repite cero movlw 0x00 ;Lleva el valor 00h a W movwf PUERTOA ;Lleva W al puerto A call retardo ;Llamado de el divisor de frecuencia decfsz AUX3,f ;Se decrementa AUX3 y se deposita en ;ella misma y si llega a cero ;salta a la ultima instruccion Universidad de Guanajuato FIMEE 3.1. Control de velocidad 32 goto cero ;si no es cero se repite ;********************************************************* goto ciclo ;Vuelve a iniciar ;***************Rutina de retardo***************************** ;Esta rutina se utiliza como un divisor de frecuencia, ya que no ;se puede utilizar la frecuencia del PIC de manera directa. retardo movlw 0x90 movwf AUX1 ;se lleva este valor tambien a AUX2 one decfsz AUX1,f ;Se decrementa AUX1 y se deposita en ;ella misma goto one ;si llega a cero sale e la rutina return ;Una vez completados los ciclos se regresa ;al programa principal END ;Fin del programa

S-ar putea să vă placă și