RB0 EQU 000H RB1 EQU 008H SDA1 EQU P2.1 SCL1 EQU P2.0 WTCMD EQU 10100110B RDCMD EQU 10100111B WTCMD1 EQU 10100000B RDCMD1 EQU 10100001B RELAY EQU P2.7 BUZZER EQU P2.4 LCD_RS EQU P0.0 LCD_E EQU P0.1 LCD_DB4 EQU P0.2 LCD_DB5 EQU P0.3 LCD_DB6 EQU P0.4 LCD_DB7 EQU P0.5 OFFCUR EQU 0CH BLINKCUR EQU 0DH CLRDSP EQU 01H ONDSP EQU 0CH CONFIG EQU 28H ENTRYMODE EQU 6 DSEG ORG 0020H FLAGS1: DS 1 BCDCARRY BIT FLAGS1.0 CARRY BIT FLAGS1.1 TBIT BIT FLAGS1.2 TBIT1 BIT FLAGS1.3 READING: DS 2 AMOUNT: DS 3 COUNTER: DS 2 TEMP: DS 1 PRICE: DS 2 BALANCE: DS 1 BUZZ_COUNT: DS 1 READ_BYTE: DS 3 F1: DS 1 F2: DS 1 F3: DS 1 STACK: DS 1 CSEG ORG 00H AJMP MAIN ORG 0003H PUSH PSW PUSH ACC MOV PSW,#RB1 CALL INC_COUNTER POP ACC POP PSW RETI MAIN: MOV SP,#50H MOV PSW,#RB0 MOV IE,#10000001B CALL RESETLCD4 CALL TITLE1 CLR BUZZER SETB RELAY CLR TBIT1 MOV BUZZ_COUNT,#00H CALL READ_COUNTER MOV A,COUNTER CJNE A,#0FFH,BYPASS CALL RESET_READING CALL RESET_AMT CALL RESET_COUNTER CALL RESET_PRICE CALL RESET_BALANCE CALL SYSTEM_RESET CALL DELAYS
BYPASS: CALL READ_COUNTER CALL READ_PRICE CALL READ_BALANCE MAINS: CALL TITLE1 CALL DELAYY MOV A,BALANCE CJNE A,#00H,FG1 CLR RELAY CALL RECHARGE CALL DELAYY SETB BUZZER AJMP MAINS FG1: SETB RELAY MOV A,BUZZ_COUNT CJNE A,#00H,AZX1 CLR BUZZER AJMP AZX2 AZX1: DEC BUZZ_COUNT AZX2: MOV R1,#READING BYTESRAM: MOV R4,#05H EEPROM: MOV R6,#2 CALL READ_EEPROM CALL DISP_READING MOV TEMP,READING CALL SEP_DISP MOV TEMP,READING+1 CALL SEP_DISP CALL DELAYY MOV R1,#AMOUNT
MOV R4,#0AH
MOV R6,#3 CALL READ_EEPROM CALL AMT_READING MOV TEMP,AMOUNT CALL SEP_DISP MOV TEMP,AMOUNT+1 CALL SEP_DISP MOV R4,#'.' CALL WRLCDDATA CALL MDELAY MOV TEMP,AMOUNT+2 CALL SEP_DISP CALL DELAYY MOV R1,#COUNTER
MOV R4,#0EH
MOV R6,#2 CALL READ_EEPROM CALL COUNT_READING ; MOV TEMP,COUNTER ; CALL SEP_DISP MOV TEMP,COUNTER+1 CALL SEP_DISP CALL DELAYY MOV R1,#PRICE
MOV R4,#10H
MOV R6,#2 CALL READ_EEPROM CALL READ_PRICE CALL UNIT_PRICE MOV A,PRICE ADD A,#30h MOV R4,A CALL WRLCDDATA CALL MDELAY MOV R4,#'.' CALL WRLCDDATA CALL MDELAY MOV TEMP,PRICE+1 CALL SEP_DISP CALL DELAYY AJMP MAINS