Notes
Notes - notes.io |
ORG 0
acall CONFIGURE_LCD
; MOV DPTR,#300H
; MOV A,#0FFH
; MOV P1.1 ,A
;BACK: MOV A,P1.1
; MOVC A,@A+DPTR
;
MOV R4,A
MOV R5,#100
DECHERE: dec R5
DJNZ R4,DECHERE
RET
AGAIN:
SETB p1.1
LCALL CALLH
clr p1.1
LCALL CALLL
sjmp AGAIN
DELAY10:MOV R3,#3
HERE: DJNZ R3, HERE
CALLH:
LCALL DELAY10
HEREH: DJNZ R4, HEREH
CALLL:
LCALL DELAY10
HEREL: DJNZ R5, HEREL
RET
KEYBOARD_LOOP:
acall KEYBOARD
;now, A has the key pressed
acall SEND_DATA
sjmp KEYBOARD_LOOP
CONFIGURE_LCD: ;THIS SUBROUTINE SENDS THE INITIALIZATION COMMANDS TO THE LCD
mov a,#38H ;TWO LINES, 5X7 MATRIX
acall SEND_COMMAND
mov a,#0FH ;DISPLAY ON, CURSOR BLINKING
acall SEND_COMMAND
mov a,#06H ;INCREMENT CURSOR (SHIFT CURSOR TO RIGHT)
acall SEND_COMMAND
mov a,#01H ;CLEAR DISPLAY SCREEN
acall SEND_COMMAND
mov a,#80H ;FORCE CURSOR TO BEGINNING OF THE FIRST LINE
acall SEND_COMMAND
ret
SEND_COMMAND:
mov p1,a ;THE COMMAND IS STORED IN A, SEND IT TO LCD
clr p3.5 ;RS=0 BEFORE SENDING COMMAND
clr p3.6 ;R/W=0 TO WRITE
setb p3.7 ;SEND A HIGH TO LOW SIGNAL TO ENABLE PIN
acall DELAY
clr p3.7
ret
SEND_DATA:
mov p1,a ;SEND THE DATA STORED IN A TO LCD
setb p3.5 ;RS=1 BEFORE SENDING DATA
clr p3.6 ;R/W=0 TO WRITE
setb p3.7 ;SEND A HIGH TO LOW SIGNAL TO ENABLE PIN
acall DELAY
clr p3.7
ret
DELAY:
push 0
push 1
mov r0,#50
DELAY_OUTER_LOOP:
mov r1,#255
djnz r1,$
djnz r0,DELAY_OUTER_LOOP
pop 1
pop 0
ret
KEYBOARD: ;takes the key pressed from the keyboard and puts it to A
mov P0, #0ffh ;makes P0 input
K1:
mov P2, #0 ;ground all rows
mov A, P0
anl A, #00001111B
cjne A, #00001111B, K1
K2:
acall DELAY
mov A, P0
anl A, #00001111B
cjne A, #00001111B, KB_OVER
sjmp K2
KB_OVER:
acall DELAY
mov A, P0
anl A, #00001111B
cjne A, #00001111B, KB_OVER1
sjmp K2
KB_OVER1:
mov P2, #11111110B
mov A, P0
anl A, #00001111B
cjne A, #00001111B, ROW_0
mov P2, #11111101B
mov A, P0
anl A, #00001111B
cjne A, #00001111B, ROW_1
mov P2, #11111011B
mov A, P0
anl A, #00001111B
cjne A, #00001111B, ROW_2
mov P2, #11110111B
mov A, P0
anl A, #00001111B
cjne A, #00001111B, ROW_3
ljmp K2
ROW_0:
mov DPTR, #KCODE0
sjmp KB_FIND
ROW_1:
mov DPTR, #KCODE1
sjmp KB_FIND
ROW_2:
mov DPTR, #KCODE2
sjmp KB_FIND
ROW_3:
mov DPTR, #KCODE3
KB_FIND:
rrc A
jnc KB_MATCH
inc DPTR
sjmp KB_FIND
KB_MATCH:
clr A
movc A, @A+DPTR; get ASCII code from the table
ret
;ASCII look-up table
KCODE0: DB '1', '2', '3', 'A'
KCODE1: DB '4', '5', '6', 'B'
KCODE2: DB '7', '8', '9', 'C'
KCODE3: DB '*', '0', '#', 'D'
END
|
Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...
With notes.io;
- * You can take a note from anywhere and any device with internet connection.
- * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
- * You can quickly share your contents without website, blog and e-mail.
- * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
- * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.
Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.
Easy: Notes.io doesn’t require installation. Just write and share note!
Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )
Free: Notes.io works for 12 years and has been free since the day it was started.
You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;
Email: [email protected]
Twitter: http://twitter.com/notesio
Instagram: http://instagram.com/notes.io
Facebook: http://facebook.com/notesio
Regards;
Notes.io Team