FUENTE LABORATORIO PIC 18F2550 (CÓDIGO) PROTON IDE COMPILER
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : *
'* Notice : Copyright (c) 2020 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 31/05/2020 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Device 18F2550
Declare Onboard_USB No
; Palabra de configuración
Config_Start
FOSC=XT_XT,USBDIV=2,PLLDIV=1,VREGEN=On,PBADEN=OFF
FCMEN=OFF,IESO=OFF,PWRT=On,WDT=OFF,LVP=OFF
Config_End
;*******************************************************************************
Xtal 4MHz ; Definir una frecuencia de 48MHz. (CPU Core)
;OSCCON = %11100000
Declare LCD_Type = 0
Declare LCD_RSPin PORTB.1 ;Pin rs de la lcd por portd.1
Declare LCD_ENPin PORTB.2 ;Pin enable de la lcd por puertod.3
Declare LCD_DTPin PORTB.4 ;Portd.4, portd.5, portd.6, portd.7, como pines de datos de la lcd (d4, d5, d6, d7)
Declare LCD_Lines = 4 ;Configura lcd de 2 lineas
All_Digital 1
Declare LCD_Interface 4
Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 50
PORTB = 1
;Adin_Delay es el número de microsegundos que el programa espera
;entre fijar el canal y comenzar la conversión analogica/digital.
TRISA =%1 ;el puerto A.0 es de entrada
ADCON1 = %00001110 ;el puerto A.0 es conversor los demás Digitales
Dim ADVA1 As Word ' Create ADVAL to store result
Dim ADVA2 As Word
Dim ADVA3 As Word
Dim ADVA4 As Word
Dim ADV44 As Word
Dim ADV1L As Float
Dim ADV2L As Float
Dim ADV3L As Float
Dim ADV4L As Float
Dim ADc4L As Float
Dim VAR1 As Float
Dim VAR2 As Float
Dim VAR3 As Float
' Set PORTA analog and right justify result
DelayMS 500 ' Wait .5 second
Cls ' Clear LCD
PROCESO: ' Create an infinite loop
GoSub LECT_ADC
GoSub IMPRIME1
If ADc4L > 56 Then
GoSub IMPRIME2
GoSub CALCULO1
End If
GoSub CALCULO2
GoTo PROCESO
LECT_ADC:
' Create an infinite loop
ADVA1 = ADIn 0
ADV1L = (ADVA1 /1023)*0.7938931297709924
DelayMS 30
ADVA2 = ADIn 1
ADV2L = (ADVA1 /1023)*0.7938931297709924
DelayMS 30
ADVA3 = ADIn 2
ADV3L = (ADVA1 /1023)*0.7938931297709924
DelayMS 30
GoSub CALCULO2
Return
CALCULO2:
ADV44 = ADIn 3
ADVA4 = ADIn 3
ADc4L = (ADV44 *2100/ 1024)
If ADc4L > 5 And ADc4L < 55 Then
ADVA4 = ADIn 3
ADV4L = (ADVA4 *2100/ 1024)
Print At 2,9,"T ",Dec1 ADV4L," "
DelayMS 320
Else
ADV4L=0.0
DelayMS 2
ADVA4 = ADIn 3
ADV4L = (ADVA4*0.273972602739726)*0.7938931297709924
Print At 2,9,"Vb",Dec1 ADV4L," "
DelayMS 320
End If
Return
IMPRIME1:
If ADc4L > 56 Then
Else
Print At 1,1,"V ",Dec2 ADV1L,""
Print At 2,1,"V ",Dec2 ADV2L,""
Print At 1,9,"A ",Dec1 ADV3L*500,""
Print At 2,9,"P ",Dec2 ADV1L*ADV3L,""
DelayMS 100
End If
Return
IMPRIME2:
If ADV4L > 30 Then
Print At 2,1,"F ON "
Else
Print At 2,1,"F 0FF "
End If
Return
CALCULO1:
VAR1=0
VAR2=0
VAR3=0
DelayMS 1
VAR1=ADV1L
VAR2=ADV2L
VAR3=ADV3L
DelayMS 1
If VAR1 > 1 And VAR1 < 2 Then
Print At 1,1,"1Bt ",Dec1 ADV1L,"v "
PORTC.1=1
PORTC.0=0
DelayMS 350
PORTC.1=0
PORTC.0=1
DelayMS 350
Else
Print At 1,1," "
End If
If VAR1 > 3 And VAR1 < 4.5 Then
Print At 1,1,"2Bt ",Dec1 ADV1L,"v "
PORTC.1=1
PORTC.0=0
DelayMS 350
PORTC.1=0
PORTC.0=1
DelayMS 350
Else
Print At 1,1," "
End If
If VAR1 >4.6 And VAR1 < 7.6 Then
Print At 1,1,"3Bt ",Dec1 ADV1L,"v "
PORTC.1=1
PORTC.0=0
DelayMS 350
PORTC.1=0
PORTC.0=1
DelayMS 350
Else
Print At 1,1," "
End If
If VAR1 > 8 And VAR1 < 10.8 Then
Print At 1,1,"4Bt ",Dec1 ADV1L,"v "
PORTC.1=1
PORTC.0=0
DelayMS 350
PORTC.1=0
PORTC.0=1
DelayMS 350
Else
Print At 1,1," "
End If
If VAR1 >10.9 And VAR1 < 13.8 Then
Print At 1,1,"5Bt ",Dec1 ADV1L,"v "
PORTC.1=1
PORTC.0=0
DelayMS 350
PORTC.1=0
PORTC.0=1
DelayMS 350
Else
Print At 1,1," "
End If
PORTC.1=0
PORTC.0=0
DelayMS 2
Return
Comentarios
Publicar un comentario