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

📄 n_night.asm

📁 晚上灯!!!献给初学pic或者mdt的朋友!
💻 ASM
📖 第 1 页 / 共 2 页
字号:
				;
;							;
;Type: MDT10P53A1		INT_RC_OSC: 4MHz		INT_RST	;
;							;
;*******************************************************;
;-------------------FSR DEFINE--------------------;
;*************************************************;
INDF		EQU		00H               	;
TMR0		EQU		01H               	;
STATUS		EQU		03H               	;
FSR		EQU		04H               	;
PORTB		EQU		06H		;
;*************************************************;
;-----------------PORT DEFINE---------------------;
;*************************************************;
LED_RED_OUT	EQU		0		;
LED_GREEN_OUT	EQU		1		;
LED_BLUE_OUT	EQU		2		;
DAY_NIGHT_IN	EQU		3		;
PAUSE_IN	EQU		4		;
;*************************************************;
;----------------REGISTER DEFINE------------------;
;*************************************************;
SIGN		EQU		10H		;
KEY_SIGN	EQU		0		;
PAUSE_SIGN	EQU		1		;
PS_SIGN		EQU		2		;
RUN_PAUSE	EQU		3		;
KEY_OFF		EQU		4		;
KEY_ON		EQU		5		;
;*************************************************;
DELAY_1		EQU		0FH		;
DELAY_2		EQU		0EH		;
DELAY_3		EQU		0DH		;
DELAY_COUNT	EQU		0CH		;
TIME_COUNT1	EQU		0BH		;
TIME_COUNT2	EQU		0AH		;
TIME_COUNT3	EQU		09H		;
TIME_COUNT4	EQU		08H		;
;*************************************************;
		LIST P=12C509
;*************************************************;
;--------------------PROGRAMME  START------------------------;
;*************************************************;
		ORG		0000H
RESET
;		BCF		INDF,0
;		BCF		INDF,0
		BSF		STATUS,5
		GOTO 		START
;*************************************************;
		ORG           	0200H
;*************************************************;
;*************************************************;
DELAY
		MOVLW		07H			;50uS    ;11H  5S  ;0EH   4S
		MOVWF		DELAY_1
DELAY_1_1
		CLRWDT
		DECFSZ		DELAY_1,1
		GOTO 		DELAY_1_1
		RETLW		00H
;*************************************************;
;*************************************************;
DELAY_5MS
		MOVLW		0AH
		MOVWF		DELAY_1
DELAY_5MS_1
		MOVLW		64H
		MOVWF		DELAY_2
DELAY_5MS_2
		CLRWDT
		DECFSZ		DELAY_2,1
		GOTO 		DELAY_5MS_2
		DECFSZ		DELAY_1,1
		GOTO 		DELAY_5MS_1
		RETLW		00H
;*************************************************;
;*************************************************;
DELAY_1S
		MOVLW		0AH
		MOVWF		DELAY_1
DELAY_1S_1
		MOVLW		64H
		MOVWF		DELAY_2
DELAY_1S_2
		MOVLW		3FH
		MOVWF		DELAY_3
DELAY_1S_3
		CLRWDT
		DECFSZ		DELAY_3,1
		GOTO 		DELAY_1S_3
		DECFSZ		DELAY_2,1
		GOTO 		DELAY_1S_2
		DECFSZ		DELAY_1,1
		GOTO 		DELAY_1S_1
		RETLW		00H
;*************************************************;
;*************************************************;
PAUSE_HIGH
		BSF		SIGN,PS_SIGN			;
		BSF		SIGN,PAUSE_SIGN			;
		BSF		SIGN,RUN_PAUSE			;
		GOTO		PAUSE_END			;
;*************************************************;
PAUSE_LOW
		BCF		SIGN,RUN_PAUSE			;
		BCF		SIGN,PAUSE_SIGN			;
		BCF		SIGN,PS_SIGN			;
;*************************************************;
PAUSE_END
		BCF		SIGN,KEY_OFF			;
		BCF		SIGN,KEY_ON			;
		RETLW		00H				;
;*************************************************;
;*************************************************;
START
		CLRF		PORTB			;
		MOVLW		B'00111000'		;	;B'00111000'
		TRIS		PORTB			;
		BSF		PORTB,LED_RED_OUT	;
		BSF		PORTB,LED_GREEN_OUT	;
		BSF		PORTB,LED_BLUE_OUT	;
;-------------------------------------------;
		MOVLW		00H			;	;B'00000000'
		OPTION				 	;	;TMR0_PS = 2:1    2*1uS
;-------------------------------------------;
		MOVLW		07H			;
		MOVWF		FSR			;
MEM_CLEAN_1
		CLRWDT					;
		CLRF		INDF			;
		INCF		FSR,1 			;
		BTFSS		FSR,4			;
		GOTO 		MEM_CLEAN_1		;
		BTFSS		FSR,3			;
 		GOTO 		MEM_CLEAN_1		;
		CLRF		INDF			;
;*************************************************;
;*************************************************;
MAIN
		CLRWDT
		CLRF		SIGN				;
		BTFSS		PORTB,DAY_NIGHT_IN		;
		GOTO 		STATUS_ONE_1			;
		CALL		DELAY_5MS			;
		BTFSS		PORTB,DAY_NIGHT_IN		;
		GOTO 		STATUS_ONE_1			;
;-------------------------------------------;
LIGHT_OFF
		BSF		PORTB,LED_RED_OUT		;R
		BSF		PORTB,LED_GREEN_OUT		;G	;RGB OFF
		BSF		PORTB,LED_BLUE_OUT		;B
		CLRF		SIGN				;
		GOTO 		MAIN				;
;-------------------------------------------;
;-------------------------------------------;;-------------------------------------------;
STATUS_ONE_1
;-------------------------------------------;;-------------------------------------------;
		CLRWDT						;
		MOVLW		08H				;	;2S
		MOVWF		DELAY_COUNT			;
;-------------------------------------------;
STATUS_ONE_1_1
		BSF		PORTB,LED_RED_OUT		;R
		BSF		PORTB,LED_GREEN_OUT		;G
		BCF		PORTB,LED_BLUE_OUT		;B	;B
;-------------------------------------------;
		CALL		DELAY_1S			;
		BTFSC		SIGN,KEY_SIGN			;
		GOTO 		LIGHT_OFF			;	;LIGHT TEST
		BTFSC		PORTB,DAY_NIGHT_IN		;
		BSF		SIGN,KEY_SIGN			;
		BTFSS		PORTB,PAUSE_IN			;
		GOTO 		STATUS_ONE_1_2			;
		CALL		DELAY_5MS			;
		BTFSS		PORTB,PAUSE_IN			;
		GOTO 		STATUS_ONE_1_2			;
;-------------------------------------------;
STATUS_ONE_WAIT
		CLRWDT						;
		BTFSC		PORTB,PAUSE_IN			;
		GOTO 		STATUS_ONE_WAIT			;
;-------------------------------------------;
		BTFSC		SIGN,RUN_PAUSE			;
		GOTO		LOW_1				;
 		BTFSS		SIGN,RUN_PAUSE			;
		BSF		SIGN,RUN_PAUSE			;
		GOTO		PAUSE_1				;
LOW_1
		BCF		SIGN,RUN_PAUSE			;
PAUSE_1
		BTFSS		SIGN,RUN_PAUSE			;
		GOTO 		STATUS_ONE_1_2			;
;-------------------------------------------;
		GOTO 		STATUS_ONE_1_1			;
STATUS_ONE_1_2
 		BTFSC		SIGN,RUN_PAUSE			;
		GOTO 		STATUS_ONE_1_1			;
		DECFSZ		DELAY_COUNT,1			;
		GOTO 		STATUS_ONE_1_1
;-------------------------------------------;;-------------------------------------------;
STATUS_ONE_2							;GREEN  RISE
;-------------------------------------------;;-------------------------------------------;
		CLRWDT						;
		BSF		PORTB,LED_RED_OUT		;R
		BCF		PORTB,LED_BLUE_OUT		;B	;BG
		BSF		PORTB,LED_GREEN_OUT		;G
;-------------------------------------------;
		MOVLW		0FFH				;256
		MOVWF		TIME_COUNT1			;
		CLRF		TIME_COUNT2			;
;-------------------------------------------;
LIGHT_G_2
		MOVF		TIME_COUNT1,0			;
		MOVWF		TIME_COUNT3			;
		BTFSC		SIGN,PS_SIGN			;
		GOTO 		LIGHT_G_BG			;
		DECF		TIME_COUNT1,1			;
		INCF		TIME_COUNT2,1			;
LIGHT_G_BG
		MOVF		TIME_COUNT2,0			;
		MOVWF		TIME_COUNT4			;
		BTFSC		SIGN,PS_SIGN			;
		GOTO 		LIGHT_G_ON_2_1			;
;-------------------------------------------;
LIGHT_G_ON_2
		DECFSZ		TIME_COUNT3,1			;
		GOTO 		LIGHT_G_ON_2_1			;
		GOTO 		LIGHT_G_2_KEY			;
LIGHT_G_ON_2_1
		BSF		PORTB,LED_GREEN_OUT		;G
		CALL		DELAY				;
		GOTO 		LIGHT_G_ON_2			;
;-------------------------------------------;
;-------------------------------------------;
LIGHT_G_2_KEY
		BTFSC		SIGN,KEY_SIGN			;
		GOTO 		LIGHT_OFF			;	;LIGHT TEST
		BTFSC		PORTB,DAY_NIGHT_IN		;
		BSF		SIGN,KEY_SIGN			;
;-------------------------------------------;
		BTFSS		SIGN,KEY_ON			;
		GOTO		STATUS_2_1			;
		BTFSC		PORTB,PAUSE_IN			;
		GOTO		STATUS_2_1			;
		GOTO		STATUS_2_2			;
STATUS_2_1
		BTFSS		PORTB,PAUSE_IN			;
		GOTO		LIGHT_G_OFF_2			;
		BSF		SIGN,KEY_ON			;
		GOTO		LIGHT_G_OFF_2			;
STATUS_2_2
		BTFSS		SIGN,KEY_ON			;
		GOTO		LIGHT_G_OFF_2			;
		BTFSC		SIGN,RUN_PAUSE			;
		GOTO		LOW_2				;
		CALL		PAUSE_HIGH			;
		GOTO		LIGHT_G_OFF_2			;
LOW_2
		CALL		PAUSE_LOW			;
;-------------------------------------------;
;-------------------------------------------;
LIGHT_G_OFF_2
		DECFSZ		TIME_COUNT4,1			;
		GOTO 		LIGHT_G_OFF_2_1			;
		GOTO 		LIGHT_G_2_END			;
LIGHT_G_OFF_2_1
		BCF		PORTB,LED_GREEN_OUT		;G
		CALL		DELAY				;
		GOTO 		LIGHT_G_OFF_2			;
;-------------------------------------------;
LIGHT_G_2_END
		BTFSC		SIGN,KEY_SIGN			;
		GOTO 		LIGHT_OFF			;	;LIGHT TEST
		BTFSC		PORTB,DAY_NIGHT_IN		;
		BSF		SIGN,KEY_SIGN			;
		MOVLW		00H				;
		SUBWF		TIME_COUNT1,0			;
		BTFSS		STATUS,2				;
		GOTO 		LIGHT_G_2			;
;-------------------------------------------;;-------------------------------------------;
STATUS_ONE_3							;BLUE  LOWER
;-------------------------------------------;;-------------------------------------------;
		CLRWDT
		BSF		PORTB,LED_RED_OUT		;R
		BCF		PORTB,LED_GREEN_OUT		;G	GB
		BCF		PORTB,LED_BLUE_OUT		;B
		MOVLW		0FFH				;256
		MOVWF		TIME_COUNT1			;
		CLRF		TIME_COUNT2			;
;-------------------------------------------;
LIGHT_B_3
		MOVF		TIME_COUNT1,0			;
		MOVWF		TIME_COUNT3			;
		BTFSC		SIGN,PS_SIGN			;
		GOTO 		LIGHT_B_GB			;
		DECF		TIME_COUNT1,1			;
		INCF		TIME_COUNT2,1			;
LIGHT_B_GB
		MOVF		TIME_COUNT2,0			;
		MOVWF		TIME_COUNT4			;
		BTFSC		SIGN,PS_SIGN			;
		GOTO 		LIGHT_B_ON_3_1			;
;-------------------------------------------;
LIGHT_B_ON_3
		DECFSZ		TIME_COUNT3,1			;
		GOTO 		LIGHT_B_ON_3_1			;
		GOTO 		LIGHT_B_3_KEY			;
LIGHT_B_ON_3_1
		BCF		PORTB,LED_BLUE_OUT		;B
		CALL		DELAY				;
		GOTO 		LIGHT_B_ON_3			;
;-------------------------------------------;
;-------------------------------------------;
LIGHT_B_3_KEY
		BTFSC		SIGN,KEY_SIGN			;
		GOTO 		LIGHT_OFF			;	;LIGHT TEST
		BTFSC		PORTB,DAY_NIGHT_IN		;
		BSF		SIGN,KEY_SIGN			;
;-------------------------------------------;
		BTFSS		SIGN,KEY_ON			;
		GOTO		STATUS_3_1			;
		BTFSC		PORTB,PAUSE_IN			;
		GOTO		STATUS_3_1			;
		GOTO		STATUS_3_2			;
STATUS_3_1
		BTFSS		PORTB,PAUSE_IN			;
		GOTO		LIGHT_B_OFF_3			;
		BSF		SIGN,KEY_ON			;
		GOTO		LIGHT_B_OFF_3			;
STATUS_3_2
		BTFSS		SIGN,KEY_ON			;
		GOTO		LIGHT_B_OFF_3			;
		BTFSC		SIGN,RUN_PAUSE			;
		GOTO		LOW_3				;
		CALL		PAUSE_HIGH			;
		GOTO		LIGHT_B_OFF_3			;
LOW_3
		CALL		PAUSE_LOW			;
;-------------------------------------------;
;-------------------------------------------;
LIGHT_B_OFF_3
		DECFSZ		TIME_COUNT4,1			;
		GOTO 		LIGHT_B_OFF_3_1			;
		GOTO 		LIGHT_B_3_END			;
LIGHT_B_OFF_3_1
		BSF		PORTB,LED_BLUE_OUT		;B
		CALL		DELAY				;
		GOTO 		LIGHT_B_OFF_3			;
;-------------------------------------------;
LIGHT_B_3_END
		BTFSC		SIGN,KEY_SIGN			;
		GOTO 		LIGHT_OFF			;	;LIGHT TEST
		BTFSC		PORTB,DAY_NIGHT_IN		;
		BSF		SIGN,KEY_SIGN			;
		MOVLW		00H				;
		SUBWF		TIME_COUNT1,0			;
		BTFSS		STATUS,2				;
		GOTO 		LIGHT_B_3			;
;-------------------------------------------;;-------------------------------------------;
STATUS_ONE_4
;-------------------------------------------;;-------------------------------------------;
		CLRWDT
		MOVLW		08H				;	;2S
		MOVWF		DELAY_COUNT			;
;-------------------------------------------;
STATUS_ONE_4_1
		BSF		PORTB,LED_BLUE_OUT		;B
		BCF		PORTB,LED_GREEN_OUT		;G	;G
		BSF		PORTB,LED_RED_OUT		;R
;-------------------------------------------;
		CALL		DELAY_1S			;						;
		BTFSC		SIGN,KEY_SIGN			;
		GOTO 		LIGHT_OFF			;	;LIGHT TEST
		BTFSC		PORTB,DAY_NIGHT_IN		;
		BSF		SIGN,KEY_SIGN			;
		BTFSS		PORTB,PAUSE_IN			;
		GOTO 		STATUS_ONE_4_2			;
		CALL		DELAY_5MS			;
		BTFSS		PORTB,PAUSE_IN			;
		GOTO 		STATUS_ONE_4_2			;
;-------------------------------------------;
STATUS_FOUR_WAIT
		CLRWDT						;
		BTFSC		PORTB,PAUSE_IN			;
		GOTO 		STATUS_FOUR_WAIT		;
;-------------------------------------------;
		BTFSC		SIGN,RUN_PAUSE			;
		GOTO		LOW_4				;

⌨️ 快捷键说明

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