0% found this document useful (0 votes)
35 views4 pages

Untitled

The document describes code for an embedded system that controls an energy meter. It includes routines for initializing an LCD display, reading and writing data from EEPROM, displaying messages and readings on the LCD, and handling tasks like detecting a new card or low balance. Key functions include reading and storing data, resetting the system, and displaying information to users.

Uploaded by

ramkumarrr_eee
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views4 pages

Untitled

The document describes code for an embedded system that controls an energy meter. It includes routines for initializing an LCD display, reading and writing data from EEPROM, displaying messages and readings on the LCD, and handling tasks like detecting a new card or low balance. Key functions include reading and storing data, resetting the system, and displaying information to users.

Uploaded by

ramkumarrr_eee
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

Scribd Upload a Document

Explore ramkumarrr_eee
/ 64

Search Documents

Download this Document for Free


48
DA AMOV AMOUNT+1,AMOV R1,#AMOUNT
;store READINGMOV R4,#0AH
;Starting Addr
ess IN EEPROMMOV R6,#03h
;STORE 2 BYTESCALL STORE_EEPROMCALL DELAYSSETB TBIT
1CALL RESET_BALANCERESETX_CHIP: MOV READ_BYTE,#0AAH ;ERASE AMOUNTMOV READ_BYTE
+1,#0FFHMOV READ_BYTE+2,#0FFHMOV R1,#READ_BYTE
;store COUNTMOV R6,#3
;STO
RE 2 BYTESMOV A,#WTCMD1 ;LOAD WRITE COMMANDCALL OUTS
;SEND ITMOV A,#20H
;GET LOW BYTE ADDRESSCALL OUT
;SEND ITBBLP: MOV A,@R1
;GET DATACALL OUT
;SEND ITINC R1
;INCREMENT DATA POINTERDJNZ R6,BBLP ;LOOP TILL DONECALL S
TOP
;SEND STOP CONDITIONCALL DELAYRET DSP3: CJNE A,#0AAH,DSP4CALL TITLE6 ;
NEW RECHARGECALL DELAYSSETB TBIT1DSP4: RET;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~DELAY:MOV R6,#0FFHRE1: MOV R7,#0FFHRE: NOPDJNZ R7,REDJNZ
R6,RE1RET;********************************************************** CARD_READ:M
OV R1,#READ_BYTE
;GET DATA INBYTES(RAM)MOV R6,#3
;NUMBER OF BYTESMOV A,
#WTCMD1 ;LOAD WRITE COMMAND TO SENDADDRESSCALL OUTS
;SEND ITMOV A,#20H
;
GET LOW BYTE ADDRESSCALL OUT
;SEND ITMOV A,#RDCMD1 ;LOAD READ COMMANDCALL O
UTS
;SEND IT
49
BXDLP: CALL IN
;READ DATAMOV @R1,a
;STORE DATAINC R1
;INCREMENT DATA
POINTERDJNZ R6,AXLP ;DECREMENT LOOP COUNTERCALL STOP
;IF DONE, ISSUE STOP
CONDITIONRET
;DONE, EXIT ROUTINEAXLP: CLR SDA1 ;NOT DONE, ISSUE ACKSETB SC
L1NOP ;NOTE 1NOPNOPNOP ;NOTE 2NOPCLR SCL1JMP BXDLP ;CONTINUE WITH READS;%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%; READ DA
TA FROM EEPROM;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%READ_EEPROM:MOV A,#WTCMD ;LOAD WRITE COMMAND TO SENDADDRESSCALL OU
TS
;SEND ITMOV A,R4
;GET LOW BYTE ADDRESSCALL OUT
;SEND ITMOV A,#RDCMD
;LOAD READ COMMANDCALL OUTS
;SEND ITBRDLP: CALL IN
;READ DATAMOV @R1,a
;STORE DATAINC R1
;INCREMENT DATA POINTERDJNZ R6,AKLP ;DECREMENT LOOP
COUNTERCALL STOP
;IF DONE, ISSUE STOP CONDITIONRET
;DONE, EXIT ROUTINEAK
LP: CLR SDA1 ;NOT DONE, ISSUE ACKSETB SCL1NOP ;NOTE 1NOPNOPNOP ;NOTE 2NOPCLR SC
L1JMP BRDLP ;CONTINUE WITH READS;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%;
STORE DATA IN EEPROM;%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%STORE_EEPROM:MOV A,#WTCMD
;LOAD WRITE COMMANDCALL OUTS
;SEND ITMOV A,R4
;GET LOW BYTE ADDRESSCALL O
UT
;SEND ITBTLP: MOV A,@R1
;GET DATA
5
0
CALL OUT
;SEND ITINC R1
;INCREMENT DATA POINTERDJNZ R6,BTLP ;LOOP TILL
DONECALL STOP
;SEND STOP CONDITIONRET;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;#######################################
###################; DISPLAY ROUTINES;#########################################
#################TITLE1:MOV DPTR,#MSAG1CALL LCD_MSGRETMSAG1:DB 1H,84H,'PREPAID',
0C2H,'ENERGY METER',00H;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~DISP_READING:MOV DPTR,#MSAG2CALL LCD_MSGRETMSAG2:DB 1H,82H,'METER READING',0C6
H,00H;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~AMT_READING:MOV
DPTR,#MSAG3CALL LCD_MSGRETMSAG3:DB 1H,81H,'BALANCE AMOUNT',0C3H,'Rs.',00H;~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~COUNT_READING:MOV DPTR,#MSAG
4CALL LCD_MSGRETMSAG4:DB 1H,82H,'PULSE COUNT',0C6H,00H;~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~UNIT_PRICE:MOV DPTR,#MSAG14CALL LCD_MSGRETMSAG1


4:DB 1H,83H,'UNIT PRICE',0C4H,'Rs ',00H;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~RECHAGRE:MOV DPTR,#MSAG5CALL LCD_MSGRETMSAG5:DB 1H,80H,'Please
Recharge',0C2H,'your Account',00H;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~
5
1
TITLE3:MOV DPTR,#MSAG6CALL LCD_MSGRETMSAG6:DB 1H,84H,'New Card',0C1H,'** DETECTE
D **',00H;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~TITLE4:MOV D
PTR,#MSAG7CALL LCD_MSGRETMSAG7:DB 1H,81H,'NEW UNIT PRICE',0C1H,'** STORED **',00
H;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~TITLE5:MOV DPTR,#MSA
G8CALL LCD_MSGRETMSAG8:DB 1H,83H,'NEW AMOUNT',0C1H,'** RECHARGED **',00H;~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~TITLE6:MOV DPTR,#MSAG9CALL LC
D_MSGRETMSAG9:DB 1H,82H,'INVALID CARD',0C0H,'****************',00H;~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SYSTEM_RESET:MOV DPTR,#MSAG91CALL L
CD_MSGRETMSAG91:DB 1H,80H,'System Restored',0C0H,'****************',00H;~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;*****************************
*****************************; INITIALIZE THE LCD 4-BIT MODE;*******************
***************************************INITLCD4:CLR
LCD_RS
; LCD REG
ISTER SELECT LINECLR
LCD_E
; ENABLE LINEMOV
R4, #CONFIG; FU
NCTION SET - DATA BITS,; LINES, FONTSCALL
WRLCDCOM4MOV
R4, #ONDSP
; DISPLAY ONCALL
WRLCDCOM4MOV
R4, #ENTRYMODE ; SET ENTRY MODECALL
WRLCDCOM4 ; INCREMENT CURSOR RIGHT, NO SHIFTMOV
R4, #CLRDSP; CLEA
R DISPLAY, HOME CURSORCALL
WRLCDCOM4RET; *********************************
*************************; SOFTWARE VERSION OF THE POWER ON RESET; *************
*********************************************
52
RESETLCD4:CLR
LCD_RS
; LCD REGISTER SELECT LINECLR
LCD_E
; ENABLE LINECLR
LCD_DB7
; SET BIT PATTERN FOR...CLR
LCD_DB
6
; ... POWER-ON-RESETSETB
LCD_DB5SETB
LCD_DB4SETB
LCD_E
; START ENABLE PULSECLR
LCD_E
; END ENABLE PULSEMOV
A
, #4
; DELAY 4 MILLISECONDSCALL
MDELAYSETB
LCD_E
; START
ENABLE PULSECLR
LCD_E
; END ENABLE PULSEMOV
A, #1
; DE
LAY 1 MILLISECONDCALL
MDELAYSETB
LCD_E
; START ENABLE PULSECLR
LCD_E
; END ENABLE PULSEMOV
A, #1
; DELAY 1 MILLISECO
NDCALL
MDELAYCLR
LCD_DB4
; SPECIFY 4-BIT OPERATIONSETB
L
CD_E
; START ENABLE PULSECLR
LCD_E
; END ENABLE PULSEMOV
A, #1
; DELAY 1 MILLISECONDCALL
MDELAYMOV
R4, #CONFIG; FUN
CTION SETCALL
WRLCDCOM4MOV
R4, #08H ; DISPLAY OFFCALL
WRLC
DCOM4MOV
R4, #1
; CLEAR DISPLAY, HOME CURSORCALL
WRLCDCOM4MOV
R4,#ENTRYMODE ; SET ENTRY MODEACALL
WRLCDCOM4JMP INITLCD4 ; *****
*****************************************************; SUB RECEIVES A COMMAND WO
RD TO THE LCD; COMMAND MUST BE PLACED IN R4 BY CALLING PROGRAM; ****************
******************************************WRLCDCOM4:CLR
LCD_ECLR
LCD_RS
; SELECT READ COMMANDPUSH
ACC
; SAVE ACCUMULATORMOV
A, R4
; PUT DATA BYTE IN ACCMOV
C, ACC.4 ; LOAD HIGH NIBBLE
ON DATA BUSMOV
LCD_DB4, C ; ONE BIT AT A TIME USING...MOV
C, AC
C.5 ; BIT MOVE OPERATOINSMOV
LCD_DB5, CMOV
C, ACC.6MOV
LCD_DB6, CMOV
C, ACC.7MOV
LCD_DB7, CSETB
LCD_E
; PU
LSE THE ENABLE LINECLR
LCD_EMOV
C, ACC.0 ; SIMILARLY, LOAD LOW
NIBBLE
53

MOV
LCD_DB4, CMOV
C, ACC.1MOV
LCD_DB5, CMOV
C, A
CC.2MOV
LCD_DB6, CMOV
C, ACC.3MOV
LCD_DB7, CCLR
LCD_ESETB
LCD_E
; PULSE THE ENABLE LINECLR
LCD_ECALL MADELAY
POP
ACCRET; **********************************************************;
SUB TO RECEIVE A DATA WORD TO THE LCD; DATA MUST BE PLACED IN R4 BY CALLING PROG
RAM; **********************************************************WRLCDDATA:CLR
LCD_ESETB
LCD_RS
; SELECT READ DATAPUSH
ACC
; SAVE
ACCUMULATORMOV
A, R4
; PUT DATA BYTE IN ACCMOV
C, ACC.4
; LOAD HIGH NIBBLE ON DATA BUSMOV
LCD_DB4, C ; ONE BIT AT A TIME USING..
.MOV
C, ACC.5 ; BIT MOVE OPERATOINSMOV
LCD_DB5, CMOV
C
, ACC.6MOV
LCD_DB6, CMOV
C, ACC.7MOV
LCD_DB7, CSETB
LCD_E
; PULSE THE ENABLE LINECLR
LCD_EMOV
C, ACC.0 ; S
IMILARLY, LOAD LOW NIBBLEMOV
LCD_DB4, CMOV
C, ACC.1MOV
L
CD_DB5, CMOV
C, ACC.2MOV
LCD_DB6, CMOV
C, ACC.3MOV
LCD_DB7, CCLR
LCD_ESETB
LCD_E
; PULSE THE ENABLE LINECLR
LCD_ENOPNOPPOP
ACCRET ; ****************************************
******************; SUB TAKES THE STRING IMMEDIATELY FOLLOWING THE CALL AND; DIS
PLAYS ON THE LCD. STRING MUST BE TERMINATED WITH A; NULL (0).; *****************
*****************************************LCD_MSG:
XXXXX1
Download this Document for FreePrintMobileCollectionsReport Document
Info and Rating
Roshan Kumar
Share & Embed
Related Documents
PreviousNext
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
p.
More from this user
PreviousNext
64 p.
Add a Comment

Upload a Document Search Documents Follow Us!scribd.com/scribdtwitter.com/scribd


facebook.com/scribd
AboutPressBlogPartnersScribd 101Web StuffScribd StoreSupportFAQDevelopers / APIJ
obsTermsCopyrightPrivacy
Copyright 2011 Scribd Inc.Language:English

You might also like