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

INC_COUNTER: MOV A,COUNTER+1 ADD A,#01 DA A MOV COUNTER+1,A CJNE A,#01H,REPPA1 AJMP DCV2
REPPA1: CJNE A,#02H,REPPA2 AJMP DCV2
REPPA2: CJNE A,#03H,REPPA3 AJMP DCV2
REPPA3: CJNE A,#04H,REPPA4 AJMP DCV2
REPPA4: CJNE A,#05H,REPPA AJMP DCV2
REPPA: MOV COUNTER,#00H MOV COUNTER+1,#01H MOV R1,#COUNTER MOV R4,#0EH MOV R6,#2 CALL STORE_EEPROM CALL DELAY AJMP DVB1
DCV2: MOV R1,#COUNTER MOV R4,#0EH MOV R6,#2 CALL STORE_EEPROM CALL DELAY RET
DVB1: MOV A,READING+1 ADD A,#01H DA A MOV READING+1,A JNC DCS1 MOV A,READING ADD A,#01 DA A MOV READING,A
DCS1: MOV R1,#READING MOV R4,#05H MOV R6,#2 CALL STORE_EEPROM CALL DELAY MOV A,AMOUNT+2
TOTAL0: CLR C SUBB A,PRICE+1 CALL BCD_CONV MOV AMOUNT+2,A MOV A,AMOUNT+1
TOTAL1: SUBB A,PRICE CALL BCD_CONV MOV AMOUNT+1,A MOV A,AMOUNT
TOTAL2: SUBB A,#00H CALL BCD_CONV MOV AMOUNT,A MOV R1,#AMOUNT MOV R4,#0AH MOV R6,#3 CALL STORE_EEPROM CALL DELAY MOV A,AMOUNT+1 CJNE A,#40H,FCX1 MOV BUZZ_COUNT,#02H SETB BUZZER
FCX1: CJNE A,#38H,FAX1 MOV BUZZ_COUNT,#02H SETB BUZZER
FAX1: CJNE A,#41H,FAAX1 MOV BUZZ_COUNT,#02H SETB BUZZER
FAAX1: CJNE A,#20H,FCX2 MOV BUZZ_COUNT,#03H SETB BUZZER
FCX2: CJNE A,#19H,FAX2 MOV BUZZ_COUNT,#03H SETB BUZZER
FAX2: CJNE A,#21H,FAAX2 MOV BUZZ_COUNT,#03H SETB BUZZER
FAAX2: CJNE A,#10H,FCX3 MOV BUZZ_COUNT,#04H SETB BUZZER
FCX3: CJNE A,#11H,FCX4 MOV BUZZ_COUNT,#04H SETB BUZZER
FCX4: CJNE A,#09H,FAX4 MOV BUZZ_COUNT,#04H SETB BUZZER
FAX4: MOV A,AMOUNT+2

CLR C SUBB A,PRICE+1 CALL BCD_CONV MOV A,AMOUNT+1

SUBB A,PRICE MOV A,AMOUNT CLR TBIT JNC POP1 SETB TBIT
POP1: CJNE A,#00H,BACK JNB TBIT,BACK MOV BALANCE,#00H MOV R1,BALANCE MOV R4,#15H MOV R6,#1 CALL STORE_EEPROM CALL DELAY CLR RELAY SETB BUZZER
BACK: RET
BCD_CONV: CLR BCDCARRY CLR CARRY JNC LOP2 SETB CARRY
LOP2: JNB AC,LOP1 SETB BCDCARRY CLR C SUBB A,#06H
LOP1: JNB CARRY,LOP3 CLR C SUBB A,#60H
LOP3: CLR C JNB CARRY,LOP4 SETB C
LOP4: RET
READ_BALANCE: MOV R1,#BALANCE

MOV R4,#15H

MOV R6,#1 CALL READ_EEPROM RET
READ_COUNTER: MOV R1,#COUNTER

MOV R4,#0EH

MOV R6,#2 CALL READ_EEPROM RET
READ_PRICE: MOV R1,#PRICE

MOV R4,#10H

MOV R6,#2 CALL READ_EEPROM RET