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