📄 finalbu.a51
字号:
CANPAN EQU P2 ; (I/P CONFIG) INTERFACED WITH CANDIDATE PANEL
VOTCAST EQU P1 ;(O/P CONFIG) INTERFACED WITH VOTE CAST LED PANEL
OPT2CU EQU P0 ; FOR TRANSFERRING CODE TO CU
SIGNAL1 EQU P3.4 ;(I/P CONFIG)IF THIS PIN BEKMS LOW DAT MEANS, CU HAS SIGNALLED TO GLOW MACHINE RDY LED
SIGNAL2 EQU P3.5 ;(I/P CONFIG)IF THIS PIN BEKMS LOW DAT MEANS, CU HAS COUNTED D VOTEN BU SHUD GLOW "VOTE CASTED" LED
BUZZER EQU P3.6 ;(O/P CONFIG)INTERFACING BUZZER
RDYLED EQU P3.7 ;(O/P CONFIG)INTERFACING MACHINE READY LED
CCODE EQU 32h ; MEMORY LOCATION TO STORE THE APP. CODE VALUE OF CANDIDATE WHO IS VOTED FOR
ORG 0000h
LJMP MAIN
ORG 0030h
MAIN:
BUINIT:
SETB BUZZER
SETB SIGNAL1 ;CONFIGURNG SIGNAL1 TO BE I/P
JB SIGNAL1,$ ;WAIT TILL CU SENDS A SIGNAL TO GLOW MACHINE READY LED
CLR RDYLED ;GLOW MACHINE READY LED
ACALL PANELSCAN
SETB RDYLED ;TURN OFF MACHINE READY LED
WAITING:
SETB SIGNAL2 ;CONFIGURNG SIGNAL2 TO BE I/P
MOV VOTCAST,#0FFh ;CONFIGURING THE VOTCAST PORT TO B O/P PORT
JB SIGNAL2,$ ;WAIT TILL CU SEND A SIGNAL TO GLOW VOTE CAST LED
MOV A, CCODE
CJNE A,#0FFh,VOTECASTED ;IF CONTENT OF A IS NOT 0FFh, IT MEANS CORRECT CODE WAS DETECTED, HENCE VOTECAST LED SHUD GLOW
;AND BUZZER SHUD RING SO JUMP TO 'VOTECASTED'MODULE
LJMP BUINIT ;OTHERWISE JUMP TO BUINIT
VOTECASTED:
MOV VOTCAST,A ;VOTE CAST LED IS CONNECTED TO VOTCAST PORT
CLR BUZZER
ACALL DELAY_5SEC
SETB BUZZER
MOV VOTCAST,#0FFh
LJMP BUINIT
;******5 SECOND DELAY ROUTINE********
DELAY_5SEC:
MOV R1,#05h
AGAIN2:MOV R2,#0FFh
AGAIN1:MOV R7,#0FFh
DJNZ R7,$
DJNZ R2,AGAIN1
DJNZ R1,AGAIN2
RET ;*******TO RETURN FROM DELAY_5SEC ROUTINE*******
;*****SCANNER ROUTINE TO DETECT THE SWITCH PRESSED FROM THE CANDIDATE PANEL******
PANELSCAN:
LABEL1:
MOV CANPAN,#0FFh ;CONFIGURING THE CANPAN PORT TO B I/P PORT
MOV OPT2CU,#0FFh ;CONFIGURING THE OPT2CU PORT TO B O/P PORT
LABEL2:
MOV A,CANPAN ;READING THE VALUE FROM THE CANDIDATE PANEL
MOV CCODE, A
MOV R4,#0h ;VALUE IN R4 REFLECTS NO. OF ZEROS IN A's CONTENTS
;THAT IS HOW MANY SWITCHES ARE PRESSED SIMULTANEOUSLY
MOV R5,#8h ;VALUE '8' MEANS THAT ALL 8 BITS OF 'A' ARE UNCHECKED RITENOW, AS THEY ARE CHECKED ONE BY ONE, R5 IS DECREMENTED
SETB C
CJNE A,#0FFh,LABEL3 ;IF A IS STILL EQUAL TO #0FFh, DAT MEANS NO BUTTON
JMP LABEL2 ;HAS BEEN PRESSED, SO READ D VALUE OF CANPAN AGAIN
LABEL3:
MOV R3,A ;SAVE CURRENT VALUE OF A IN R3
MOV A,R5 ;IF R5==0, JUMP TO FIN LABEL BCOS WHEN R5 BKUMS '0', IT MEANS ALL BITS OF 'A' HAV BEEN CHECKED
JZ FIN
MOV A,R3
RRC A ;TO CHECK ACCUMULATOR CONTENTS BITWISE
JNC INCRM ;IF BIT IS LOW THEN INCRM R4
DEC R5 ;R5 IS DECREMENED AFTER A BIT OF 'A' HAS BEEN CHECKED FOR IF ITS '0' OR '1'
JMP LABEL3
INCRM:
INC R4 ;R4 IS INCREMENTED WENEVER A ZERO IS ENCOUNTERED IN A's CONTENTS
DEC R5 ;R5 IS DECREMENED AFTER A BIT OF 'A' HAS BEEN CHECKED FOR IF ITS '0' OR '1'
JMP LABEL3
FIN:
CJNE R4,#01h,LABEL7 ;IF R4==1, IT MEANS ONLY ONE '0' IS ENCOUNTERED
;ie ONLY ONE BUTTON IS PRESSED
MOV A,CCODE ;HENCE MOVE ORIGINAL VALUE OF 'A' WHICH WAS STORED IN 'CCODE', AGAIN INTO 'A'
MOV R6, #00h
LABEL5:
RRC A ;TO GENRATE CODE(4-BIT)FOR THE CANDIDATE WHO IS VOTED FOR
INC R6 ;CODE INITIALLY IS STORED IN R6
JNC LABEL6
JC LABEL5
LABEL6:
MOV A,R6 ;HIGHER NIBBLE PINS OF PORT# ARE ASSUMED TO BE ACTIVE HIGH
MOV OPT2CU, A ;4- BIT CODE IS SEND TO CU THROUGH PORT #(OPT2CU)
JMP ENDING
;IF R4 IS NOT EQUAL TO 1, IT MEANS THERE ARE MORE THAN ONE '0'IN A's CONTENTS,
;ie MORE THAN ONE SWITCH IS PRESSED ON THE CANDIDATE PANEL
LABEL7:
MOV CCODE,#0FFh ;FFh IS SAVED AT CCODE BCOS FOR GLOWING VOTCAST LED, CONTENTS OF CCODE IS COPIED IN'A',
;AND SENT TO LED PANEL, BUT NO LED SHUD GLOW IN CASE VAGUE CODE IS DETECTED
;HENCE FFh WEN SENT TO LED PANEL WONT GLOW ANY LED.
MOV A,#09h
MOV OPT2CU, A
JMP ENDING
ENDING:
NOP
NOP
NOP
NOP
MOV CANPAN,#0FFh
MOV OPT2CU,#0FFh
RET ;*****TO RETURN FRM PANELSCAN ROUTINE******
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -