Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Un detalle crees que este usando por las huevas los 3 16f628aEspero tu pronta respuesta
'***********************************************************
'Pruebas para inciarse en el control de iluminación led por PWM
'Tres PWM por software
'***********************************************************
'Configuración de fuses y reloj
Define CONF_WORD = 0x2f50
Define CLOCK_FREQUENCY = 4
'Configuración de módulos
AllDigital 'Los pin analogicos/digitales trabajaran como digitales
TRISA = 0 'Puerto A configurado como salidas, execto RA5 que solo trabaja como entrada
TRISB = 0 'Puero B configurado como salidas
PORTB = 0 'Puerto B puesto a cero todos sus pin
'Rutina principal
main:
Dim cont As Word 'Contador incremento potencia de los PWMs
Dim pwm0 As Byte 'Potencia PWM 0
Dim pwm1 As Byte 'Potencia PWM 1
Dim pwm2 As Byte 'Potencia PWM 2
Const cont_s = 5 'Intervalo incremento Potencias
Dim x As Bit 'Variable auxiliar
pwm0 = 0 'Potencia inicial 0% PWM0
pwm1 = 255 'Potencia inicial 100€ PWM1
pwm2 = 127 'Potencia inicial 50% PWM2
x = 0
While x = 0 'Bucle principal
Call _pwm_rb(pwm0, pwm1, pwm2) 'Controla y actualiza los PWMs
If cont >= cont_s Then 'Intervalo del incremento de potencias
pwm0 = pwm0 + 1
pwm1 = pwm1 - 1
cont = 0
Endif
cont = cont + 1
Wend
End
'Funcion para practicas con control de potencia con 3 PWM (software)
'Para control con positivo comun
'Pin utilizado RB0 a RB2 del puerto B
'Frecuencia aproximada 230Hz a 8Mhz de CLK.
'Tres valores de entrada mediante _pwm0 a _pwm2
'Con valores comprendidos entre 0 a 255 pasos de potencia
Proc _pwm_rb(_pwm0 As Byte, _pwm1 As Byte, _pwm2 As Byte)
Const periodo = 255 'Periodo de la señal
Dim ctrl As Byte 'Lleva el tiempo transcurrido del periodo
If _pwm0 > 0 Then RB0 = 0 'Pin a OFF
If _pwm1 > 0 Then RB1 = 0 'Pin a OFF
If _pwm2 > 0 Then RB2 = 0 'Pin a OFF
ctrl = 0 'Comienza ciclo
While ctrl < periodo 'Mientras no se complete el periodo
If ctrl >= _pwm0 Then RB0 = 1 'Pin a ON
If ctrl >= _pwm1 Then RB1 = 1 'Pin a ON
If ctrl >= _pwm2 Then RB2 = 1 'Pin a ON
ctrl = ctrl + 1 'Tiempo transcurrido del periodo
Wend
End Proc
'===============================================================
'Codigo de ADC aplicado al pic 16f877a
'No tengo placa entrenadora solo mi proteus y mi protoboard
'No es codigo robado de nadie xD, por fin!
'===============================================================
'Defino parametros del microcontrolador
Define CONF_WORD = 0x3f71
Define CLOCK_FREQUENCY = 4
'Configuro puertos
TRISA = 0
TRISB = 0
TRISC = 0
TRISD = 0
ADCON1 = 0x0e
'Declaro una variable an0
Dim an0 As Word
'Programa:
'Analisa el valor del ADC
'Si cumple la condicion enciende un led
loop:
Adcin 0, an0
If an0 > 50 Then
RB0 = 1
Else
RB0 = 0
Endif
If an0 > 100 Then
RB1 = 1
Else
RB1 = 0
Endif
If an0 > 150 Then
RB2 = 1
Else
RB2 = 0
Endif
If an0 > 200 Then
RB3 = 1
Else
RB3 = 0
Endif
Goto loop
End