Interface a 4x4 keypad with a PIC

I want to add a 4x4 keypad to a 16F877A, i've made the connections to the pins but I don't know how to decode/write the ASM code.
What I want to do is: when I press 3 on the keypad the PIC will scan the keypad and figure it out it was the '3' key and load it in a variable.

So far I wrote the code for:

;                   RB4             RB5             RB6             RB7
;                   COL1             COL2          COL3         COL4
; RB0 ROW1         1                2                 3                  A
; RB1 ROW2        4                 5                  6                  B
; RB2 ROW3        7                 8                  9                   C
; RB3 ROW4        *                 0                  #                  D
Setting the pins to the wires.

How to intercept the key pressed ?!

I couldn't find anything on the net that will explain the logistic or how is done step by step.

Could anyone help with a source code explained or some good documentation?

Thanks for your time!
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

Jaime OlivaresConnect With a Mentor Software ArchitectCommented:
Have a look to this project:

it has an lcd and a 4x4 keypad with 16f877 microcontroller, including schematics and assembler code. You can extract the portion of your interest.
navaruAuthor Commented:
OK, i'll take a look at that
they have online support as well

First of all, I suggest you use c rather (if you don't know asm)

You have 2 options:
option1: read the "interrupts" section spec of the pic. Implement a signal change interrupt.

option2: it is easier to just have an infinit loop (no interrupt) that scans the keyboard.

Note: I know from my experience that the fastest click of a button will change the signal for at least 40ms. so this is quite safe.
still you need either a hardware or a software debouncer.
Do it in software. It's much easier.
All Courses

From novice to tech pro — start learning today.