I use ATMEL 89c51 microcontroller with keypad 4x4. My problems is that my 1st row contain 1 2 3 A it display 1 2 3 A for every row i checked the code on proteus8 its working fine and also on 8051 kit its working fine. but on my PCB its showing 1 2 3 A for every row in column wise under 1 all are 1 and under 2 all are 2 and so on. I checked the PCB by interfacing the PCB with 8051 kit's keypad and it worked and then i connected my keypad to the alternate port of 8051 kit it is working well. but when i connect my keypad directly to the PCB it shows the problem again.What is the solution for it? <\b>
Something is wrong with your design, and as you're the only person who has the board or design files, it sounds like you're going to have to pull out a scope or multimeter and figure out what's wrong with it.
Probably a compiler bug or library bug. Contact IAR support.
I checked the PCB by interfacing the PCB with 8051 kit's keypad and it worked and then i connected my keypad to the alternate port of 8051 kit it is working well. I GUESS it is not working when you use P0.
the other ports have "weak" pullup. you - regardless of which port - need pullups on P0 mandatory, on other ports "sluggishness prevention"
Probably a compiler bug or library bug. Contact IAR support. first why a compiler bug (very unlikely), second why contact IAR support when using Keil
i checked the PCB with the multimeter.There is no short circuit with each other or with ground or vcc. The whole PCB is working fine after i use it with the kit.
You didn't check enough - you need to check the signal levels when the processor is reading the keypad and not the PCB trace resistances. Looking at the signal levels will tell you if your traces needs pull up/pull down on traces.
Debugging is the way you compare the values the processor sees with the values the multimeter sees and your own expectations and then figures out why you get a difference. Then you decide what changes you need to get the reality to get closer to your expectations before you test again.