nikhildascl
Full Member level 3
- Joined
- Apr 15, 2012
- Messages
- 150
- Helped
- 15
- Reputation
- 30
- Reaction score
- 14
- Trophy points
- 1,318
- Location
- Kerala, India
- Activity points
- 2,115
ORG 0000H
SCL EQU P3.7
SDA EQU P3.6
MOV SP,#70H
;--------------------------------------------------
;TO READ FROM EEPROM
;--------------------------------------------------
LCALL EEPROM_START ;SEND START BIT
MOV A,#0A0H ;SEND EEPROM ADDRESS WITH WRITE INSTUCTION
LCALL EEPROM_WRITE
MOV A,#03H ;SEND WORD ADDRESS
LCALL EEPROM_WRITE
LCALL EEPROM_START ;SEND START BIT
MOV A,#0A1H ;SEND EEPROM ADDRESS WITH READ INSTRUCTION
LCALL EEPROM_WRITE
MOV A,#00H ;TO READ WORD TO A
LCALL EEPROM_READ
LCALL EEPROM_STOP ;SEND STOP BIT
MOV 42H,A
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _
//SET UP MICROCONTROLLER FOR SERIAL COMMUNICATION//
MOV TMOD,#20H ;TIMER1 ,MODE2 (AUTORELOAD)
MOV TH1,#0FDH ;BAUD RATE OF MICROCONTROLLER = 9600 bps
MOV SCON,#50H ;8 BIT, 1 STOP BIT, REN ENABLED
SETB TR1 ;START TIMER1
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _
//LCD INITIALLISATION//
MOV A,#38H ; 2 LINES AND 5x7 MATRIX
LCALL COMNWRT
LCALL DELAY
MOV A,#0FH ; DISPLAY ON,CURSOR BLINKING
LCALL COMNWRT
LCALL DELAY
MOV A,#01H ; CLEAR DISPLAY SCREEN
LCALL COMNWRT
LCALL DELAY
MOV A,#06H ; SHIFT CURSOR TO RIGHT
LCALL COMNWRT
LCALL DELAY
MOV A,#84H ; FORCE CURSOR TO 4th POSITION OF 1ST LINE
LCALL COMNWRT
LCALL DELAY
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//DISPLAY WELCOME ON THE LCD//
LCALL DELAY
MOV DPTR,#MYDATA
LCALL M22
LCALL DELAY
LCALL CLRLCD
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//SET THE BAUD RATE OF GSM MODEM AS 9600 bps //
MOV DPTR,#MYDATA1
LCALL SEND
LCALL RECV
LCALL DELAY
LCALL DELAY
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//GIVES ADDITIONAL INFORMATION ON TEXT MODE//
MOV DPTR,#MYDATA2
LCALL SEND
LCALL RECV
LCALL DELAY
LCALL DELAY
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _
//SELECT THE MESSAGE FORMAT AS TEXT MODE//
MOV DPTR,#MYDATA3
LCALL SEND
LCALL RECV
LCALL DELAY
LCALL DELAY
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//SELECTS THE PROCEDURE FOR MESSAGE RECEPTION//
MOV DPTR,#MYDATA4
LCALL SEND
LCALL RECV
LCALL DELAY
LCALL DELAY
LCALL CLRLCD
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//DISPLAY WELCOME ON THE LCD//
SETB P0.7
MOV DPTR,#INIT
LCALL M22
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL CLRLCD
CLR P0.7
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//SELECT MODE OF OPERATION
MOV DPTR,#SELMODE
LCALL M22
LCALL DELAY
LCALL CLRLCD
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
// MODES
REIN:
MOV DPTR,#MODE1
LCALL M22
LCALL DELAY
MOV A,#0C0H
LCALL COMNWRT
LCALL DELAY
MOV DPTR,#MODE2
LCALL M22
LCALL DELAY
LCALL KEY
LCALL DELAY
CJNE A,#'1',SNDDATA //'1' FOR SEND SMS
LCALL CLRLCD
LCALL DELAY
SJMP LLRD
SNDDATA: //'2' FOR MODIFY DATA
CJNE A,#'2',INLD
LCALL CLRLCD
LCALL DELAY
LCALL ENTDATA
INLD:
LCALL CLRLCD // IF NOT 1 N 2, THEN DISPLAY INVALID AND DISPLAY MENU AGAIN
LCALL DELAY
MOV DPTR,#INVALID
LCALL M22
LCALL DELAY
LCALL CLRLCD
LJMP REIN
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//DISPLAY READY ON THE LCD//
LLRD:LCALL CLRLCD
LCALL DELAY
MOV DPTR,#READY
M11: CLR A
MOVC A,@A+DPTR
JZ NEXT1 //JZ =jump if Accumulator is zero
LCALL DATAWRT
LCALL DELAY
INC DPTR
SJMP M11
NEXT1: LCALL DELAY
LCALL DELAY
LCALL DELAY
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
ST: MOV R1,#30H ;STORE THE MESSAGE IN RAM FROM 30H
MSG:JNB RI,MSG
SETB P3.5
MOV A,SBUF
CLR RI
CJNE A,#23H,MSG ;CHECKS FOR THE SECURITY CODE ‘#’
GO: JNB RI,GO ;MSG RECEPTION TAKES PLACE IF SECURITY CODE .
CLR A
MOV A,SBUF
MOV @R1,A ;EACH CHARACTER IS STORED FROM 30H
INC R1
CLR RI
CJNE A,#23H,GO
CLR P3.5
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//SEND MESSAGE //
D0: LCALL CLRLCD
// ROUTINE TO IDENTIFY ROLL NO. AND REPLY
MOV A,30H
CJNE A,#51,INV //LOOK FOR 3x
MOV A,31H //IF A=3 THEN LOOK FOR x
CJNE A,#48,INV //LOOK FOR 30
MOV DPTR,#THIRTY
LCALL SEND
LCALL DELAY
MOV DPTR,#THIRTYN
LCALL SEND
LCALL DELAY
MOV DPTR,#PMARK
LCALL SEND
LCALL DELAY
MOV R1,#40H
LCALL SEND2
LCALL DELAY
MOV DPTR,#PATT
LCALL SEND
LCALL DELAY
MOV R1,#42H
LCALL SEND2
LCALL DELAY
MOV DPTR,#MSGEND
LCALL SEND
LCALL DELAY
LCALL DELAY
LJMP LLRD
INV: MOV DPTR,#INVRQST
LCALL M22
LCALL DELAY
LCALL CLRLCD
LJMP LLRD
AGAIN: SJMP AGAIN
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
M22:CLR A
MOVC A,@A+DPTR
JZ NEXT22 //JZ =jump if Accumulator is zero
LCALL DATAWRT
LCALL DELAY
INC DPTR
SJMP M22
NEXT22: LCALL DELAY
LCALL DELAY
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
//SEND THE AT COMMANDS//
SEND: CLR A
MOVC A,@A+DPTR
JZ B1
MOV SBUF,A
H1: JNB TI,H1
CLR TI
INC DPTR
SJMP SEND
B1: RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
;RECEIVE FROM GSM
RECV: JNB RI,RECV
SETB P0.7
MOV A,SBUF
CLR RI
LCALL DELAY
CLR P0.7
RE2: JNB RI,RE2
SETB P0.7
MOV A,SBUF
CLR RI
LCALL DELAY
CLR P0.7
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
//SEND2
SEND2: CLR A
MOV A,@R1
JZ B2
MOV SBUF,A
H2: JNB TI,H2
CLR TI
INC R1
MOV A,@R1
JZ B2
MOV SBUF,A
B2: RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//CLEAR THE LCD//
CLRLCD: MOV A,#01H
LCALL COMNWRT
LCALL DELAY
MOV A,#80H
LCALL COMNWRT
LCALL DELAY
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _
//WRITE COMMANDS TO LCD’S INTERNAL REGISTERS//
COMNWRT: MOV P2,A
CLR P3.4
CLR P3.3
SETB P3.2
LCALL DELAY
CLR P3.2
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
//WRITE DATA ON PORT1 TO THE LCD//
DATAWRT: MOV P2,A //rs
SETB P3.4
CLR P3.3
SETB P3.2
LCALL DELAY
CLR P3.2
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
//DECLARING DELAY//
DELAY: MOV R3,#255
HERE2: MOV R4,#255
HERE: DJNZ R4,HERE
DJNZ R3,HERE2
RET
//__________________________________________________________________________
EEPROM_START:
SETB SDA
SETB SCL
NOP
NOP
NOP
CLR SDA
CLR SCL
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
;EEPROM FUNCTIONS
EEPROM_WRITE:
CLR C
MOV R0,#08
REPEAT: RLC A
MOV SDA,C
SETB SCL
NOP
NOP
NOP
CLR SCL
DJNZ R0,REPEAT
SETB SDA
HEREI: JB SDA,HEREI
SETB SCL
NOP
NOP
NOP
CLR SCL
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
EEPROM_READ:
CLR C
MOV R0,#08
SETB SDA
REPEAT1:MOV C,SDA
RLC A
SETB SCL
NOP
NOP
CLR SCL
DJNZ R0,REPEAT1
SETB SCL
NOP
NOP
CLR SCL
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
EEPROM_STOP:
CLR SDA
SETB SCL
NOP
NOP
NOP
SETB SDA
CLR SCL
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
//ROUTINE TO ENTER DATA
ENTDATA:
MOV R1,#60H
MOV DPTR,#ENT_RN
LCALL M22
LCALL DELAY
LCALL KEY
LCALL DATAWRT //DISP 1ST NO
ANL A,#0FH //AND
SWAP A //SWAP
MOV @R1,A //MOV x0 INTO 60H
CLR A
INC R1 //61H
LCALL KEY //DISP 2ND NO
LCALL DATAWRT
ANL A,#0FH
MOV R1,60H
ORL A,R1
CJNE A,#30H,RNN1 //FOR ROLL NO 30
LCALL CLRLCD
MOV DPTR,#ENT_PM
LCALL M22
LCALL DELAY
MOV R1,#40H
LCALL IN
LCALL CLRLCD
MOV DPTR,#ENT_PA
LCALL M22
LCALL DELAY
MOV R1,#42H
LCALL IN
LCALL CLRLCD
LCALL DELAY
LJMP LLRD
RNN1:
LCALL CLRLCD
MOV DPTR,#INVALID
LCALL M22
LCALL CLRLCD
LCALL DELAY
LJMP LLRD
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
//INPUT DATA
IN: LCALL KEY
LCALL DATAWRT
MOV @R1,A //MOV % MARK1 TO 40
INC R1
LCALL KEY
LCALL DATAWRT
MOV @R1,A //MOV %MARK2 TO 41
LCALL DELAY
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
//KEYPAD
KEY:
K1:
MOV P1,#11110000B ; P1.7:P1.5 I/P AND P1.4:P1.1 O/P(GND)
MOV A,P1
ANL A,#11110000B ;COMPARE ONLY UPPER THREE BITS
CJNE A,#11110000B,K1 ;CHECK TILL ALL KEYS RELEASED
KEY_PRESS:
LCALL DELAY ;20msec delay
MOV A,P1
ANL A,#11110000B
CJNE A,#11110000B,K_OVER ; CHECK TILL KEY PRESS
SJMP KEY_PRESS
K_OVER:
LCALL DELAY ;DEBOUNCE TIME
MOV A,P1
ANL A,#11110000B
CJNE A,#11110000B,K_SERCH ;KEY PRESSED, FIND ROW ;
SJMP KEY_PRESS
K_SERCH:
MOV P1,#11111110B ;GROUND 1ST ROW
MOV A,P1 ;READ ALL COLUMNS
ANL A,#11110000B ;COMPARE ONLY UPPER THREE BITS
CJNE A,#11110000B,ROW_1 ;KEY ROW 0, FIND THE COL.
MOV P1,#11111101B ;GROUND 2ND ROW
MOV A,P1
ANL A,#11110000B
CJNE A,#11110000B,ROW_2 ;KEY ROW 0, FIND THE COL.
MOV P1,#11111011B ;GROUND 3RD ROW
MOV A,P1
ANL A,#11110000B
CJNE A,#11110000B,ROW_3 ;KEY ROW 0, FIND THE COL.
MOV P1,#11110111B ;GROUND 4TH ROW
MOV A,P1
ANL A,#11110000B
CJNE A,#1111000B,ROW_4 ;KEY ROW 0, FIND THE COL.
LJMP KEY_PRESS
ROW_1: ;1,2,3
MOV DPTR,#KCODE0
SJMP FIND ;FIND COL. KEY BELONGS TO
ROW_2: ;4,5,6
MOV DPTR,#KCODE1
SJMP FIND ;FIND COL. KEY BELONGS TO
ROW_3: ;7,8,9
MOV DPTR,#KCODE2
SJMP FIND ;FIND COL. KEY BELONGS TO
ROW_4:
MOV DPTR,#KCODE3 ;0
FIND:
RLC A
JNC MATCH
INC DPTR
SJMP FIND ;KEEP SEARCHING
MATCH:
CLR A
MOVC A,@A+DPTR
CJNE A,#'#',RE1
SJMP KEY
RE1: CJNE A,#'*',RET1
SJMP KEY
RET1:
RET
//_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
ORG 300H
MYDATA: DB "WELCOME",0
MYDATA1: DB "AT+IPR=9600",0AH,0DH,0
MYDATA2: DB "AT+CSDH=1",0AH,0DH,0
MYDATA3: DB "AT+CMGF=1",0AH,0DH,0
MYDATA4: DB "AT+CNMI=2,2,0,0,0",0AH,0DH,0
INIT: DB "INITIALIZING",0
READY: DB "READY",0
//30
THIRTY: DB "AT+CMGS=",22H,"9048585579",22H,0AH,0DH,0
THIRTYN: DB "NAME30",0AH,0
//31
THIRTY1: DB "AT+CMGS=",22H,"9048585579",22H,0AH,0DH,0
THIRTY1N: DB "NAME31",0AH,0
//INVALID REQUEST
INVRQST: DB "INVALID REQUEST",0
//____________________________________________________
PMARK: DB 0AH,"AGGR. % OF MARKS = ",0
PATT: DB 0AH,0AH,"% OF ATTNDNCE = ",0
SELMODE: DB "SELECT MODE",0
MODE1: DB "1.SEND SMS",0
MODE2: DB "2.MODIFY DATA",0
INVALID: DB "INVALID SELECTION",0
//__________________________________________________________
//DATA SECTION
ENT_RN: DB "Roll No:",0
ENT_PM: DB "%MARKS=",0
ENT_PA: DB "%ATTNDNCE=",0
//___________________________________________
//RIT KTM CTRLZ
MSGEND: DB 0AH,0AH,"RIT KTM",0x1A,0
KCODE0: DB 'A','3','2','1'
KCODE1: DB 'B','6','5','4'
KCODE2: DB 'C','9','8','7'
KCODE3: DB 'D','#','0','*'
END
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?