Use Button For setup


Results 1 to 15 of 15

Threaded View

  1. #10
    Join Date
    Nov 2007
    Posts
    13


    Did you find this post helpful? Yes | No

    Default

    I am using an interrupt now I have pasted the whole code below in case i missed something with the interrupt.

    Code:
    @ DEVICE PIC16F877A,HS_OSC
    DEFINE  debug_mode  0            ' Debug sending True serial data
    DEFINE  debug_reg portc          ' Debug Port = PortC
    DEFINE  debug_bit 6              ' Debug.bit = PortC.6
    DEFINE  debug_baud 9600          ' Default baud rate = 9600
    DEFINE  osc 8                    ' We're using a X MHz oscillator
    DEFINE  ADC_BITS 8               ' Set A/D for 8-bit operation
    DEFINE  ADC_CLOCK 3              ' Set A/D clock r/c
    DEFINE  ADC_SAMPLEUS 50          ' Set A/D sampling time @ 50 uS
    Define  LCD_DREG        PORTD    ' Define LCD pins
    Define  LCD_DBIT        4        'use upper 4 bits d4-d7
    Define  LCD_RSREG       PORTD
    Define  LCD_RSBIT       2
    Define  LCD_EREG        PORTD
    Define  LCD_EBIT        3
    DEFINE  LCD_LINES       2
    Define LCD_COMMANDUS 2000        ' Command Delay (uS)
    Define LCD_DATAUS 50	         ' Data Delay (uS)
    Fan VAR PortC.2
    Idle Var PortC.3
    Save    Var portc.1
    Incr    VAR portc.4              ' Increment button
    Decr    VAR portc.5              ' Decrement button
    Season VAR PORTB.1               ' 1=summer 0=winter
    AtticSamples    VAR WORD         ' Multiple A/D sample accumulator
    AtticSample     VAR BYTE         ' Holds number of samples to take
    GarageSamples   VAR WORD         ' Multiple A/D sample accumulator
    GarageSample    VAR BYTE         ' Holds number of samples to take
    AtticTemp       VAR BYTE         ' Attic Temperature storage
    GarageTemp      VAR Byte         ' Garage Temperature Storage
    Hysterisis      VAR BYTE         ' Hysterisis 
    SetPoint        VAR BYTE         ' Temperature Setpoint
    
    SetPoint = 70
    AtticSamples = 0                 ' Clear samples accumulator on power-up
    GarageSamples = 0                ' Clear samples accumulator on power-up
    Hysterisis = 2
    TRISA = %11111111                ' Set PORTA to all input
    ADCON1 = %00000011               ' Set PORTA.0,1,2,5 = A/D, PortA.3 = +Vref
    TRISC.2 = 0
    intcon = %10010000               ' enable rbo interrupt 
             PAUSE 500               ' Wait .5 second
    
    powerup:
    on interrupt goto SetSetPoint 
    pause 500
         DEBUG "P",10,13    
         LCDOUT $fe, 1, "Heat Circulator"
         LCDOUT $fe, $C0, "By Sonic"
         DEBUG "PowerUp",10,13
       
    
    loop:
     
        toggle Idle
        FOR Atticsample = 1 TO 20    ' Take 20 samples
            ADCIN 0, AtticTemp       ' Read channel 0 into AtticTemp variable
            Atticsamples = Atticsamples + Attictemp ' Accumulate 20 samples
            PAUSE 250           ' Wait approximately 1/4 seconds per loop
        Toggle Idle
        NEXT Atticsample
            Attictemp = Atticsamples/20
         Toggle Idle
             
        FOR Garagesample = 1 TO 20    ' Take 20 samples
            ADCIN 1, Garagetemp       ' Read channel 1 into GarageTemp variable
            Garagesamples = Garagesamples + Garagetemp ' Accumulate 20 samples
           PAUSE 250           ' Wait approximately 1/4 seconds per loop
        Toggle Idle
        NEXT Garagesample
            Garagetemp = Garagesamples/20
          Toggle Idle    
            Pause   100             ' Do it about 10 times a second
    
       ; If Garagetemp >= 70 then GOSUB TempOK
        If Season=0 THEN goSUB Winter
        If SEASON=1 THEN goSUb Summer
        
    
    TempOK:
    '*****************************************************************************
    '** If temperature in garage is greater than or equal to SetPoint turn off ***
    '** circulator fan                                                         ***
    '*****************************************************************************
    
           LCDOUT $fe, 1, "CirculatorOff ", #AtticTemp,"F" ' Send to LCD Line 1
           Lcdout $fe, $C0, "GarageTemp >= ",#SetPoint, #GarageTemp,"F" 'Send to LCD Line 2 
                Fan = 0
            DEBUG "OK,",#SetPoint,"'","G",#GarageTemp,".","A",#AtticTemp,10,13
         Atticsamples = 0             ' Clear old sample accumulator
         Garagesamples = 0            ' Clear old sample accumulator
            pause 500
            goto loop
    
    Winter:
    ' if attic temp is greater than garage temp turn on ciculator fan
        If GarageTemp >= SetPoint then
        goto TempOK
        ENDIF    
        
        If AtticTemp > GarageTemp + Hysterisis Then 
            Fan = 1
        Else 
            Fan = 0                            'Turn OFF Fan Output
        endif
        
        GOTO Messages                                ' Do it forever
    
    Summer:
    ' if attic temp is less than garage temp turn on circulator fan    
        If GarageTemp > SetPoint then
       goto TempOK
       ENDIF    
        If AtticTemp + Hysterisis < GarageTemp Then 
          Fan = 1
        Else 
          Fan = 0
        endif
          
        GOTO Messages                                ' Do it forever
    
    SetSetPoint:
     DISABLE
     
     LCDOut $FE,1,  "Setpoint at", #SetPoint, "F"
         
          if Incr = 1 then        'change the setpoint
            pause 500
              SetPoint=SetPoint+1
          if Setpoint>80 then SetPoint=60   'Allow setpoint from 60 to 80 
             goto SetSetPoint               'refresh LCD with new setpoiont
           endif 
                             
           If Save = 0 then goto SetSetPoint
           
           LCDOut $FE,$C0,  "Saved Setpoint", #SetPoint, "F"            
               Resume 
              ENABLE
              goto loop 
            
    Messages:
        LCDOUT $fe, 1, "Attic=", #AtticTemp,"F", "  ",#Season ' Send to LCD Line 1
        Lcdout $fe, $C0, "Garage=", #GarageTemp,"F", " ",#Fan 'Send to LCD Line 2
        DEBUG DEC AtticTemp,",", DEC GarageTemp,",",#fan,",",#Season,10,13
         Atticsamples = 0             ' Clear old sample accumulator
         Garagesamples = 0            ' Clear old sample accumulator
    GOTO Loop
        END
    Last edited by tump; - 19th November 2007 at 20:30.

Similar Threads

  1. Sony SIRC IR Issue
    By Ryan7777 in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 8th August 2015, 08:10
  2. 3 HPWM channels
    By docwisdom in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 4th April 2006, 02:43
  3. Code check -- button not working
    By docwisdom in forum mel PIC BASIC Pro
    Replies: 12
    Last Post: - 2nd March 2006, 22:43
  4. Button Push within 3 second Window
    By Tissy in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 22nd December 2005, 10:06
  5. Button subfunction 16F628
    By Jųan in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 19th August 2005, 16:44

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts