⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 finalbu.a51

📁 8051单片机 a51 投票器 带控制端 含原理图
💻 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 + -