Navegando por
Categoría: PIC16F84

PIC16F84 – Control PID

PIC16F84 – Control PID

Problema propuesto Emular un Controlador Discreto PID con el PIC16F84. Utilizar una gestión de tiempos con interrupción por temporizador. Se supone que la referencia es un valor interno, Referencia. Para simplificar se supone que el actuador y el sensor manejan la información en complemento a 2. Cada 0.01 debe leer el sensor, LeerPortB. Cada 0.1s debe: Calcular MedidaFiltrada como un promedio de las 8 últimas lecturas del sensor. Se puede realizar la media sumando dos elementos y un desplazamiento a…

Leer más Leer más

PIC16F84 – Multiplicación de números de 8 bits

PIC16F84 – Multiplicación de números de 8 bits

Problema Propuesto Implementar una subrutina que multiplique dos números de 8 bits utilizando el algoritmo de sumas parciales. Solución list p=16F84A include P16F84A.INC ;—————————————————————— multiplicando equ 0x0C ;dato a sumar multiplicador equ 0x0D ;veces a sumar DH equ 0x0E ;byte alto DL equ 0x0F ;byte bajo ;—————————————————————— org 00h ;Vector de Reset goto INICIO org 0x05 ;Vector de interrupción INICIO call multiplica ;subrutina goto dormir ;hemos acabado MULTIPLICA clrf DH clrf DL movf multiplicador,W ;W = multiplicador btfsc status,Z ;Salta…

Leer más Leer más

PIC16F84 – Puertos de entrada y salida

PIC16F84 – Puertos de entrada y salida

Problema propuesto Se trata de que el programa lea la entrada del puerto A y lo refleje en el puerto B. El programa deberá dormirse cuando los interruptores de entrada tengan la configuración «11111». Solución ;————————————————————————- list p=16F84A include P16F84A.INC ;————————————————————————- org 00h ;VectordeReset goto INICIO org 0x05 ;Vector de interrupción INICIO clrf PORTB ;NumB->W (Acumulador) bsf STATUS,RP0 ;Banco = 1 clrf TRISB ;Puerto B como salida movwf b’00011111′ ; movwf TRISA ;Puerto A como entrada bcf STATUS,RP0 ;Banco =…

Leer más Leer más