📄 4.asm
字号:
LIGHT_LEDHAND:
ORL LEDVALUE,#DARK_AUTO
ANL LEDVALUE,#LED_HAND
CLR TR1
CLR TR0
RET
;***********KEYRESETDOWN PROCESS END***************
;***********TIMER0 INITIAL VALUE ,TIMMING AND PULL BAG START************
JNB INT0,NOINT
CLR 6EH
NOINT:
SETB EX1
SETB EX0
L06A0H:
RET
;***********************TIMER0 END**************
;************************RUN LAMP OFF AND APPROACH SIG_LIMIT2(P2.1)*******
TIMER0:
CLR TR1
JB SIG_LIMIT1, CHECKLIMIT2
CLR TR0
ORL LEDVALUE,#DARK_LEFT
RETI
CHECKLIMIT2:
JB SIG_LIMIT2,RUN
CLR TR0
ORL LEDVALUE, #DARK_RIGHT
RETI
RUN:
CPL P2.0
PUSH ACC
PUSH PSW
LOADTIEMR:
MOV TH0,TIMER0H
MOV TL0,TIMER0L
SETB TR0
JNB DIRSTATE,RLEDRUN
MOV A,LEDVALUE
CPL ACC.0
MOV LEDVALUE,A
SJMP OUTTIMER0
RLEDRUN:
MOV A,LEDVALUE
CPL ACC.4
MOV LEDVALUE,A
OUTTIMER0:
POP PSW
POP ACC
RETI
TIMER1:
PUSH ACC
PUSH PSW
CLR TR1
MOV TH1,#TIMER1H
MOV TL1,#TIMER1L
SETB TR1
INC TIMECONT
MOV A,TIMECONT
CJNE A,SENSORNEG,OUTTIMER1
MOV TIMECONT,#00H
CLR TR1
LCALL PULSEOUT
OUTTIMER1:
POP PSW
POP ACC
RETI
PULSEOUT:
CLR TR1
MOV TH0,TIMER0H
MOV TL0,TIMER0L
SETB ET0
SETB TR0
SETB P2.0
JB JIXING,DIRLED
CPL DIRSTATE
DIRLED:
MOV C,DIRSTATE
MOV DIROUT,C
JNB DIRSTATE,REVERSE
ORL LEDVALUE,#DARK_RIGHT
RET
REVERSE:
ORL LEDVALUE,#DARK_LEFT
RET
NODELAYDIR:
CLR TR1
SJMP PULSEOUT
STATECHANGE:
JBC FIRSTSTART,NODELAYDIR
CLR TR0
MOV A,SENSORNEG
JZ NODELAYDIR
MOV TH1,#TIMER1H
MOV TL1,#TIMER1L
SETB TR1
MOV TIMECONT,#00H
ORL LEDVALUE,#DARK_LEFT
ORL LEDVALUE,#DARK_RIGHT
RET
;***********************DATA PROCESS**********************************
DATAPROCESS:
MOV A,JIXING4
CJNE A,#0DH,INI_NEG
ORL LEDVALUE,#DARK_NEGTIVE
ANL LEDVALUE,#LED_POSTIVE
SETB JIXING
SJMP DATAPROCESS1
INI_NEG:
CJNE A,#0EH,DATAPROCESS1
ORL LEDVALUE,#DARK_POSTIVE
ANL LEDVALUE, #LED_NEGTIVE
CLR JIXING
DATAPROCESS1:
SETB FIRSTSTART
MOV A,SENSORNUM4
CJNE A,#02H,ONESENSOR
SETB TWOWAY
SJMP SPEEDPRO
ONESENSOR:
CJNE A,#01H,SPEEDPRO
CLR TWOWAY
SPEEDPRO:
CLR C
MOV A,SPEED4
RLC A
MOV R0,A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV TIMER0H,A
INC DPTR
MOV A,R0
MOVC A,@A+DPTR
MOV TIMER0L,A
SJMP SENSORPRO
TABLE1: ;200,500, 1K, 1.5K,2K
DB 0F6H,03CH,0FCH,018H,0FEH,0CH,0FEH,0B6H, 0FFH,06H,
; 2.5K, 3K, 4K 5K 6K
DB 0FFH,038H,0FFH,060H,0FFH,083H, 0FFH,09CH, 0FFH,0B0H
SENSORPRO:
CLR C
MOV A,#0AH
SUBB A,SENSOR4
MOV SENSORNEG,A
DATAEND:
RET
ERROR:
CLR RD
RET
;*********************DATA PROCESS OVER ****************
;**********************4LED DEMONSTRATE*****************
DEMO:
JB 7EH, L0834H
MOV A, BITSEL
CJNE A, #01H, L0834H
MOV 80H, #0FFH
SJMP LED1
L0834H:
MOV A, @R0
MOV DPTR, #TABLE
MOVC A, @A+DPTR
MOV 80H, A
LED1:
CLR P2.4
LCALL L08F8H
SETB P2.4
DISPLAY2:
INC R0
JB 7EH, L0852H
MOV A, BITSEL
CJNE A, #02H, L0852H
MOV 80H, #0FFH
SJMP LED2
L0852H:
MOV A, @R0
MOV DPTR, #TABLE
MOVC A, @A+DPTR
MOV 80H, A
LED2:
CLR P2.5
LCALL L08F8H
SETB P2.5
DISPLAY3:
INC R0
JB 7EH, L086BH
MOV A, BITSEL
CJNE A, #03H, L086BH
MOV 80H, #0FFH
SJMP LED3
L086BH:
MOV A, @R0
MOV DPTR, #TABLE
MOVC A, @A+DPTR
MOV 80H, A
LED3:
CLR P2.6
LCALL L08F8H
SETB P2.6
DISPLAY4:
INC R0
JB 7EH, L088EH
MOV A, BITSEL
CJNE A, #04H, L088EH
MOV 80H, #0FFH
SJMP LED4
L088EH:
MOV A, @R0
MOV DPTR, #TABLE
MOVC A, @A+DPTR
MOV 80H, A
LED4:
CLR P2.7
LCALL L08F8H
SETB P2.7
DISPLAYLAMP:
MOV 80H, LEDVALUE
MOV A,FUNCSEL
MOV C,7EH
BAOJING:
JB 7EH, INTLED
INTLED:
JNB 64H,LAMP
CLR P0.2
LAMP:
CLR P2.3
LCALL L08F8H
SETB P2.3
INC GLEAMTIME
MOV A, GLEAMTIME
CJNE A, #28H, L08C2H
MOV GLEAMTIME, #00H
CPL 7EH
L08C2H:
JB 7FH, L08F7H
JNB 72H, L08F7H
CLR 72H
MOV A, 30H
CJNE A, #04H, L08F7H
L08DDH:
LCALL L0AACH
MOV A, R4
ANL A, #0F0H
SWAP A
RET
L08F7H:
RET
;*****************4LED DEMONSTRATE OVER**********************
;*****************SEARCH FOR START AND CURSOR SIGNAL****************
L0:
SJMP L0994H
L08F8H:
MOV SCANTIME_H, #03H
L08FBH:
MOV SCANTIME_L, #20H
CHECKSIGNAL:
JNB AUTO,L0
L1:
JB SIG_CURSOR1, L096CH
JNB P1.0, L0971H
MOV CHECKTIME, #078H
L0907H:
JNB P1.0, L0971H
DJNZ CHECKTIME, L0907H
SETB SIG_CURSOR1
SETB DIRSTATE
CLR TR1
CLR TR0
LCALL STATECHANGE
SJMP L0971H
L096CH:
JB P1.0, L0971H
JB TWOWAY,FLAGCLEAR1
MOV CHECKTIME,#078H
L096DH:
JB P1.0,L0971H
DJNZ CHECKTIME,L096DH
CLR SIG_CURSOR1
CLR DIRSTATE
CLR TR0
CLR TR1
LCALL STATECHANGE
FLAGCLEAR1:
CLR SIG_CURSOR1
SJMP L0994H
L0971H:
JNB TWOWAY,L0994H
JNB SIG_CURSOR2, L098FH
JB P1.1, L0994H
MOV SCANRIGHT, #50H
L097AH:
JB P1.1, L0994H
DJNZ SCANRIGHT, L097AH
CLR TR0
CLR TR1
CLR SIG_CURSOR2
CLR DIRSTATE
LCALL STATECHANGE
JNB 71H, L0994H
CLR 71H
SJMP L0994H
L098FH:
JNB P1.1, L0994H
SETB SIG_CURSOR2
L0994H:
DJNZ SCANTIME_L, L099BH;judge for 50*4=200 TIMES ,RET.
DJNZ SCANTIME_H, L099EH
STARTOK:
RET
L099BH:
LJMP CHECKSIGNAL
L099EH:
LJMP L08FBH
;*****************SEARCH START AND CURSOR OVER*********
MOV 32H, #0FAH
L09A4H:
NOP ;WHAT USE?
NOP
DJNZ 32H, L09A4H
RET
;*****************DELAY 100MS BEGIN**************
L09AAH:
MOV 32H, #0CH
L09ADH:
MOV 33H, #0FAH
L09B0H:
DJNZ 33H, L09B0H
DJNZ 32H, L09ADH
RET
DELAY100MS:
MOV 32H, #0C8H
SJMP L09ADH
NOP
NOP
RETI
RETI
LJMP 0000H
INT0PROCESS:
CLR EX0
JB P1.2, ISSTOP
SETB 64H
JB 7FH, L09EFH
JB 6EH, L09EFH
SETB 6EH
SJMP SAVEDATA
ISSTOP:
JB T0,L09EFH ;
SAVEDATA:
PUSH ACC
PUSH PSW
PUSH 00H
PUSH 02H
PUSH 03H
MOV R0, #48H
MOV R2, #30H
MOV R3, #08H
LCALL WR24WC02
POP 03H
POP 02H
POP 00H
POP PSW
POP ACC
L09EFH:
RETI
INT1PROCESS:
PUSH ACC
PUSH PSW
CLR EX1
CLR SIG_LIMIT1
POP PSW
POP ACC
RETI
NOP
NOP
NOP
NOP
RETI
;********************DELAY END**************
;****************COMMUNICATION WITH 24WC02******************
WR24WC02:
LCALL L0A49H
MOV A, #0A0H
LCALL L0A67H
MOV A, R2
LCALL L0A67H
L09FCH:
MOV A, @R0
LCALL L0A67H
INC R0
DJNZ R3, L09FCH
LCALL L0A58H
RET
RD24WC02:
LCALL L0A49H
MOV A, #0A0H
LCALL L0A67H
MOV A, R2
LCALL L0A67H
LCALL L0A49H
MOV A, #0A1H
LCALL L0A67H
L0A1BH:
MOV R4, #08H
L0A1DH:
CLR T1
NOP
NOP
NOP
SETB T1
NOP
NOP
MOV C, WR
RLC A
DJNZ R4, L0A1DH
CLR T1
CJNE R3, #01H, L0A34H
SETB WR
SJMP L0A36H
L0A34H:
CLR WR
L0A36H:
NOP
NOP
SETB T1
MOV @R0, A
INC R0
NOP
CLR T1
NOP
NOP
SETB WR
DJNZ R3, L0A1BH
LCALL L0A58H
RET
L0A49H:
CLR T1
NOP
NOP
SETB WR
NOP
NOP
SETB T1
NOP
NOP
CLR WR
RET
L0A58H:
CLR T1
NOP
NOP
CLR WR
NOP
NOP
SETB T1
NOP
NOP
SETB WR
RET
L0A67H:
MOV R4, #08H
L0A69H:
CLR T1
NOP
RLC A
MOV WR, C
NOP
NOP
SETB T1
DJNZ R4, L0A69H
NOP
CLR T1
NOP
NOP
SETB WR
NOP
NOP
SETB T1
JB WR, L0A84H
RET
L0A84H:
LCALL L0A49H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -