Professional Documents
Culture Documents
Source Code
Source Code
asm
;* PROJECT: Gas and fire sensing and inform by SMS through GSM modem
$MOD51
; ***LCD CONTROL***
LCD_DB4 EQU 084H ; P0.4 HIGH NIBBLE OF PORT 1 IS USED FOR DATA
LCD_DB5 EQU 085H ; P0.5 HIGH NIBBLE OF PORT 1 IS USED FOR DATA
LCD_DB6 EQU 086H ; P0.6 HIGH NIBBLE OF PORT 1 IS USED FOR DATA
LCD_DB7 EQU 087H ; P0.7 HIGH NIBBLE OF PORT 1 IS USED FOR DATA
; ***SYSTEM INSTRUCTIONS***
; Input Assign.
org 0000h
ajmp start
org 0023h
mov r3,a
MOV A,r3
mov r4,a
LCALL WRLCDDATA
no_start:
setb scon.4
setb ie.7
reti
; **********************************************************
; **********************************************************
mov tmod,#20h ; timer 1 sel, mode 2 (auto reload for serail baud rate & timer0-mode1
mov scon,#50h ; make serial mode 1 and enable serail data tx & rx
LCALL RESETLCD4
LCALL INITLCD4
MOV A,#1
MOV B,#0
LCALL PLACECUR4
LCALL PRTLCD4
MOV A,#2
MOV B,#0
LCALL PLACECUR4
LCALL PRTLCD4
setb load
LCALL DLY2S
lcall gas_chk
lcall BIG_DELAY
cpl led_ind
ajmp srt
fire_chk:
lcall disp_fire
lcall bz
clr load
setb ind_fire
lcall dly5
lcall bz1
lcall dly5
lcall bz
lcall dly5
lcall bz
lcall bz
clr ind_fire
out_fire: ret
gas_chk:
clr load
lcall disp_gasleak
lcall bz
setb ind_fire
lcall dly5
lcall bz1
lcall dly5
lcall bz
lcall dly5
lcall bz
lcall bz
clr ind_gas
out_gas: ret
disp_gasleak:
MOV A,#1
MOV B,#0
LCALL PLACECUR4
LCALL PRTLCD4
ret
disp_fire:
MOV A,#1
MOV B,#0
LCALL PLACECUR4
LCALL PRTLCD4
ret
gsm_text:
clr LED_IND
LCALL PLACECUR4
mcs1: clr a
movc a,@a+dptr
mov sbuf,a
clr ti
mov r4,a
LCALL WRLCDDATA
inc dptr
mov a,dpl
cjne a,#12h,mcs1
clr LED_IND
ret
gsm_gasphone_no:
clr LED_IND
LCALL PLACECUR4
mcs2: clr a
movc a,@a+dptr
mov sbuf,a
clr ti
mov r4,a
LCALL WRLCDDATA
inc dptr
mov a,dpl
cjne a,#2fh,mcs2
clr LED_IND
ret
gsm_gas_sms:
clr LED_IND
LCALL PLACECUR4
mov dptr,#0630h ; 'Gas Leak Found'
mcs3: clr a
movc a,@a+dptr
mov sbuf,a
clr ti
mov r4,a
LCALL WRLCDDATA
inc dptr
mov a,dpl
cjne a,#55h,mcs3
clr LED_IND
ret
gsm_firephone_no:
clr LED_IND
LCALL PLACECUR4
mcs4: clr a
movc a,@a+dptr
mov sbuf,a
clr ti
mov r4,a
LCALL WRLCDDATA
inc dptr
mov a,dpl
cjne a,#7fh,mcs4
clr LED_IND
ret
gsm_fire_sms:
clr LED_IND
LCALL PLACECUR4
mcs5: clr a
movc a,@a+dptr
mov sbuf,a
clr ti
mov r4,a
LCALL WRLCDDATA
inc dptr
mov a,dpl
cjne a,#0a5h,mcs5
clr LED_IND
ret
lcall BIG_DELAY
ret
lcall dly1
ret
BIG_DELAY:
MOV R2,#0FFH
DJNZ R2,X1B
RET
DJNZ R2,y1B
RET
lcall BIG_DELAY
lcall BIG_DELAY
ret
lcall BIG_DELAY
lcall BIG_DELAY
ret
lcall BIG_DELAY
lcall BIG_DELAY
ret
lcall dly2
lcall dly2
lcall dly2
ret
; **********************************************************
; **********************************************************
INITLCD4:
; LINES, FONTS
LCALL WRLCDCOM4
RET
; **********************************************************
; **********************************************************
RESETLCD4:
SETB LCD_DB5
SETB LCD_DB4
LCALL MDELAY
LCALL MDELAY
LCALL MDELAY
LCALL MDELAY
LCALL WRLCDCOM4
LCALL WRLCDCOM4
LCALL WRLCDCOM4
LCALL WRLCDCOM4
AJMP INITLCD4
; **********************************************************
; **********************************************************
WRLCDCOM4:
CLR LCD_E
MOV LCD_DB5, C
MOV C, ACC.6
MOV LCD_DB6, C
MOV C, ACC.7
MOV LCD_DB7, C
CLR LCD_E
MOV LCD_DB4, C
MOV C, ACC.1
MOV LCD_DB5, C
MOV C, ACC.2
MOV LCD_DB6, C
MOV C, ACC.3
MOV LCD_DB7, C
RET
; **********************************************************
; **********************************************************
WRLCDDATA:
CLR LCD_E
MOV LCD_DB5, C
MOV C, ACC.6
MOV LCD_DB6, C
MOV C, ACC.7
MOV LCD_DB7, C
CLR LCD_E
MOV LCD_DB4, C
MOV C, ACC.1
MOV LCD_DB5, C
MOV C, ACC.2
MOV LCD_DB6, C
MOV C, ACC.3
MOV LCD_DB7, C
RET
; **********************************************************
; **********************************************************
PULSEEWAIT4:
CLR LCD_E
CLR LCD_E
PEW:
CLR LCD_E
RET
; **********************************************************
; NULL (0).
; **********************************************************
PRTLCD4:
POP DPL
PRTNEXT:
SJMP RETPRTLCD
CHROK:
MOV R4, A
RETPRTLCD:
; **********************************************************
; **********************************************************
PLACECUR4:
MOV A, B
SJMP SETCUR
LINE2:
MOV A, B
SETCUR:
; **********************************************************
; **********************************************************
MDELAY:
PUSH ACC
MOV A,#0A6H
MD_OLP:
INC A
NOP
NOP
NOP
NOP
JNZ MD_OLP
NOP
POP ACC
RET
org 0600h
db 'AT+CMGF=1'
org 0610h
db 'AT+CMGS="+919500151223"'
org 0630h
org 0660h
db 'AT+CMGS="+919500151223"'
org 0680h