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

📄 solar.a51

📁 solar control solar control solar control
💻 A51
字号:
INCLUDE REG_51.PDF

RB0     EQU     000H    ; Select Register Bank 0
RB1     EQU     008H    ; Select Register Bank 1  ...poke to PSW to use

LDR1		EQU	P3.0
LDR2		EQU	P3.5

EMERGENCY	EQU	P3.7		;WHITE, +12V VIOLET, GND GREY

LIM1		EQU	P1.2
LIM2		EQU	P1.3

SW1		EQU	P1.0			;START Switch
SW2		EQU	P1.1			;STOP Switch

COIL1		EQU	P1.4
COIL2		EQU	P1.5
COIL3		EQU	P1.6
COIL4		EQU	P1.7

DSEG            ; This is internal data memory
ORG     20H     ; Bit adressable memory
MOTT:		DS		1

STACK	DATA	3FH

CSEG     AT      0        ; RESET VECTOR
;---------==========----------==========---------=========---------
;              PROCESSOR INTERRUPT AND RESET VECTORS
;---------==========----------==========---------=========---------
 
	ORG     00H    		; Reset
	JMP     MAIN

;---------==========----------==========---------=========---------
;  Main routine. Program execution starts here.
;---------==========----------==========---------=========---------
MAIN:	 
		MOV PSW,#RB0      	; Select register bank 0
	   MOV P1,#0FH
	   MOV MOTT,#01H
	   CLR EMERGENCY
	   
MMINS:
		CALL MOTORR
		JB LIM2,MMINS
		CLR P1.4
	   CLR P1.5
	   CLR P1.6
	   CLR P1.7
		
	   SETB SW1					;Wait for start button pressed	LIGHT=0	dark=1
	   JB SW1,$
	   NOP
	   JNB SW1,$
	   CLR P3.1
		
MMAIN:SETB LDR1
	   SETB LDR2
	   SETB LIM1
	   SETB LIM2
	   JB LDR1,SD1
	   JB LDR2,SD2
	   JNB LIM1,MMAINS
	   JNB SW2,STOP	
	   JB LIM2,MMAIN
	   CLR P1.4
	   CLR P1.5
	   CLR P1.6
	   CLR P1.7
	   AJMP START_TRACKING
	   
STOP:
		SETB P3.1
MMIS:
		CALL MOTORR
		JB LIM2,MMIS
		JNB SW2,$
		AJMP MAIN
		
			   
SD1:	JB LDR2,SD3			;
SD4:	;CALL MOTORL			;LD2 IS BRIGHT
		JB LDR1,SD4		;Rotate till ldr1 get ligh	
		JB LDR2,SD2
		AJMP START_TRACKING


SD2:	CALL MOTORL			;ROTATE TILL LDR2 GET LIGHT
		JNB LIM1,MMAINS
		JB LDR2,SD2
		JB LDR1,SD1
		AJMP START_TRACKING
		
SD3:	SETB LIM1					;both LDR in dark
		SETB LIM2
		SETB EMERGENCY
		JNB LIM1,MMAINS
;		CALL MOTORL
		JNB LDR1,MMAIN
		JNB LDR2,MMAIN
		AJMP SD3
		


MMAINS:
		CALL MOTORR
		JB LIM2,MMAINS
SNM:	SETB EMERGENCY
		CALL DELAY
		JNB LDR1,SNM
		CALL DELAY
		JB LDR2,SNM
		CLR EMERGENCY
		AJMP MMAIN

		
		
MOTORL:
		MOV A,MOTT
		CJNE A,#01H,XC1
		MOV MOTT,#04H
		CALL MOTOR_ROTATE
		CALL DELAY
		RET
XC1:	DEC MOTT
		CALL MOTOR_ROTATE
		CALL DELAY
		RET
	
MOTORR:
		MOV A,MOTT
		CJNE A,#04H,XC2
		MOV MOTT,#01H
		CALL MOTOR_ROTATE
		CALL DELAY
		RET
XC2:	INC MOTT
		CALL MOTOR_ROTATE
		CALL DELAY
		RET
		
		
START_TRACKING:
		AJMP MMAIN

MOTOR_ROTATE:
		MOV A,MOTT
		CJNE A,#01H,GB1
		SETB P1.7
		CLR P1.6
		CLR P1.5
		SETB P1.4
		RET
GB1:	CJNE A,#02H,GB2
		SETB P1.7
		SETB P1.6
		CLR P1.5
		CLR P1.4	
		RET
GB2:	CJNE A,#03H,GB3
		CLR P1.7
		SETB P1.6
		SETB P1.5
		CLR P1.4
		RET
GB3:	CJNE A,#04H,GB4		;66
		CLR P1.7
		CLR P1.6
		SETB P1.5
		SETB P1.4
GB4:	RET
	
			 

DELAY:
		MOV R0,#45H			;0A
REP2:	MOV R1,#99H			;99
REP1:	NOP
		DJNZ R1,REP1
		DJNZ R0,REP2
		RET  
	   
	   END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -