Combinaton Gate access


Closed Thread
Results 1 to 40 of 48

Hybrid View

  1. #1
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818

    Default Combinaton Gate access

    Hi Everyone,
    I'm using mister_e's keypad.bas etc and trying to make a combination access for a driveway gate and not getting the results I am looking for. Does anyone see any glaring errors?
    Thanks
    JS
    Code:
    @MyConfig = _HS_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF 
    @MyConfig = MyConfig & _BODEN_OFF 
    @ __config  MyConfig
    '@ __CONFIG _HS_OSC & _WDT_ON & _PWRTE_ON  & _LVP_OFF & _CP_OFF
    Define PIC16F877A
    @ errorlevel -230
    CMCON  = 7  
    ADCON1 = 7 
    define OSC 20
    TrisD = %00000000
    
    DEFINE LCD_DREG PORTA
        DEFINE LCD_DBIT 0
        DEFINE LCD_RSREG PORTA
        DEFINE LCD_RSBIT 5
        DEFINE LCD_EREG PORTA
        DEFINE LCD_EBIT 4
        DEFINE LCD_BITS 4
        DEFINE LCD_LINES 4
    
        include "keypad.bas"
        
        DEFINE KEYPAD_ROW        4        ' 4 ROW keypad       
        DEFINE KEYPAD_ROW_PORT   PORTB    ' ROW port = PORTB
        DEFINE KEYPAD_ROW_BIT    4        ' ROW0 = PORTB.4
        DEFINE KEYPAD_COL        4        ' 3 COL keypad
        DEFINE KEYPAD_COL_PORT   PORTB    ' COL port = PORTB
        DEFINE KEYPAD_COL_BIT    0        ' COL0 = PORTB.1
        DEFINE KEYPAD_DEBOUNCEMS 50       ' debounce delay = 50 mSec
        DEFINE SCAN_ONCE         1
    
        OPTION_REG.7=0        ' Enable internal crap pull-up :D
    
        PORTB = 0             '  
        TRISB = %11110000     '
          
        ByteA var byte         '
        Combo1 var byte [4]
        INTCON = %10001000    ' Enable global interrupt
                              ' Enable interrupt on PORTB change
        on interrupt goto KeypadInt
        CLEAR
    
    Init:    
        lcdout $FE,1,"Press any Key"
    Start:
        if ByteA then
        If ByteA = 4  then ByteA = "A"
        if ByteA = 5  then ByteA = 4
        if ByteA = 6  then ByteA = 5
        if ByteA = 7  then ByteA = 6
        if ByteA = 8  then ByteA = "B"
        if ByteA = 9  then ByteA = 7
        if ByteA = 10 then ByteA = 8
        if ByteA = 11 then ByteA = 9
        if ByteA = 12 then ByteA = "C"
        if ByteA = 13 then ByteA = "*"
        if ByteA = 14 then ByteA = 0
        if ByteA = 15 then ByteA = "#"
        if ByteA = 16 then ByteA = "D"
            LCDOUT $FE,1,"Key=",dec bytea
            ByteA = 0
            pause 1000
            goto init
            'else
               if ByteA != 0 then  gosub combo
    else   
    endif
    goto start
    
             
    disable
    KeypadINT:    
        @ READKEYPAD _ByteA
        TRISB=%11110000
        PORTB=0
        INTCON.0=0
        resume
    enable
    combo: 
           if ByteA = 7 then
           combo1[0] = 7
           gosub digit2
           else
           endif
            return
    
    digit2: if (ByteA = 8) and (combo1[0] = 7)  then
            combo1[1] = 8
            gosub Digit3 
            else
           endif
           return
    Digit3:       if (ByteA = 65) and (combo1[1]=8 ) then
                  combo1[2] = 65
                  gosub Digit4
                  else
           endif
           return
    Digit4:       if (ByteA = 5) and (combo1[2] = 65) then
            combo1[3] = 5
           gosub Digit5
           else
           endif
           return
    Digit5:       if (ByteA =68) and (combo1[3] = 5) then
            combo1[4] = 68
            goto Digit6
            else
           endif
           return
    Digit6: if combo1[4] = 68 then
            lcdout "Gate Opening"
            PortD.2 = 1
            pause 30000
            lcdout "Gate Closing"
            pause 30000
           ByteA = 0
           Combo1 = 0
            endif
           goto start   ' Combination 78A5D
           
           
           
           
           
           end
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  2. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    I see simplifying it a bit... Whadaya think?
    That and something looked wierd with your original, specifically with the if/else/endif's. You had a bunch of spots where you had a 'else' but didn't use it (or had a blank chunk in between the else and endif). I suspect those were messing something up.

    @MyConfig = _HS_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF
    @MyConfig = MyConfig & _BODEN_OFF
    @ __config MyConfig
    '@ __CONFIG _HS_OSC & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF
    Define PIC16F877A
    @ errorlevel -230
    define OSC 20
    TrisD = 0:CMCON = 7 : ADCON1 = 7

    DEFINE LCD_DREG PORTA
    DEFINE LCD_DBIT 0
    DEFINE LCD_RSREG PORTA
    DEFINE LCD_RSBIT 5
    DEFINE LCD_EREG PORTA
    DEFINE LCD_EBIT 4
    DEFINE LCD_BITS 4
    DEFINE LCD_LINES 4

    include "keypad.bas"

    DEFINE KEYPAD_ROW 4 ' 4 ROW keypad
    DEFINE KEYPAD_ROW_PORT PORTB ' ROW port = PORTB
    DEFINE KEYPAD_ROW_BIT 4 ' ROW0 = PORTB.4
    DEFINE KEYPAD_COL 4 ' 3 COL keypad
    DEFINE KEYPAD_COL_PORT PORTB ' COL port = PORTB
    DEFINE KEYPAD_COL_BIT 0 ' COL0 = PORTB.1
    DEFINE KEYPAD_DEBOUNCEMS 50 ' debounce delay = 50 mSec
    DEFINE SCAN_ONCE 1

    OPTION_REG.7=0:PORTB = 0 : TRISB = $F0

    ByteA var byte : Combo1 var byte [4]:combocount var byte
    INTCON = $88
    on interrupt goto KeypadInt
    CLEAR

    Init:
    lcdout $FE,1,"Press any Key"
    Start:
    If ByteA = 4 then ByteA = "A"
    if ByteA = 5 then ByteA = 4
    if ByteA = 6 then ByteA = 5
    if ByteA = 7 then ByteA = 6
    if ByteA = 8 then ByteA = "B"
    if ByteA = 9 then ByteA = 7
    if ByteA = 10 then ByteA = 8
    if ByteA = 11 then ByteA = 9
    if ByteA = 12 then ByteA = "C"
    if ByteA = 13 then ByteA = "*"
    if ByteA = 14 then ByteA = 0
    if ByteA = 15 then ByteA = "#"
    if ByteA = 16 then ByteA = "D"
    LCDOUT $FE,1,"Key=",dec bytea:ByteA = 0ause 1000
    if ByteA != 0 then gosub combo
    goto start

    disable
    KeypadINT:
    @ READKEYPAD _ByteA
    TRISB=$F0:PORTB=0:INTCON.0=0
    resume
    enable

    combo:
    if ByteA = 7 and combocount = 0 then
    combocount = 1
    else
    combocount = 0
    endif
    if ByteA = 8 and combocount = 1 then
    combocount = 2
    else
    combocount = 0
    endif
    if ByteA = 65 and combocount = 2 then
    combocount = 3
    else
    combocount = 0
    endif
    if ByteA = 5 and combocount = 3 then
    combocount = 4
    else
    combocount = 0
    endif
    if ByteA =68 and combocount = 4 then
    combocount = 5
    else
    combocount = 0
    endif
    if combocount = 5 then
    lcdout "Gate Opening" : PortD.2 = 1 : pause 30000
    lcdout "Gate Closing" : pause 30000 : ByteA = 0 : combocount = 0
    endif
    goto start ' Combination 78A5D
    end




    P.S. Now we all know the combo to your driveway gate! hhhmmmwwwaaaahaaahahahahahaha!!!!!!
    Last edited by skimask; - 10th February 2007 at 03:42.

  3. #3


    Did you find this post helpful? Yes | No

    Default

    Joe what did you say your address was again?

  4. #4
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by bbarney View Post
    Joe what did you say your address was again?
    1313 Mockingbird Lane, say Hello to Uncle Fester
    Last edited by Archangel; - 10th February 2007 at 22:39.
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  5. #5


    Did you find this post helpful? Yes | No

    Default

    I know where that is I used to date cousin IT

  6. #6


    Did you find this post helpful? Yes | No

    Default

    This code doesn't work!.
    Last edited by Leonardo; - 11th February 2007 at 02:17.

Similar Threads

  1. A logic gate chip with 1 ea XOR and 2 ea AND gates?
    By jellis00 in forum mel PIC BASIC Pro
    Replies: 21
    Last Post: - 5th August 2009, 05:29
  2. Access to sim memu
    By sahin5002 in forum GSM
    Replies: 2
    Last Post: - 16th June 2009, 11:57
  3. truck gate
    By Melros in forum mel PIC BASIC Pro
    Replies: 12
    Last Post: - 13th October 2007, 13:23
  4. 18f2550 'access is denied' USB error?
    By Giulio in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 30th December 2006, 14:29
  5. FYI - How to Access individual bytes in Word Arrays
    By Melanie in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 20th July 2003, 21:56

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