This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Prepaid energy meter

DAP5: MOV A,AMOUNT+1 ANL A,#0FH ADD A,#30H MOV R4,A CALL WRLCDDATA CALL MDELAY MOV R4,'.' CALL WRLCDDATA CALL MDELAY MOV A,AMOUNT+2 ANL A,#0FH ADD A,#30H MOV R4,A CALL WRLCDDATA CALL MDELAY RET
DAP3: CJNE A,#00H,DAP2 MOV A,AMOUNT+1 ANL A,#0F0H SWAP A CJNE A,#00H,DAP4 AJMP DAP5
SEP_DISP: MOV A,TEMP ANL A,#0F0H SWAP A ADD A,#30H MOV R4,A CALL WRLCDDATA CALL MDELAY MOV A,TEMP ANL A,#0FH ADD A,#30H MOV R4,A CALL WRLCDDATA CALL MDELAY RET
AMT_RECHARGE: MOV READ_BYTE,#01H MOV READ_BYTE+1,00H MOV READ_BYTE+2,#10H MOV R1,#READ_BYTE MOV R6,#3 MOV A,#WTCMD1 CALL OUTS MOV A,#20H CALL OUT
BXLP: MOV A,@R1 CALL OUT INC R1 DJNZ R6,BXLP CALL STOP CALL DELAY RET
STORE_UNIT_PRICE: MOV READ_BYTE,#00H MOV READ_BYTE+1,#01H MOV READ_BYTE+2,#00H MOV R1,#READ_BYTE MOV R6,#3 MOV A,#WTCMD1 CALL OUTS MOV A,#20H CALL OUT
BALP: MOV A,@R1 CALL OUT INC R1 DJNZ R6,BALP CALL STOP CALL DELAY RET
RESET_BALANCE: MOV BALANCE,#0FFH MOV R1,#BALANCE MOV R4,#15H MOV R6,#1 CALL STORE_EEPROM CALL DELAY RET
RESET_PRICE: MOV PRICE,#01H MOV PRICE+1,#80H MOV R1,#PRICE MOV R4,#10H MOV R6,#2 CALL STORE_EEPROM CALL DELAY RET
RESET_COUNTER: MOV COUNTER,#00H MOV COUNTER+1,#03H MOV R1,#COUNTER MOV R4,#0EH MOV R6,32 CALL STORE_EEPROM CALL DELAY RET
RESET_AMT: MOV AMOUNT,#00H MOV AMOUNT+1,#05H MOV AMOUNT+2,#00H MOV R1,#AMOUNT MOV R4,#0AH MOV R6,#3 CALL STORE_EEPROM CALL DELAY RET
RESET_READING: MOV READING,#00H MOV READING+1,#13H MOV R1,#READING MOV R4,#05H MOV R6,#2 CALL STORE_EEPROM CALL DELAY RET
DELAYY: MOV F1,#0FH
SEP3: MOV F2,#0fFH
SEP2: MOV F3,#0FFH
SEP1: DJNZ F3,SEP1 DJNZ F2,SEP2 CALL CARD_READ MOV A,READ_BYTE CJNE A,#0FFH,DSP1 CLR TBIT1
DSP3A: DJNZ F1,SEP3 RET
DSP1: JB TBIT1,DSP3A CALL TITLE3 CALL DELAYS CALL DELAYS CALL CARD_READ MOV A,READ_BYTE CJNE A,#00H,DSP2 CALL TITLE4 MOV PRICE,READ_BYTE+1 MOV PRICE+1,READ_BYTE+2 MOV R1,#PRICE MOV R4,#10H MOV R6,#2 CALL STORE_EEPROM CALL DELAYS SETB TBIT1 AJMP RESETX_CHIP
DSP2: CJNE A,#01H,DSP3 CALL TITLE5
; MOV R1,#AMOUNT
; MOV R4,#04H
; MOV R6,#03h
; CALL READ_EEPROM MOV A,AMOUNT ADD A,READ_BYTE+1 DA A MOV A,AMOUNT MOV A,AMOUNT+1 ADDC A,READ_BYTE+2 DA A MOV AMOUNT+1,A MOV R1,#AMOUNT MOV R4,#0AH MOV R6,#03h CALL STORE_EEPROM CALL DELAYS SETB TBIT1 CALL RESET_BALANCE
RESETX_CHIP: MOV READ_BYTE,#0AAH MOV READ_BYTE+1,#0FFH MOV READ_BYTE+2,#0FFH MOV R1,#READ_BYTE MOV R6,#3 MOV A,#WTCMD1 CALL OUTS MOV A,#20H CALL OUT
BBLP: MOV A,@R1 CALL OUT INC R1 DJNZ R6,BBLP CALL STOP CALL DELAY RET
DSP3: CJNE A,#0AAH,DSP4 CALL TITLE6 CALL DELAYS SETB TBIT1
DSP4: RET
DELAY: MOV R6,#0FFH
RE1: MOV R7,#0FFH
RE: NOP DJNZ R7,RE DJNZ R6,RE1 RET
CARD_READ: MOV R1,#READ_BYTE

MOV R6,#3 MOV A,#WTCMD1 CALL OUTS MOV A,#20H CALL OUT MOV A,#RDCMD1 CALL OUTS
BXDLP: CALL IN MOV @R1,a INC R1 DJNZ R6,AXLP CALL STOP RET
AXLP: CLR SDA1 SETB SCL1 NOP NOP NOP NOP NOP CLR SCL1 JMP BXDLP
READ_EEPROM: MOV A,#WTCMD CALL OUTS MOV A,R4 CALL OUT MOV A,#RDCMD CALL OUTS
BRDLP: CALL IN MOV @R1,A INC R1 DJNZ R6,AKLP CALL STOP RET
AKLP: CLR SDA1 SETB SCL1 NOP NOP NOP NOP NOP CLR SCL1 JMP BRDLP
STORE_EEPROM: MOV A,#WTCMD CALL OUTS MOV A,R4 CALL OUT
BTLP: MOV A,@R1 CALL OUT INC R1 DJNZ R6,BTLP CALL STOP RET
TITLE1: MOV DPTR,#MSAG1 CALL LCD_MSG RET
MSAG1: DB 1H,84H,'PREPAID',0C2H,'ENERGY METER',00H
DISP_READING: MOV DPTR,#MSAG2 CALL LCD_MSG RET
MSAG2: DB 1H,82H,'METER READING',0C6H,00H
AMT_READING: MOV DPTR,#MSAG3 CALL LCD_MSG RET
MSAG3: DB 1H,81H,'BALANCE AMOUNT',0C3H,'RS.',00H
COUNT_READING: MOV DPTR,#MSAG4 CALL LCD_MSG RET
MSAG4: DB 1H,82H,'PULSE COUNT',0C6H,00H
UNIT_PRICE: MOV DPTR,#MSAG14 CALL LCD_MSG RET
MSAG14: DB 1H,83H,'UNIT PRICE',0C4H,'RS.',00H
RECHARGE: MOV DPTR,#MSAG5 CALL LCD_MSG RET
MSAG5: DB 1H,80H,'PLEASE RECHARGE',0C2H,'YOUR ACCOUNT',00H
TITLE3: MOV DPTR,#MSAG6 CALL LCD_MSG RET
MSAG6: DB 1H,84H,'NEW CARD',0C1H,'**DETECTED**',00H
TITLE4: MOV DPTR,#MSAG7 CALL LCD_MSG RET
MSAG7: DB 1H,81H,'NEW UNIT PRICE',0C1H,'**STORED**',00H
TITLE5: MOV DPTR,#MSAG8 CALL LCD_MSG RET
MSAG8: DB 1H,83H,'NEW AMOUNT',0C1H,'**RECHARGED**',00H
TITLE6: MOV DPTR,#MSAG9 CALL LCD_MSG RET
MSAG9: DB 1H,82H,'INVALID CARD',0C0H,'****************',00H
SYSTEM_RESET: MOV DPTR,#MSAG91 CALL LCD_MSG RET
MSAG91: DB 1H,80H,'SYSTEM RESTORED',0C0H,'****************',00H