Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
01/04/06 01:23
Read: times


 
#106429 - 8051 keypad input
This is a part of my program.the micro-C is taking in BCD values from a 74C922.and output to a 4511(bcd to 7segment decoder).The problem is,after i hook up the system,the display only shows "00" and the keypad is not working at all.Could it be because my Check Data Available Subroutine is wrong?
thx for your help.

org 0000h ;start instruction at address 0000

PR2 EQU 48H ;
PR1 EQU 49H ;
PUR EQU 52H ;
TEMP EQU 50H ;
DIGIT1 EQU 54H ;
DIGIT2 EQU 55H

INIT: MOV P1,#FFH ; SET PORT1 AS INPUT
MOV P2,#00H ; SET PORT2 AS OUTPUT
;***************************************************************
; KEYPAD INPUT
;***************************************************************
START:
LCALL CHECK ;
EXIT:
MOV A,TEMP
CJNE A, #0DH,MODE_SEL ;
JMP CONT ;

MODE_SEL:
LCALL CHECK ; CHECK IF KEY IS PRESSED
MOV A, TEMP ; RECEIVE BCD INPUT FROM KEYPAD
CJNE A, #0AH,GETP ; MODE COMPARE
CPL P3.7 ;
JMP START ;

GETP:
CJNE A, #0CH,START ; PRESSURE SET COMP
LCALL PSET2 ;
JMP START ;

PSET2:
LCALL CHECK ;
MOV PR2,TEMP ;
LCALL CHECK ;
MOV A,TEMP ;
CJNE A, #0EH,PSET1 ;
JMP PSAVE ;
PSET1:
MOV PR1,TEMP ;
PSAVE:
RET ;

;***************************************************************
; CHECK DATA AVAILABLE
;***************************************************************
CHECK:
JNB P1.4, CHECK ; IF DAV IS SET, PROCEED TO GET KEY
CLR P1.5 ;
CLR P1.6 ;
CLR P1.7 ;
MOV TEMP, P1 ;
RET ;

CONT: MOV b,#10 ;SET REGISTER b TO MULTIPLY 10 THE msb
MOV A,PR1
MUL AB
ADD A,PR2
MOV PUR,A
END


;***************************************************************
; PRESET & MONITORED PRESSURE
; ***************************************************************
MOV A,PUR ;
MOV B, #AH ;
DIV AB ;
MOV DIGIT1, B ;
MOV DIGIT2, A ;
JMP DISPLAY ;


;***************************************************************
; DISPLAY ON 7 SEGMENT
;***************************************************************
DISPLAY:
MOV P2, DIGIT2 ;SEGMENT DATA PORT 1
CLR P2.4 ;SECOND DIGIT TURNED ON
ACALL DELAY ;DIGIT HOLD DELAY
SETB P2.4 ;SECOND DIGIT TURNED OFF
MOV P2, DIGIT1 ;SEGMENT DATA PORT 1
CLR P2.5 ;FIRST DIGIT TURNED ON
ACALL DELAY ;DIGIT HOLD DELAY
SETB P2.5 ;FIRST DIGIT TURNED OFF

;****************************************************************
;DIGIT HOLD DELAY
;***************************************************************
DELAY: MOV R1, #0FFH ;HEX FF INTO REGISTER R1
TAKE: DJNZ R1, TAKE ;DECREMENT R1 UNTILL IT IS ZERO
RET ;RETURN FROM DELAY SUBROUTINE
END ;ASSEMBLER DIRECTIVE

List of 2 messages in thread
TopicAuthorDate
8051 keypad input            01/01/70 00:00      
   try this            01/01/70 00:00      

Back to Subject List