📄 voting.lst
字号:
A51 MACRO ASSEMBLER VOTING 04/12/2008 18:04:50 PAGE 1
MACRO ASSEMBLER A51 V8.01
OBJECT MODULE PLACED IN VOTING.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE VOTING.a51 SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
00A0 1 IPFRMBU EQU P2 ;I/P FROM BALLOT UNIT(I/P CONFIGURED)
2
3 ;HEXPAD PORT DEFINITIONS
00A4 4 RW1 EQU P2.4 ;row1 declared for keypad
00A5 5 RW2 EQU P2.5 ;row2 declared for keypad
00A6 6 RW3 EQU P2.6 ;row3 declared for keypad
00A7 7 RW4 EQU P2.7 ;row4 declared for keypad
00B4 8 CL1 EQU P3.4 ;column1 declared for keypad
00B5 9 CL2 EQU P3.5 ;column2 declared for keypad
00B6 10 CL3 EQU P3.6 ;column3 declared for keypad
00B7 11 CL4 EQU P3.7 ;column4 declared for keypad
12
13 ;LCD PORT DEFINITIONS
0080 14 DATAPORT EQU P0
0092 15 EN EQU P1.2
0091 16 RW EQU P1.1
0090 17 RS EQU P1.0
00FF 18 DE EQU 0FFH ;(WHERE IS IT USED???)
0087 19 D7 EQU P0.7
20
0094 21 RDYSGN EQU P1.4 ;THIS PIN SENDS SIGNAL TO BU TO GLOW MACHINE READY LED(O/P CONFIGURED)
22
0095 23 VOTSNL EQU P1.5 ;THIS PIN SENDS SIGNAL TO BU TO GLOW VOTE CASTED LED(O/P CONFIGURED)
24
00B1 25 STATLD EQU P3.1 ;THIS PIN IS SET TO GLOW STATUS LED(O/P CONFIGURED)
26
00B0 27 MCONBTN EQU P3.0 ;THIS PIN IS SET OR CLEARED ACCORDING TO MANUAL CONTROL BUTTON PRESSED OR
NOT(I/P CONFIGURED)
28
0093 29 RESBUT EQU P1.3 ;THIS PIN BECOMES LOW WHEN RESULT BUTTON IS PRESSED
30
0070 31 DIG5 EQU 70h
0071 32 DIG4 EQU 71h
0072 33 DIG3 EQU 72h
0073 34 DIG2 EQU 73h
0074 35 DIG1 EQU 74h
36
0076 37 TOTALLB EQU 76h
0077 38 TOTALHB EQU 77h
39
0045 40 MEM EQU 45h ;TO BRING EACH CHAR OF ENTERED PASSWORD ONE BY ONE
0047 41 STATUS EQU 47h ;TO ENSURE POLL-RESULT-POLL SEQUENCE
0049 42 COUNT EQU 49h
0060 43 MODE EQU 60h ;SAVES D SELECTED MODE'S HEX VALUE
0079 44 CCODE EQU 79h ;TO SAVE CANDIDATE'S CODE OBTINED FRM BU
45
46 ;EEPROM PORT DEFINITIONS ETC.
0096 47 SDA1 EQU P1.6
0097 48 SCL1 EQU P1.7
49
50
00A0 51 WTCMD EQU 10100000B ;WRITE DATA COMMAND
00A1 52 RDCMD EQU 10100001B ;READ DATA COMMAND
53
007E 54 HBADD EQU 7Eh
007F 55 MEMORY EQU 7Fh
56
57
A51 MACRO ASSEMBLER VOTING 04/12/2008 18:04:50 PAGE 2
58
59
0000 60 ORG 0000h
0000 020016 61 LJMP MAIN
62
0003 63 ORG 0003h
0003 02018F 64 LJMP CLOSE
65
0013 66 ORG 0013h
0013 02019B 67 LJMP TOTAL
68
69
70
0016 71 MAIN: ;***************************MAIN*******************
72
0016 D293 73 SETB RESBUT
0018 D2B1 74 SETB STATLD
75
76
001A 7580FF 77 MOV DATAPORT,#0FFH
001D 91B8 78 ACALL LCD216 ;LCD INITIALISATION
001F 91BD 79 ACALL LCDCLR
0021 91C2 80 ACALL RETHOME
0023 91C7 81 ACALL DONCOFF ;LCD INITIALISED
82
0025 1204FF 83 LCALL STATREAD
0028 E547 84 MOV A,STATUS
002A B40002 85 CJNE A,#00h,LABEL1
002D 8003 86 JMP LABEL2
002F 0200B2 87 LABEL1:LJMP RESULT
0032 120399 88 LABEL2:LCALL EVM_LCD1 ;DISPLAYS "VOTING MODE"
0035 1202AC 89 LCALL DELAY_5SEC
0038 1201E9 90 LCALL PASSWORDDETECT
91
92
93
94
95
96
97
98
99
003B 100 INITIALIZEM: ;INITIALIZING MEMORY LOCATIONS(USED FOR STORING TOTAL NO.OF VOTES OF EAC
H CANDIDATE) TO '0'
101 ;MEMORY LOCATIONS 32, 33 ARE FOR CANDIDATE1'S VOTE COUNT
102 ;AND 34,35 ARE FOR CANDIDATE2'S VOTE COUNT AND SO ON....
003B 7832 103 MOV R0,#32h
003D 7A10 104 MOV R2,#10h
003F 105 LABEL3:
003F 7600 106 MOV @R0,#00h
0041 08 107 INC R0
0042 DAFB 108 DJNZ R2,LABEL3
109
0044 757600 110 MOV TOTALLB,#00h ;INITIALISING TOTAL VOTE COUNT TO
ZERO
0047 757700 111 MOV TOTALHB,#00h
112
004A B1B2 113 ACALL MEMORYINIT
004C B1D3 114 ACALL MEMINIT
115
004E 75A885 116 MOV IE,#85h ;ENABLING BOTH 'CLOSE' AND
'TOTAL' INTERRUPT
117
0051 118 MACFREE: ;MACHINE IS FREE TO ACCEPT
NEW CODE FRM BU AT DIS PT.
A51 MACRO ASSEMBLER VOTING 04/12/2008 18:04:50 PAGE 3
119 ;SETB VOTSNL
0051 C2B1 120 CLR STATLD ;TO GLOW SATUS LED FOR THE VERY FIRST TIME
0053 D294 121 SETB RDYSGN ;CONFIGURING AS O/P
0055 D2B0 122 SETB MCONBTN ;CONFIGURING AS I/P
0057 20B0FD 123 JB MCONBTN,$
005A D2B1 124 SETB STATLD ;WAIT TILL MANUAL CONTROL BUTTON IS PRESSE
D
005C C294 125 CLR RDYSGN ;WHEN PRESSED, SEND SIGNAL TO BU T
O SWITCH
126 ;ON ITS MACHINE RE
ADY LED
127
005E 00 128 NOP
005F D294 129 SETB RDYSGN
130
131
132
0061 75A0FF 133 MOV IPFRMBU,#0FFh ;CONFIGURING PORT
134
135 ;REFRESH: ;CLEAR THE PORT (INTERFACE
D WITH BU) FROM
136 ;THE PREVIOUS CODE
OBTAINED FRM BU
137
138
139 ; MOV A,IPFRMBU
140 ; ANL A,#00001111b
141 ; CJNE A,#00h,REFRESH
142
143
0064 144 START: ;POLLING PROGRAM TO DETECT THE COD
E FROM BU
145
146 ;MOV IPFRMBU,#0FFh ;CONFIGURING PORT AS I/P
0064 E5A0 147 MOV A,IPFRMBU
0066 540F 148 ANL A,#00001111b
0068 B40F02 149 CJNE A,#0Fh,START1
006B 80F7 150 JMP START
151
006D E5A0 152 START1: MOV A,IPFRMBU
006F 540F 153 ANL A,#00001111b
0071 B40907 154 CJNE A,#09h,VALID
0074 C295 155 CLR VOTSNL
0076 00 156 NOP
0077 D295 157 SETB VOTSNL
0079 80D6 158 JMP MACFREE
159
007B 160 VALID: ;*******INCREMENTING VOTE(INDIVIDUAL & TOTAL) AND WRITING IT TO EEPROM*******
161
007B F579 162 MOV CCODE,A
007D AA76 163 MOV R2,TOTALLB
007F BAFF07 164 CJNE R2,#0FFh,LABEL11 ;TOTAL VOTE COUNT SHUD B INCREMENTED AS
0082 0577 165 INC TOTALHB ;SOON AS WE GET
CONFIRMED DAT A VALID
0084 757600 166 MOV TOTALLB,#00h ;VOTE HAS BEEN CASTED
0087 8002 167 JMP LABEL12
168
0089 169 LABEL11:
0089 0576 170 INC TOTALLB
171
008B 172 LABEL12:
008B 12052F 173 LCALL TOTALWRITE
008E 7830 174 MOV R0,#30h ;INITIALISING MEMOR
Y LOCATION TO 30h
0090 75F002 175 MOV B,#02h ;AS 2 BYTES ARE RES
A51 MACRO ASSEMBLER VOTING 04/12/2008 18:04:50 PAGE 4
ERVED TO STORE VOTE
176 ;CO
UNT OF EACH CANDIDATE
0093 E579 177 MOV A,CCODE
0095 A4 178 MUL AB
0096 28 179 ADD A,R0
0097 F8 180 MOV R0,A
0098 E6 181 MOV A,@R0
0099 B4FF09 182 CJNE A,#0FFh,INCRM
009C 08 183 INC R0
009D E6 184 MOV A,@R0
009E 04 185 INC A
009F F6 186 MOV @R0,A
00A0 18 187 DEC R0
00A1 7600 188 MOV @R0,#00h
00A3 8002 189 JMP COMP
190
00A5 191 INCRM:
00A5 04 192 INC A
00A6 F6 193 MOV @R0,A
194
195
00A7 196 COMP:
00A7 C295 197 CLR VOTSNL
198
199 ;ACALL DELAY_5SEC
200
00A9 00 201 NOP
00AA D295 202 SETB VOTSNL
00AC 12056B 203 LCALL VOTEWRITE
00AF 020051 204 LJMP MACFREE
205
206
207
208
209
210
211
00B2 212 RESULT: ;*******************************RESULT ROUTINE *************************
213
214
00B2 120463 215 LCALL EVM_LCD5 ;DISPLAY "RESULT MODE"
00B5 1202AC 216 LCALL DELAY_5SEC
00B8 1201E9 217 LCALL PASSWORDDETECT
00BB 75A884 218 MOV IE,#84h ;ENABLING 'TOTAL' INTERRUPT ONLY, A
ND DISABLING
219 ;'CLOSE' INTERRUPT
00BE 754900 220 MOV COUNT,#00h
00C1 120599 221 LCALL VOTEREAD
00C4 12050D 222 LCALL STATWRITE0
223
00C7 224 LABEL14:
00C7 7832 225 MOV R0,#32h
00C9 E549 226 MOV A,COUNT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -