Microcontroller › 8051 › interface
- This topic has 2 replies, 3 voices, and was last updated 10 years, 4 months ago by chandrasekhar.
-
AuthorPosts
-
September 4, 2014 at 11:30 am #3168PrachiParticipant
I want to interface 4 x 3 keypad and LCD display with 8051 plz send me assembly codes for it
September 6, 2014 at 7:34 pm #12134Ashutosh BhattParticipantrefer good books – ebooks – reference materials on
assembly language programming of 8051
take help of online tutorials on 8051 assembly language
September 12, 2014 at 7:19 am #12156chandrasekharParticipantThe subroutine check_keypad can be used to directly interface any 4X3 matrix keypad. It checks if any switch on the matrix keypad is pressed. If any of the switch is pressed then the switch is debounced and we wait until the switch has been released. Once the switch has been released the switch number is loaded into the accumulator and the carry flag is set to indicate that a switch has been pressed. If NO switch has been pressed then the accumulator is cleared and the carry flag is also cleared to indicate no switch has been pressed.
column1 bit P1.0 column2 bit P1.1 column3 bit P1.2 row1 bit P1.3 row2 bit P1.4 row3 bit P1.5 row4 bit P1.6 check_keypad:
clr column1
setb column2 ;Select Column 1 setb column3 jnb row1,c1_check_keypad
jnb row2,c2_check_keypad
jnb row3,c3_check_keypad
jnb row4,c4_check_keypad
setb column1 clr column2 ;Select Column 2 setb column3 jnb row1,c5_check_keypad
jnb row2,c6_check_keypad
jnb row3,c7_check_keypad
jnb row4,c8_check_keypad
setb column1 setb column2 ;Select Column 3 clr column3 jnb row1,c9_check_keypad jnb row2,c10_check_keypad
jnb row3,c11_check_keypad
jnb row4,c12_check_keypad
setb column1
setb column2
setb column3
mov a,#00h ;Since no switch has been pressed so Acc=00h clr c ;and C=0 ret c1_check_keypad: //column 1, row 1 mov r7,#00h deb1_check_keypad:
;debounce row 1 switch jb row1,r1_check_keypad djnz r7,deb1_check_keypad
jnb row1,$ ;wait till switch is released mov a,#1 ;since switch pressed is 1, Acc =1 setb c ;Indicating switch has been pressed setb column1 ret r1_check_keypad:
setb column1 ;Error while debouncing so return mov a,#0 clr c
ret
c2_check_keypad: //column 1, row2 mov r7,#00h deb2_check_keypad: ;debounce row 2 switch jb row2,r2_check_keypad
djnz r7,deb2_check_keypad
jnb row2,$ ;wait till switch is released mov a,#4 ;since switch pressed is 4, Acc =4 setb c ;Indicating switch has been pressed setb column1 ret r2_check_keypad:
setb column1
;Error while debouncing so return mov a,#0
clr c
ret
c3_check_keypad: //column 1, row3 mov r7,#00h deb3_check_keypad: ;debounce row 3 switch jb row3,r3_check_keypad
djnz r7,deb3_check_keypad
jnb row3,$ ;wait till switch is released
mov a,#7 ;since switch pressed is 7, Acc =7
setb c ;Indicating switch has been pressed
setb column1
ret
r3_check_keypad:
setb column1 ;Error while debouncing so return
mov a,#0
clr c
ret
c4_check_keypad: //column 1, row4
mov r7,#00h
deb4_check_keypad: ;debounce row 4 switch
jb row4,r4_check_keypad
djnz r7,deb4_check_keypad
jnb row4,$ ;wait till switch is released
mov a,#10 ;since switch pressed is 10, Acc =10
setb c ;Indicating switch has been pressed
setb column1
ret
r4_check_keypad:
setb column1 ;Error while debouncing so return
mov a,#0
clr c
ret
c5_check_keypad: //column 2, row 1
mov r7,#00h
deb5_check_keypad: ;debounce row 1 switch
jb row1,r5_check_keypad
djnz r7,deb5_check_keypad
jnb row1,$ ;wait till switch is released
mov a,#2 ;since switch pressed is 2, Acc =2
setb c ;Indicating switch has been pressed
setb column2
ret
r5_check_keypad:
setb column2 ;Error while debouncing so return
mov a,#0
clr c
ret
c6_check_keypad: //column 2, row2
mov r7,#00h
deb6_check_keypad: ;debounce row 2 switch
jb row2,r6_check_keypad
djnz r7,deb6_check_keypad
jnb row2,$ ;wait till switch is released
mov a,#5 ;since switch pressed is 5, Acc =5
setb c ;Indicating switch has been pressed
setb column2
ret
r6_check_keypad:
setb column2 ;Error while debouncing so return
mov a,#0
clr c
ret
c7_check_keypad: //column 2, row3
mov r7,#00h
deb7_check_keypad: ;debounce row 3 switch
jb row3,r7_check_keypad
djnz r7,deb7_check_keypad
jnb row3,$ ;wait till switch is released
mov a,#8 ;since switch pressed is 8, Acc =8
setb c ;Indicating switch has been pressed
setb column2
ret
r7_check_keypad:
setb column2 ;Error while debouncing so return
mov a,#0
clr c
ret
c8_check_keypad: //column 2, row4
mov r7,#00h
deb8_check_keypad: ;debounce row 4 switch
jb row4,r8_check_keypad
djnz r7,deb4_check_keypad
jnb row4,$ ;wait till switch is released
mov a,#11 ;since switch pressed is 11, Acc =11
setb c ;Indicating switch has been pressed
setb column2
ret
r8_check_keypad:
setb column2 ;Error while debouncing so return
mov a,#0
clr c
ret
c9_check_keypad: //column 3, row 1
mov r7,#00h
deb9_check_keypad: ;debounce row 1 switch
jb row1,r9_check_keypad
djnz r7,deb9_check_keypad
jnb row1,$ ;wait till switch is released
mov a,#3 ;since switch pressed is 3, Acc
setb c ;Indicating switch has been pressed
setb column3
ret
r9_check_keypad:
setb column3 ;Error while debouncing so return
mov a,#0
clr c
ret
c10_check_keypad: //column 3, row2
mov r7,#00h
deb10_check_keypad: ;debounce row 2 switch
jb row2,r10_check_keypad
djnz r7,deb10_check_keypad
jnb row2,$ ;wait till switch is released
mov a,#6 ;since switch pressed is 6, Acc =6
setb c ;Indicating switch has been pressed
setb column3
ret
r10_check_keypad:
setb column3 ;Error while debouncing so return
mov a,#0
clr c
ret
c11_check_keypad: //column 3, row3
mov r7,#00h
deb11_check_keypad: ;debounce row 3 switch
jb row3,r11_check_keypad
djnz r7,deb11_check_keypad
jnb row3,$ ;wait till switch is released
mov a,#9 ;since switch pressed is 9, Acc =9
setb c ;Indicating switch has been pressed
setb column3
ret
r11_check_keypad:
setb column3 ;Error while debouncing so return
mov a,#0
clr c
ret
c12_check_keypad: //column 3, row4
mov r7,#00h
deb12_check_keypad: ;debounce row 4 switch
jb row4,r12_check_keypad
djnz r7,deb12_check_keypad
jnb row4,$ ;wait till switch is released
mov a,#12 ;since switch pressed is 12, Acc =12
setb c ;Indicating switch has been pressed
setb column3
ret
r12_check_keypad:
setb column3 ;Error while debouncing so return
mov a,#0
clr c
ret
-
AuthorPosts
- You must be logged in to reply to this topic.