Professional Documents
Culture Documents
Fim VTNG Machine Final Program
Fim VTNG Machine Final Program
ORG 0
AJMP MAIN
ORG 10
MAIN:
MOV DPTR,#MESSAGE1
MOV DPTR,#MESSAGE2
LCALL LOOP
LCALL LOOP
LCALL LOOP
LCALL LOOP
LCALL LOOP
LCALL LOOP
MOV R4,#0A1H
LCALL I2C_OUTB
MOV R4,#0
LCALL I2C_INB
LCALL I2C_STOP
MOV A,R4
CJNE A,#00,CHKST1
JMP STATUS0
JMP STATUS1
JMP STATUS2
STATUS4:LJMP STATS4
STATUS0:MOV DPTR,#SWVOTE
LCALL LCD_STRING
CHKSW1: JB P2.5,POLL
WRONG: MOV DPTR,#WRONGG
SJMP DISPW
STATUS1:
POLL: JB P2.4,CHKSW1
LCALL EPRRST
MOV R4,#01H
LCALL I2C_OUTB
LCALL I2C_STOP
POLLGOING:LCALL LCD_CLEAR
MOV DPTR,#POLLGON
LCALL LCD_STRING
JNB P2.5,STOPPOL
JMP READY
VOTING_READY:MOV 0AH,#0
MOV DPTR,#NAME1
MOV 52H,83H
MOV 53H,82H
MOV DPTR,#POS1
MOV 50H,83H
MOV 51H,82H
MOV R3,#10H
NXTP: MOV R0,#30H
LCALL LCD_CLEAR
MOV 83H,50H
MOV 82H,51H
LCALL LCD_STRING
MOV 50H,83H
MOV 51H,82H
LCALL NEXT_LINE
MOV 83H,52H
MOV 82H,53H
LCALL NEXT_LINE
MOV R6,#5
LCALL KEYBOARD
CJNE A,#0,VOTECAST
JNB P2.5,STAT2
DJNZ R7,ANYKEY
DJNZ R6,DLY
JMP CANDI
VOTECAST:
SETB P2.7 ////////////////BUZZER ON////////////////
MOV 32H,#0
MOV A,0AH
JMP WRIT
ADD A,#08H
MOV 32H,A
DJNZ R6,YY
MOV A,32H
ADD A,20H
MOV 21H,A
ADD A,21H
MOV 32H,A
MOV 30H,#0A0H
MOV 31H,#0
MOV R0,#30H
MOV R7,#3
LCALL WRTEPRM
LCALL I2C_START
MOV R4,#0A1H
LCALL I2C_OUTB
LCALL I2C_INB
MOV 30H,R4
MOV R4,#0H
LCALL I2C_INB
LCALL I2C_STOP
INC R4
MOV A,R4
ANL A,#0FH
CJNE A,#0AH,MAKE10
MOV A,R4
ANL A,#0F0H
ADD A,#10H
MOV R4,A
CJNE A,#0A0H,MAKE10
MOV R4,#0
INC 30H
MOV 33H,30H
MOV 34H,R4
MOV 30H,#0A0H
MOV 31H,#0
MOV R0,#30H
LCALL WRTEPRM
LCALL I2C_STOP
MOV A,0AH
CJNE A,#01H,N1
MOV DPTR,#NAME2
JMP LAST
N1: CJNE A,#02H,N2
MOV DPTR,#NAME3
JMP LAST
MOV DPTR,#NAME4
JMP LAST
MOV DPTR,#NAME5
JMP LAST
MOV DPTR,#NAME6
JMP LAST
MOV DPTR,#NAME7
JMP LAST
MOV DPTR,#NAME8
JMP LAST
MOV DPTR,#NAME9
JMP LAST
MOV DPTR,#NAME10
JMP LAST
MOV DPTR,#NAME11
JMP LAST
N10: CJNE A,#0BH,N11
MOV DPTR,#NAME12
JMP LAST
MOV DPTR,#NAME13
JMP LAST
MOV DPTR,#NAME14
JMP LAST
MOV DPTR,#NAME15
JMP LAST
MOV DPTR,#NAME16
JMP LAST
MOV 53H,82H
DJNZ R3,NEXTP
JMP POLLGOING
MOV 30H,#0A0H
MOV 31H,#0H
MOV 32H,#0H
MOV 33H,#02H
MOV R7,#4
MOV R0,#30H
LCALL WRTEPRM
LCALL I2C_STOP
MOV DPTR,#POLLSTOPP
LCALL LCD_STRING
LCALL NEXT_LINE
MOV DPTR,#SW2COUNT
JNB P2.5,CHKSW2
MOV DPTR,#WRONGG
LCALL LCD_CLEAR
JMP STRING
MOV 30H,#0A0H
MOV 31H,#0
MOV 32H,#0
MOV 33H,#04H
MOV R0,#30H
MOV R7,#4
LCALL WRTEPRM
LCALL I2C_STOP
MOV DPTR,#NAME1
MOV 52H,83H
MOV 53H,82H
MOV DPTR,#POS1
MOV 50H,83H
MOV 51H,82H
LCALL EPRRST
LCALL I2C_START
MOV R4,#0A1H
LCALL I2C_OUTB
MOV R7,#0FH
MOV R0,#30H
LCALL RDEPRM
MOV R4,#0
LCALL I2C_INB
LCALL I2C_STOP
LCALL LCD_CLEAR
MOV 83H,50H
MOV 82H,51H
LCALL LCD_STRING
MOV 50H,83H
MOV 51H,82H
MOV R5,#8
MOV 83H,52H
MOV 82H,53H
LCALL LCD_STRING
MOV 52H,83H
MOV 53H,82H
CLR P2.0
LCALL LO
MOV A,@R0
LCALL ASCI
INC R0
MOV A,@R0
LCALL ASCI
SETB P2.2
CLR P2.3
INC R0
LCALL DELAYL
LCALL DELAYL
LCALL DELAYL
LCALL KEYSCAN
CJNE R2,#00H,NXTCAN
JMP DISPSAME
NXTCAN: DJNZ R5,NEXTCAN
MOV R0,#30H
MOV R4,#0A1H
LCALL I2C_START
LCALL I2C_OUTB
MOV R7,#0FH
LCALL RDEPRM
MOV R4,#0
LCALL I2C_INB
LCALL I2C_STOP
DJNZ R3,NXTPO
MOV DPTR,#RESETWRD
LCALL LCD_CLEAR
LCALL LCD_STRING
CJNE R2,#0,KEYYES
JMP PRESS1
LCALL EPRRST
MOV R4,#0H
MOV 8,#00
MOV R3,#18H
INC 8
DJNZ R7,RPTCLR
LCALL I2C_STOP
LCALL LOOP
MOV 32H,8
LCALL EPRRST1
MOV R4,#0H
DJNZ R3,RPTCLR1
LCALL I2C_STOP
JMP MAIN
CLR P2.3
ACALL PRESSED
SETB P2.3
CLR P2.2
ACALL PRESSED
RET
CPL P2.2
MOV A,P0
ANL A,#0F0H
CJNE A,#0,AA
AA: SWAP A
JB ACC.3,MINS4
JB ACC.2,MINS1
JMP ADDIT
MINS4: RR A
JMP ADDIT
MINS1: DEC A
ADDIT: JB P2.2,STORE
ADD A,#4
MOV R2,A
MOV 20H,A
RET
MOV 31H,#0
MOV R7,#3
MOV R0,#30H
LCALL WRTEPRM
RET
ANL A,#0F0H
CJNE A,#00,PRESSED
RET
ANL P0,#0F0H
CALL LOOP
MOV DPTR,#LCDCODE
MOV A,#0H
MOV R6,#0H
MOV R7,#0H
INC R6
MOVC A,@A+DPTR
LCALL LO
MOV A,R6
CJNE R6,#09H,NEXT
RET
SWAP A
ANL A,#0FH
ORL A,#30H
SETB P2.0
LCALL LO
MOV A,B
ANL A,#0FH
ORL A,#30H
LCALL LO
RET
LCD_STRING:
MOV P0,#00H
MOV R6,#00H
MOV A,#00H
MOVC A,@A+DPTR
CJNE A,#2FH,NC1
INC DPTR
RET
NC1:
LCALL LCD_WRITE
MOV R7,#5
LCALL LOOP1
INC R6
INC DPTR
;MOV A,R6
AJMP NC
LCD_WRITE:
SETB P2.0 ;RS DATA
CALL LO
RET
NEXT_LINE:
MOV P0,#00H
MOV A,#0C0H
CALL LO
RET
CALL DELAYL
ANL P0,#00H
MOV A,#01H
PUSH 7
MOV R7,A
ANL A,#0F0H
SWAP A
ANL P0,#0F0H
ORL P0,A
CALL ENABLE
MOV A,R7
ANL A,#0FH
ANL P0,#0F0H
ORL P0,A
CALL ENABLE
POP 7
RET
SETB P2.1
CALL DELAYL
CLR P2.1
CALL DELAYL
RET
MOV R7,#25
HDH:
MOV R6,#60
DJNZ R6,$
DJNZ R7,HDH
RET
LOOP1:
CALL DELAYL
CALL DELAYL
DJNZ R7,LOOP1
RET
I2C_START:
SETB SDA
MOV R1, #7
MOV R1, A
RET
I2C_STOP: PUSH 01
CLR SDA
RET
I2C_OUTB:
SJMP I2C_SHIFT
I2C_INB:
MOV A, R4
CPL C
I2C_SHIFT:
PUSH 01
L_NEXT_BIT:
MOV R4, #2
MOV R4, #5
DJNZ R4, $ ; WAIT TR + THIGH (5US)
MOV R4, A
POP 01
RET
WRTEPRM:
LCALL I2C_START
RPTWRT:
MOV A,@R0
INC R0
MOV R4,A
LCALL I2C_OUTB
DJNZ R7,RPTWRT
RET
LCALL I2C_INB
MOV A,R4
MOV @R0,A
INC R0
DJNZ R7,RDEPRM
RET
LCDCODE:
DB 02H
DB 02H
DB 02H
DB 28H
DB 28H
DB 28H
DB 0CH
DB 06H
DB 01H
DB 14H
//DATA TO BE DISPLAYED
POS1: DB"CHAIRMAN/"
POS6: DB"VC/"
POS7: DB"LVC/"
END