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

Entradas populares de este blog

Voltimetro con pic CCS compemdio

VOLTIMETRO CON PIC CCS PROTEUS