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

📄 sxjv11.asm

📁 12F629开发的中控锁,可以控制两个继电器.带学习功能
💻 ASM
字号:
;MCU= 12F629
;
;Modify Date: 10-14-2005
;Author: Rollonse.Chen
;Copyright(C) 2005 FreeTek,All rights reserved.
;
;moto bike  middle control lock
;
;
;//////////////////////////////////////////////////////////////////////
__CONFIG   _WDT_ON & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _CPD_ON & _CP_ON
;*************************************************************
LIST	P=12F629
#INCLUDE "P12F629.INC"

#DEFINE JIECHU	 	GPIO,0
#DEFINE BUZZER 	  GPIO,1
#DEFINE LED				GPIO,2
#DEFINE	LEARN				GPIO,3
#DEFINE FANGDAO  	GPIO,4
#DEFINE ANT GPIO,5

#DEFINE LAMP GPIO,6
#DEFINE OSC GPIO,7
;=============================================================
COUNTER 	EQU 20H
ADDR	EQU 21H
SDATA EQU 22H
BASECNT EQU 23H
BASEMS EQU 24H
ADDR2	EQU 25H
ADDR1 EQU 26H
ADDR0 EQU 27H
KEY EQU 28H
FLAG EQU 29H
;
#DEFINE VALB FLAG,0
#DEFINE LEARNB FLAG,1
#DEFINE OSC1STB FLAG,2
;#DEFINE OSCB FLAG,3
#DEFINE ALLB FLAG,4
#DEFINE ENB FLAG,5
;#DEFINE CHANGB FLAG,6
#DEFINE LEARN1STB FLAG,7
;
SCAN_C EQU 2AH
;LEARNCNTH EQU 2BH
LEARNCNTL EQU 2CH
LEARNCNT EQU 2DH

TEMP EQU 2EH 
STEMP EQU 2FH
;SIGNAL_HIGH EQU 2EH
;SIGNAL_LOW EQU 2FH

DEL EQU 30H
DELAYCNT EQU 31H
FLAGS EQU 32H
;
;#DEFINE MS4B FLAGS,0
;#DEFINE MS60B FLAGS,1
;#DEFINE HALFSB FLAGS,2

#DEFINE FDB FLAGS,6
#DEFINE JCB FLAGS,7

;
;HALFS_C EQU 33H
MS60_C EQU 34H

SPEAK_C EQU 35H
SPEAK_L EQU 36H

;FREQH EQU 37H
FREQL EQU 38H

LAMP_C EQU 39H
LAMP_L EQU 3AH

REFREQ EQU 3BH
FREQCNT EQU 3CH
DIRECTION EQU 3DH
S_SPEAK_L EQU 3EH
S_LAMP_L EQU 3FH

OSCCNT EQU 40H
STEP EQU 41H
CNTL EQU 42H
CNTH EQU 43H

FD05S EQU 44H
JC05S EQU 45H



SASTATUS EQU 5EH
SAACC EQU 5FH
;////////////////////////////////////////
SYS EQU H'20'

SECURE2 EQU H'30'
SECURE1 EQU H'31'
SECURE0 EQU H'32'


;tmr0 generate frequency
;tmr1 is base timer
;=============================================================
	ORG 000H
	GOTO RESET
	
	ORG 004H
	MOVWF SAACC
	SWAPF STATUS,W
	CLRF STATUS
	MOVWF SASTATUS
	
	MOVLW B'00000010'
	XORWF GPIO,F
	
	MOVF FREQL,W
	SUBWF TMR0,F
	
	CLRF PCLATH
	MOVF STEP,W
	ADDWF PCL,F
	GOTO STEP0
	GOTO STEP1
	GOTO STEP2
	GOTO STEP3
	GOTO STEP4
	GOTO STEP5
	GOTO STEP6
	
STEP0:	
	DECFSZ REFREQ,F
	GOTO INT_COM
	MOVLW D'8'
	MOVWF REFREQ
	
	;MOVLW 01H
	;ADDWF FREQL,F
	INCF FREQL,F
	
	DECFSZ FREQCNT,F
	GOTO INT_COM

	MOVLW D'62'
	MOVWF FREQCNT
	
	INCF STEP,F
	GOTO INT_COM
	
STEP1:
	DECFSZ REFREQ,F
	GOTO INT_COM
	MOVLW D'8'
	MOVWF REFREQ
	
	;MOVLW 0FFH
	;ADDWF FREQL,F
	DECF FREQL,F
	
	DECFSZ FREQCNT,F
	GOTO INT_COM

	MOVLW D'62'
	MOVWF FREQCNT
	
	DECF STEP,F
	DECFSZ CNTL,F
	GOTO INT_COM
	INCF STEP,F
	INCF STEP,F
	
	;CLRF CNTL
	MOVLW D'7'
	MOVWF CNTH
	MOVLW D'138'
	MOVWF FREQL
	MOVLW D'3'
	MOVWF REFREQ
	GOTO INT_COM
	
STEP2:
	DECFSZ CNTL,F
	GOTO INT_COM
	DECFSZ CNTH,F
	GOTO INT_COM
	
	INCF STEP,F
	MOVLW D'92'
	MOVWF FREQL
	
	MOVLW D'10'
	MOVWF CNTH
	GOTO INT_COM
	
STEP3:
	DECFSZ CNTL,F
	GOTO INT_COM
	DECFSZ CNTH,F
	GOTO INT_COM
	
	MOVLW D'138'
	MOVWF FREQL
	MOVLW D'7'
	MOVWF CNTH
	
	DECF STEP,F
	DECFSZ REFREQ,F
	GOTO INT_COM
	INCF STEP,F
	INCF STEP,F
	
	MOVLW D'16'
	MOVWF REFREQ
	MOVLW D'255'
	MOVWF FREQL
	
	MOVLW D'2'
	MOVWF CNTL
	GOTO INT_COM
	
	
STEP4:
	DECFSZ REFREQ,F
	GOTO INT_COM
	
	MOVLW D'16'
	MOVWF REFREQ
	
	DECF FREQL,F
	MOVLW D'80'
	SUBWF FREQL,W
	BTFSC STATUS,C
	GOTO INT_COM
	
	MOVLW D'255'
	MOVWF FREQL
	DECFSZ CNTL,F
	GOTO INT_COM
	
	INCF STEP,F
	MOVLW D'16'
	MOVWF REFREQ
	MOVLW D'20'
	MOVWF FREQL
	
	MOVLW D'3'
	MOVWF CNTL
	GOTO INT_COM
	
STEP5:
	DECFSZ REFREQ,F
	GOTO INT_COM
	MOVLW D'16'
	MOVWF REFREQ
	
	INCF FREQL,F
	MOVLW D'160'
	SUBWF FREQL,W
	BTFSS STATUS,C
	GOTO INT_COM
	
	MOVLW D'20'
	MOVWF FREQL
	
	DECFSZ CNTL,F
	GOTO INT_COM
	
	
STEP6:
	
	BCF INTCON,T0IE
	BCF BUZZER
	
INT_COM:	
	BCF INTCON,T0IF
	SWAPF SAACC,F
	SWAPF SASTATUS,W
	MOVWF STATUS
	SWAPF SAACC,W
	RETFIE
;//////////////////////////////////////////
TMR0_INT:	
	CLRWDT
	BTFSS TMR1H,4
	RETLW 00H
	BCF TMR1H,4
	INCF BASECNT,F
	INCF MS60_C,F
	
	RETLW 00H
 
;'''''''''''''''''''''''''''''''''''''''
INITIALIZE:	
	BSF STATUS,RP0
	
	MOVLW B'10000000'		;pull up disable,prescale for Tmr0,
	MOVWF OPTION_REG
	
	MOVLW B'00101000'
	MOVWF TRISIO
	
	CALL 3FFH
	;MOVLW 80H
	MOVWF OSCCAL		;adjust osc
	
	MOVLW B'10000000'
	MOVWF INTCON
	
	MOVLW B'00000000'
	MOVWF PIE1
	
	MOVLW B'00000000'
	MOVWF WPU		;pull up enable
	CLRF IOCB		;IO change wake up
	
;;	CLRF ANSEL
	;CLRF EECON1
	CLRF VRCON
	
	BCF STATUS,RP0
	
	CLRF GPIO
	
;;	CLRF ADCON0
	;MOVLW B'00110000' 
	;MOVWF T1CON
	CLRF T1CON
	
	CLRF PIR1
	MOVLW 07H
	MOVWF CMCON
	
	CLRF TMR1L
	CLRF TMR1H
	
	CLRF TMR0
	BSF T1CON,TMR1ON
	RETLW 00H
;=============================================================
RESET:
	BCF STATUS,RP0
	MOVLW D'63'
	MOVWF COUNTER
	MOVLW 21H
	MOVWF FSR
CLR_SFR:		
	CLRF INDF
	INCF FSR,F
	DECFSZ COUNTER,F
	GOTO CLR_SFR

;------------------------------------------------------------

MAIN:
	CALL INITIALIZE
	BSF LED

	
POLL:
	;CLRWDT
	CALL TMR0_INT
	
	;GOTO CHECK_STATUS

OSC_END:	
;4.096ms
	MOVF BASEMS,W
	XORWF BASECNT,W
	BTFSC STATUS,Z
	GOTO POLL
	XORWF BASEMS,F
	
	CALL RFIN
	XORLW 01H
	BTFSS STATUS,Z
	GOTO NORFIN
	
	CLRF SCAN_C
	
	BTFSC VALB
	GOTO CHECKING
	BSF VALB
	BTFSS LEARNB	;learn?
	GOTO KEY_PRO
	GOTO WRITECODE
	
NORFIN:
	INCF SCAN_C,F
	MOVLW D'50'
	SUBWF SCAN_C,W
	BTFSS STATUS,C
	GOTO CHECKING
	BCF VALB
	
	
CHECKING:	
	
;60ms
MS60_PRO:
	MOVLW D'15'
	SUBWF MS60_C,W
	BTFSS STATUS,C
	GOTO RECEIVE
	CLRF MS60_C
		
	BSF STATUS,RP0
	MOVLW B'00101000'
	MOVWF TRISIO
	BCF STATUS,RP0
	
	CALL BEEP_LAMP
	CALL CHECK_LEARN
	
;output
	MOVF FD05S,W
	BTFSC STATUS,Z
	GOTO NOFD
	BSF FANGDAO
	DECF FD05S,F
	GOTO HAVEFD
NOFD:	
	
	BCF FANGDAO
HAVEFD:	
	MOVF JC05S,W
	BTFSC STATUS,Z
	GOTO NOJC
	BSF JIECHU
	DECF JC05S,F
	GOTO HAVEJC
NOJC:
	BCF JIECHU
HAVEJC:
	
	
RECEIVE:
	
HALFPRO:	
	MOVLW D'122'
	SUBWF BASECNT,W
	BTFSS STATUS,C
	GOTO POLL
	MOVWF BASECNT
	
	BTFSS LEARNB
	GOTO NORMAL_HALF
	DECFSZ LEARNCNT,F
	GOTO _LEARN_HALF
	BCF LEARNB
	GOTO NORMAL_HALF

_LEARN_HALF:	
	MOVLW B'00000100'
	XORWF GPIO,F
	GOTO _NORMAL_HALF
	
NORMAL_HALF:
	BSF LED
_NORMAL_HALF:
	
	DECFSZ DELAYCNT,F
	GOTO ENABLE_CHECK
	BCF ENB
ENABLE_CHECK:	
	
	DECFSZ OSCCNT,F
	GOTO ENABLE_OSC1ST
	BCF OSC1STB
	
ENABLE_OSC1ST:
	
	
	GOTO POLL
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
KEY_PRO:
	
	;MOVLW SECURE2
	;MOVWF ADDR
	;CALL EEREAD
	;MOVF SDATA,W
	;XORWF ADDR2,W
	;BTFSS STATUS,Z
	;GOTO CHECKING
	MOVLW SECURE1
	MOVWF ADDR
	CALL EEREAD
	MOVF SDATA,W
	XORWF ADDR1,W
	BTFSS STATUS,Z
	GOTO CHECKING
	MOVLW SECURE0
	MOVWF ADDR
	CALL EEREAD
	MOVF SDATA,W
	XORWF ADDR0,W
	BTFSC STATUS,Z
	GOTO KEY00
	
CANCELKEY:
	BCF VALB
	GOTO CHECKING
	
KEY00:	
	
	BTFSS ALLB
	GOTO KEY01
	
	BCF INTCON,T0IE
	BCF INTCON,T0IF
	
	CLRF SPEAK_C
	BCF BUZZER
	CLRF LAMP_C
	BCF LAMP
	BCF ALLB
	BSF ENB
	MOVLW D'2'
	MOVWF DELAYCNT
	
	GOTO CHECKING
	
	
KEY01:	
	MOVLW B'00000011'
	XORWF KEY,W
	BTFSS STATUS,Z
	GOTO KEY02
	
	MOVLW 55H
	MOVWF SDATA
	MOVLW SYS
	MOVWF ADDR
	CALL EEWRITE
	
	BCF OSC1STB
	BSF ENB
	MOVLW D'6'
	MOVWF DELAYCNT
	
	BTFSC FDB
	GOTO DI1
	
	BSF FDB
	BCF JCB
	MOVLW D'8'
	MOVWF FD05S
	CLRF JC05S
	BCF JIECHU
	

DI1:	
	MOVLW D'1'
	MOVWF SPEAK_C
	MOVWF LAMP_C
	
PROCOM:	
	;BCF CHANGB
	
	MOVLW D'2'
	MOVWF SPEAK_L
_PROCOM_:	
	
	MOVLW D'2'
	MOVWF S_SPEAK_L
PROCOM_:	
	MOVLW D'2'
	MOVWF LAMP_L
	MOVLW D'6'
	MOVWF S_LAMP_L
	
	MOVLW D'76'
	MOVWF FREQL;0EBH
	
	CLRF TMR0
	
	MOVLW D'8'
	MOVWF REFREQ
	MOVLW D'62'
	MOVWF FREQCNT
	;CLRF DIRECTION
	CLRF STEP
	MOVLW D'20'
	MOVWF CNTL
	
	BCF INTCON,T0IF
	BSF INTCON,T0IE
	
	CLRF MS60_C
	BSF LAMP
	
	GOTO CHECKING
	
KEY02:
	MOVLW B'11000000'
	XORWF KEY,W
	BTFSS STATUS,Z
	GOTO KEY04
	
	MOVLW 0AAH
	MOVWF SDATA
	MOVLW SYS
	MOVWF ADDR
	CALL EEWRITE
	 
	BTFSC JCB
	GOTO KEY02COM
	
	BCF FDB
	BSF JCB
	MOVLW D'8'
	MOVWF JC05S
	CLRF FD05S
	BCF FANGDAO
	
	
KEY02COM:
		
	MOVLW D'3'
	MOVWF SPEAK_C
	MOVWF LAMP_C
	
	GOTO PROCOM
	
	
KEY04:
	MOVLW B'00110000'
	XORWF KEY,W
	BTFSS STATUS,Z
	GOTO KEY08
	
	MOVLW D'1'	;3S
	MOVWF SPEAK_C
	MOVLW D'13'
	MOVWF LAMP_C
	
	MOVLW D'50'
	MOVWF SPEAK_L
	
	;BSF CHANGB
	BSF ALLB
	
	BSF ENB
	MOVLW D'8'
	MOVWF DELAYCNT
	
	GOTO _PROCOM_
	
KEY08:
	
	GOTO CHECKING
;//////////////////////////////////////////
WRITECODE:
	;MOVLW SECURE2
	;MOVWF ADDR
	;MOVF ADDR2,W
	;MOVWF SDATA
	;CALL EEWRITE
	MOVLW SECURE1
	MOVWF ADDR
	MOVF ADDR1,W
	MOVWF SDATA
	CALL EEWRITE
	MOVLW SECURE0
	MOVWF ADDR
	MOVF ADDR0,W
	MOVWF SDATA
	CALL EEWRITE
	
	BCF LEARNB
	BSF LED
	GOTO DI1;CHECKING

;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


;////////////////////////////////////////////////
RFIN:
	
	MOVLW D'24'
	MOVWF COUNTER
	CLRF TEMP

	BTFSC ANT
	RETLW 00H
;>4000us & <9600us
WAIT_LOW:	
	BTFSC ANT
	GOTO SYNC_DATA
	
	CALL TMR0_INT	;6us
	
	MOVLW .10
	MOVWF DEL
DELING:	
	DECFSZ DEL,F
	GOTO DELING
	
	INCF TEMP,F
	MOVLW D'213'	;213*45us=9600us
	SUBWF TEMP,W
	BTFSS STATUS,C
	GOTO WAIT_LOW
	RETLW 00H
	
SYNC_DATA:
	MOVLW D'89'	;89*45us=4000us
	SUBWF TEMP,W
	BTFSS STATUS,C
	RETLW 00H
	

RECE_D0:	
	CLRF TEMP
	
RECE_HIGH:
	BTFSS ANT
	GOTO RECE_LOW
	INCF TEMP,F
	MOVLW D'162'	;162*8us=1300us
	SUBWF TEMP,W
	BTFSS STATUS,C
	GOTO RECE_HIGH
	RETLW 00H
	
RECE_LOW:
	MOVLW D'6'	;6*8us=50us
	SUBWF TEMP,W
	BTFSS STATUS,C
	RETLW 00H
	
	CALL TMR0_INT
	
	CLRF STEMP
	
RECE_L0:
	BTFSC ANT
	GOTO RECE_END
	
	INCF STEMP,F
	MOVLW D'162'	;162*8us=1300us
	SUBWF STEMP,W
	BTFSS STATUS,C
	GOTO RECE_L0
	RETLW 00H
	
RECE_END:
	MOVLW D'6'	;6*8us=50us
	SUBWF STEMP,W
	BTFSS STATUS,C
	RETLW 00H
;800us<STEMP+TEMP<1450us	
	;MOVF STEMP,W
	;ADDWF TEMP,W
	;MOVWF DEL
	;BTFSC STATUS,C
	;RETLW 00H
	;
	;MOVLW D'100'
	;SUBWF DEL,W
	;BTFSS STATUS,C
	;RETLW 00H
	;
	;MOVLW D'181'
	;SUBWF DEL,W
	;BTFSC STATUS,C
	;RETLW 00H

	MOVF STEMP,W
	SUBWF TEMP,W
	RRF ADDR2,F
	RRF ADDR1,F
	RRF ADDR0,F
	DECFSZ COUNTER,F
	GOTO RECE_D0	
RECEIVE_OK:	
	;SWAPF ADDR2,W
	;ANDLW 0FH
	MOVF ADDR2,W
	MOVWF KEY 
	
	;MOVLW 0FH
	;ANDWF ADDR2,F
	
	RETLW 01H
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	
CHECK_STATUS:
	BTFSS OSC	;oscillate
	GOTO NO_OSC
	;BTFSC OSC1STB
	;GOTO OSC_PRO
	;BSF OSC1STB
	;GOTO HAVE_OSC
OSC_PRO:
	;BTFSC OSCB
	;GOTO HAVE_OSC
	;BSF OSCB
	
	MOVLW SYS
	MOVWF ADDR
	CALL EEREAD
	MOVF SDATA,W
	XORLW 55H
	
	BTFSS OSC	;oscillate
	GOTO NO_OSC
	
	BTFSS STATUS,Z
	GOTO HAVE_OSC
	
	BTFSC ENB
	GOTO HAVE_OSC
	BSF ENB
	
	BTFSC OSC1STB
	GOTO SECOND_OSC
	BSF OSC1STB
	MOVLW D'34'
	MOVWF OSCCNT
	
	MOVLW D'7'
	MOVWF SPEAK_C
	MOVWF LAMP_C
	
	MOVLW D'2'
	MOVWF SPEAK_L

	MOVLW D'8'
	MOVWF S_SPEAK_L
	
	MOVLW D'6'
	MOVWF DELAYCNT
	
	MOVLW D'8'
	GOTO SECOND_COM	
	
SECOND_OSC:
	BCF OSC1STB
	MOVLW D'20'
	MOVWF DELAYCNT
	
	MOVLW D'1'	;9S
	MOVWF SPEAK_C
	MOVLW D'37'
	MOVWF LAMP_C
	
	MOVLW D'150'
	MOVWF SPEAK_L
	MOVLW D'6'
SECOND_COM:	
	MOVWF S_LAMP_L
	MOVLW D'2'
	MOVWF LAMP_L
	;BSF CHANGB
	BSF ALLB
	
	MOVLW D'76'
	MOVWF FREQL;0EBH
	
	CLRF TMR0
	
	MOVLW D'8'
	MOVWF REFREQ
	MOVLW D'62'
	MOVWF FREQCNT
	;CLRF DIRECTION
	CLRF STEP
	MOVLW D'20'
	MOVWF CNTL
	
	BCF INTCON,T0IF
	BSF INTCON,T0IE
	
	CLRF MS60_C
	BSF LAMP
	
NO_OSC:
	;BCF OSC1STB
	;BCF OSCB

HAVE_OSC:	
	GOTO OSC_END

CHECK_LEARN:
	;MOVLW SYS
	;MOVWF ADDR
	;CALL EEREAD
	;MOVF SDATA,W
	;XORLW 55H
	;BTFSC STATUS,Z
	;RETLW 00H
	
	BTFSC LEARN
	GOTO NO_LEARN
	INCF LEARNCNTL,F
	;BTFSC STATUS,Z
	;INCF LEARNCNTH,F
	MOVLW D'40'
	SUBWF LEARNCNTL,W
	BTFSS STATUS,C
	RETLW 00H
	
	BTFSC LEARN1STB
	RETLW 00H
	BSF LEARN1STB
	
	BTFSC LEARNB
	RETLW 00H 
	
	BSF LEARNB
	MOVLW D'20'
	MOVWF LEARNCNT
	MOVLW B'00000100'
	XORWF GPIO,F
	
	RETLW 00H
	
NO_LEARN:
	;CLRF LEARNCNTH
	CLRF LEARNCNTL
	BCF LEARN1STB
	
	RETLW 00H


;*************************************************************
;ADDR SDATA
;EEADR EEDAT
EEREAD:
	MOVF ADDR,W
	BSF STATUS,RP0
	MOVWF EEADR
	BSF EECON1,RD
	NOP
	MOVF EEDATA,W
	BCF STATUS,RP0
	MOVWF SDATA
	
	RETURN

;ADDR SDATA	
;EEADR EEDAT
EEWRITE:
	MOVF ADDR,W
	BSF STATUS,RP0
	MOVWF EEADR
	BCF STATUS,RP0
	MOVF SDATA,W
	BSF STATUS,RP0
	MOVWF EEDATA
	
	BSF EECON1,WREN
	BCF INTCON,GIE	;disable Interrupt
	MOVLW 55H
	MOVWF EECON2
	MOVLW 0AAH
	MOVWF EECON2
	BSF EECON1,WR
	BSF INTCON,GIE
	
	CALL TMR0_INT
	BTFSC EECON1,WR
	GOTO $-2
	
	BCF EECON1,WREN
	BCF STATUS,RP0
	RETURN
;//////////////////////////////////////////
BEEP_LAMP:
	
	MOVF SPEAK_C,W
	BTFSC STATUS,Z
	GOTO LAMP_OUT
	
	DECFSZ SPEAK_L,F
	GOTO LAMP_OUT
	
	BCF INTCON,T0IE
	BCF INTCON,T0IF
	BCF BUZZER
	
	DECFSZ SPEAK_C,F
	GOTO WORKING
	
	BCF ALLB
	GOTO LAMP_OUT
WORKING:
	
	BTFSS SPEAK_C,0
	GOTO BUZZER_SLEEP
	
	MOVLW D'2'
	MOVWF SPEAK_L
	
	MOVLW D'76'
	MOVWF FREQL;0EBH
	
	CLRF TMR0
	
	MOVLW D'8'
	MOVWF REFREQ
	MOVLW D'62'
	MOVWF FREQCNT
	;CLRF DIRECTION
	CLRF STEP
	MOVLW D'20'
	MOVWF CNTL
	
	BCF INTCON,T0IF
	BSF INTCON,T0IE
	GOTO LAMP_OUT
	
BUZZER_SLEEP:
	MOVF S_SPEAK_L,W
	MOVWF SPEAK_L	
	
LAMP_OUT:
	RETLW 00H
	
	MOVF LAMP_C,W
	BTFSC STATUS,Z
	RETLW 00H
	DECFSZ LAMP_L,F
	RETLW 00H
	
	BCF LAMP
	DECFSZ LAMP_C,F
	GOTO LIGHTING
	RETLW 00H
LIGHTING:
	BTFSS LAMP_C,0
	GOTO LAMP_SLEEP
	MOVLW D'2'
	MOVWF LAMP_L
	BSF LAMP
	RETLW 00H
LAMP_SLEEP:
	MOVF S_LAMP_L,W
	MOVWF LAMP_L
	
	RETLW 00H
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

	;ORG 3FFH
	;RETLW 90H		;Adjust OSC

	END
	

⌨️ 快捷键说明

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