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

📄 flow star.asm

📁 基于PIC16F73的流星雨效果灯光控制 的 灯光数据接受
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;TITLE
;***********************
;LED PWM CONTROL 
;COLOR CHANGING GRADUALY
;FOUR KINDS OF CHANGING
;*********************** 
	INCLUDE P16F73.INC
;************************
;------REGISTER FILES-----

T2_COUNT	EQU	0X20
SYN_SIGNAL	EQU	0X21

PWM01		EQU	0X24
PWM02		EQU	0X25
PWM03		EQU	0X26
PWM04		EQU	0X27
PWM05		EQU	0X28
PWM11		EQU	0X29
PWM12		EQU	0X2A
PWM13		EQU	0X2B
PWM14		EQU	0X2C
PWM15		EQU	0X2D
PWM21		EQU	0X2E
PWM22		EQU	0X2F
PWM23		EQU	0X30
PWM24		EQU	0X31
PWM25		EQU	0X32

PWM06		EQU	0X39
PWM16		EQU	0X3A
PWM26		EQU	0X3B

WBUFFER		EQU	0X35
SBUFFER		EQU	0X36
DLY_H		EQU	0X37
DLY_L		EQU	0X38

BITCON		EQU	0X3C
BITCON1		EQU	0X3D
BITCON2		EQU	0X3E
BITCON3		EQU	0X3F
BITCON4		EQU	0X40
BITCON5		EQU	0X41
BITCON6		EQU	0X42
CYCLE		EQU	0X43

W	        EQU  	0
F	        EQU	1

#define    RED1  PORTA,0
#define    RED2  PORTA,1
#define    RED3  PORTA,2
#define    RED4  PORTA,3
#define    RED5  PORTA,4
#define    RED6  PORTA,5
#define    G1    PORTB,0
#define    G2    PORTB,1
#define    G3    PORTB,2
#define    G4    PORTB,3
#define    G5    PORTB,4
#define    G6    PORTB,5
#define    B1    PORTC,0
#define    B2    PORTC,1
#define    B3    PORTC,2
#define    B4    PORTC,3
#define    B5    PORTC,4
#define    B6    PORTC,5
;**********************
;MAIN PROGRAM
;**********************
	ORG	0000
	GOTO	MAIN
	ORG	0004
	BCF	STATUS,RP0
	MOVWF	WBUFFER
	SWAPF	STATUS,W
	MOVWF	SBUFFER  ;PROTECT W AND STATUS VALUE
	GOTO	INTSUB
MAIN
	BCF	STATUS,RP0
	CLRF	PCLATH
	BCF	INTCON,GIE
;
INPORTS
	BCF	STATUS,RP0
	CLRF	PORTA
	CLRF	PORTB
	CLRF	PORTC
	BCF	SSPCON,SSPEN
	BSF	STATUS,RP0
	MOVLW	0XFF
	MOVWF	ADCON1  ;PORTA IS DIGITAL I/O
	CLRF	TRISA
	CLRF	TRISB  
	CLRF	TRISC  ;PORTA,PORTB,PORTC IS OUTPUT
INTIMERS
	BCF	STATUS,RP0
	CLRF	TMR0
	CLRF	TMR1H
	CLRF	TMR1L
	CLRF	TMR2
	BSF	STATUS,RP0
	MOVLW	0X07       ;1/256 PRESCALER
	MOVWF	OPTION_REG ;PORTB PULL-UP ENABLED	TO 16MS
	MOVLW	0X7F
	MOVWF	PR2        ;T2_count 32*2 uS/CYCLE
	BCF	STATUS,RP0
	MOVLW	0X02
	MOVWF	T2CON      ;1/16 PRESCALER
ININT	
	MOVLW	0X00
	MOVWF	INTCON
	BSF	INTCON,T0IE
	BSF	INTCON,PEIE
	MOVLW	0X00
	BSF	STATUS,RP0
	MOVWF	PIE1
	BSF	PIE1,TMR2IE
INRAM
	BCF	STATUS,RP0
	CLRF	T2_COUNT
	MOVLW	0X00
	MOVWF	SYN_SIGNAL 
	MOVLW	0X00
	MOVWF	PWM01
	MOVWF	PWM02
	MOVWF	PWM03
	MOVWF	PWM04
	MOVWF	PWM05
	MOVWF	PWM06
	MOVWF	PWM11
	MOVWF	PWM12
	MOVWF	PWM13
	MOVWF	PWM14
	MOVWF	PWM15
	MOVWF	PWM16
	MOVWF	PWM21
	MOVWF	PWM22
	MOVWF	PWM23
	MOVWF	PWM24
	MOVWF	PWM25
	MOVWF	PWM26
	MOVWF	BITCON
	MOVWF	BITCON1
	MOVWF	BITCON2
	MOVWF	BITCON3
	MOVWF	BITCON4
	MOVWF	BITCON5
	MOVWF	BITCON6
	CLRF	CYCLE
 
	BSF	T2CON,TMR2ON
	BSF	INTCON,GIE
START

	NOP
	NOP

	GOTO	START	 
	
;*********************
;INTSUBPROGRAM
;*********************
INTSUB      
	BCF  	STATUS,RP0
	BTFSS	PIR1,TMR2IF ;check interrupt source
	GOTO	INTSUB1	
	BCF	PIR1,TMR2IF ;TM2溢出标志位清0
	INCF	T2_COUNT
	MOVLW	0X10
	SUBWF	T2_COUNT,W
	BTFSS	STATUS,Z
	GOTO	DEL_DUTY
	CLRF	T2_COUNT
	CLRF	PORTA
	CLRF	PORTB
	CLRF	PORTC
	MOVF	PWM01,W  ;check pwm value 
	BTFSS	STATUS,Z
	BSF	RED1

	MOVF	PWM02,W  ;check pwm value 
	BTFSS	STATUS,Z
	BSF	RED2

	MOVF	PWM03,W   
	BTFSS	STATUS,Z
	BSF	RED3

	MOVF	PWM04,W  
	BTFSS	STATUS,Z
	BSF	RED4

	MOVF	PWM05,W  
	BTFSS	STATUS,Z
	BSF	RED5

	MOVF	PWM06,W  
	BTFSS	STATUS,Z
	BSF	RED6

	MOVF	PWM11,W  ;check pwm value 
	BTFSS	STATUS,Z
	BSF	G1

	MOVF	PWM12,W  ;check pwm value 
	BTFSS	STATUS,Z
	BSF	G2

	MOVF	PWM13,W   
	BTFSS	STATUS,Z
	BSF	G3

	MOVF	PWM14,W  
	BTFSS	STATUS,Z
	BSF	G4

	MOVF	PWM15,W  
	BTFSS	STATUS,Z
	BSF	G5

	MOVF	PWM16,W  
	BTFSS	STATUS,Z
	BSF	G6

	MOVF	PWM21,W  ;check pwm value 
	BTFSS	STATUS,Z
	BSF	B1

	MOVF	PWM22,W  ;check pwm value 
	BTFSS	STATUS,Z
	BSF	B2

	MOVF	PWM23,W   
	BTFSS	STATUS,Z
	BSF	B3

	MOVF	PWM24,W  
	BTFSS	STATUS,Z
	BSF	B4

	MOVF	PWM25,W  
	BTFSS	STATUS,Z
	BSF	B5

	MOVF	PWM26,W  
	BTFSS	STATUS,Z
	BSF	B6
	GOTO	BACK
DEL_DUTY
	MOVF	T2_COUNT,W
	SUBWF	PWM01,W
	BTFSC	STATUS,Z
	BCF	RED1

	MOVF	T2_COUNT,W
	SUBWF	PWM02,W
	BTFSC	STATUS,Z
	BCF	RED2

	MOVF	T2_COUNT,W
	SUBWF	PWM03,W
	BTFSC	STATUS,Z
	BCF	RED3

	MOVF	T2_COUNT,W
	SUBWF	PWM04,W
	BTFSC	STATUS,Z
	BCF	RED4

	MOVF	T2_COUNT,W
	SUBWF	PWM05,W
	BTFSC	STATUS,Z
	BCF	RED5

	MOVF	T2_COUNT,W
	SUBWF	PWM06,W
	BTFSC	STATUS,Z
	BCF	RED6

	MOVF	T2_COUNT,W
	SUBWF	PWM11,W
	BTFSC	STATUS,Z
	BCF	G1

	MOVF	T2_COUNT,W
	SUBWF	PWM12,W
	BTFSC	STATUS,Z
	BCF	G2

	MOVF	T2_COUNT,W
	SUBWF	PWM13,W
	BTFSC	STATUS,Z
	BCF	G3

	MOVF	T2_COUNT,W
	SUBWF	PWM14,W
	BTFSC	STATUS,Z
	BCF	G4

	MOVF	T2_COUNT,W
	SUBWF	PWM15,W
	BTFSC	STATUS,Z
	BCF	G5

	MOVF	T2_COUNT,W
	SUBWF	PWM16,W
	BTFSC	STATUS,Z
	BCF	G6
	
	MOVF	T2_COUNT,W
	SUBWF	PWM21,W
	BTFSC	STATUS,Z
	BCF	B1

	MOVF	T2_COUNT,W
	SUBWF	PWM22,W
	BTFSC	STATUS,Z
	BCF	B2

	MOVF	T2_COUNT,W
	SUBWF	PWM23,W
	BTFSC	STATUS,Z
	BCF	B3

	MOVF	T2_COUNT,W
	SUBWF	PWM24,W
	BTFSC	STATUS,Z
	BCF	B4

	MOVF	T2_COUNT,W
	SUBWF	PWM25,W
	BTFSC	STATUS,Z
	BCF	B5

	MOVF	T2_COUNT,W
	SUBWF	PWM26,W
	BTFSC	STATUS,Z
	BCF	B6
        GOTO    BACK
INTSUB1
	BTFSS	INTCON,T0IE
	GOTO	INTSUB2
	BTFSS	INTCON,T0IF
	GOTO	INTSUB2
	BCF	INTCON,T0IF

	MOVF	SYN_SIGNAL ;check the synchronized field
	BTFSC	STATUS,Z
	GOTO	R1_UP

	MOVLW	0X01
	SUBWF	SYN_SIGNAL,W
	BTFSC	STATUS,Z
	GOTO	Y1_UP

	MOVLW	0X02
	SUBWF	SYN_SIGNAL,W
	BTFSC	STATUS,Z
	GOTO	G1_UP

	MOVLW	0X03
	SUBWF	SYN_SIGNAL,W
	BTFSC	STATUS,Z
	GOTO	Q1_UP

	MOVLW	0X04
	SUBWF	SYN_SIGNAL,W
	BTFSC	STATUS,Z
	GOTO	B1_UP

	MOVLW	0X05
	SUBWF	SYN_SIGNAL,W
	BTFSC	STATUS,Z
	GOTO	Z1_UP


	MOVLW	0X06
	SUBWF	SYN_SIGNAL,W
	BTFSC	STATUS,Z
	GOTO	W1_UP
	GOTO	BACK
;*************RED UP-DOWN SUB_PROGRAMME*******
R1_UP
	BTFSC	BITCON,0
	GOTO	R1_DOWN
	MOVLW	0X10
	SUBWF	PWM01,W
	BTFSC	STATUS,Z
	GOTO	R1_DOWN
	INCF	PWM01

	MOVLW	0X05
	SUBWF	PWM01,W
	BTFSC	STATUS,C
	GOTO	R2_UP
	GOTO	BACK
R1_DOWN
	BSF	BITCON,0
	MOVF	PWM01
	BTFSS	STATUS,Z
	DECF	PWM01
R2_UP
	BTFSC	BITCON,1
	GOTO	R2_DOWN
	MOVLW	0X10
	SUBWF	PWM02,W
	BTFSC	STATUS,Z
	GOTO	R2_DOWN
	INCF	PWM02


	MOVLW	0X05
	SUBWF	PWM02,W
	BTFSC	STATUS,C
	GOTO	R3_UP
	GOTO	BACK
R2_DOWN
	BSF	BITCON,1
	MOVF	PWM02
	BTFSS	STATUS,Z
	DECF	PWM02
R3_UP
	BTFSC	BITCON,2
	GOTO	R3_DOWN
	MOVLW	0X10
	SUBWF	PWM03,W
	BTFSC	STATUS,Z
	GOTO	R3_DOWN
	INCF	PWM03


	MOVLW	0X05
	SUBWF	PWM03,W
	BTFSC	STATUS,C
	GOTO	R4_UP
	GOTO	BACK
R3_DOWN
	BSF	BITCON,2
	MOVF	PWM03
	BTFSS	STATUS,Z
	DECF	PWM03
R4_UP
	BTFSC	BITCON,3
	GOTO	R4_DOWN
	MOVLW	0X10
	SUBWF	PWM04,W
	BTFSC	STATUS,Z
	GOTO	R4_DOWN
	INCF	PWM04


	MOVLW	0X05
	SUBWF	PWM04,W
	BTFSC	STATUS,C
	GOTO	R5_UP
	GOTO	BACK
R4_DOWN
	BSF	BITCON,3
	MOVF	PWM04
	BTFSS	STATUS,Z
	DECF	PWM04
R5_UP
	BTFSC	BITCON,4
	GOTO	R5_DOWN
	MOVLW	0X10
	SUBWF	PWM05,W
	BTFSC	STATUS,Z
	GOTO	R5_DOWN
	INCF	PWM05


	MOVLW	0X05
	SUBWF	PWM05,W
	BTFSC	STATUS,C
	GOTO	R6_UP
	GOTO	BACK
R5_DOWN
	BSF	BITCON,4
	MOVF	PWM05
	BTFSS	STATUS,Z
	DECF	PWM05
R6_UP
	BTFSC	BITCON,5
	GOTO	R6_DOWN
	MOVLW	0X10
	SUBWF	PWM06,W
	BTFSC	STATUS,Z
	GOTO	R6_DOWN
	INCF	PWM06
	GOTO	BACK
R6_DOWN
	BSF	BITCON,5
	MOVF	PWM06
	BTFSC	STATUS,Z
	GOTO	R_OVER
	DECF	PWM06
	GOTO	BACK

R_OVER
	INCF	CYCLE
	MOVLW	0X03
	SUBWF	CYCLE,W
	BTFSS	STATUS,Z
	GOTO	R_CYCLE
	INCF	SYN_SIGNAL
	CLRF	CYCLE
R_CYCLE
	CLRF	BITCON
	GOTO	BACK
;*************YELLOW UP-DOWN SUB_PROGRAMME*******
Y1_UP
	BTFSC	BITCON2,0
	GOTO	Y1_DOWN
	MOVLW	0X10
	SUBWF	PWM01,W
	BTFSC	STATUS,Z
	GOTO	Y1_DOWN
	INCF	PWM01
	INCF	PWM11

	MOVLW	0X05
	SUBWF	PWM01,W
	BTFSC	STATUS,C
	GOTO	Y2_UP
	GOTO	BACK
Y1_DOWN
	BSF	BITCON2,0
	MOVF	PWM01
	BTFSC	STATUS,Z
	GOTO	Y2_UP
	DECF	PWM01
	DECF	PWM11
Y2_UP
	BTFSC	BITCON2,1
	GOTO	Y2_DOWN
	MOVLW	0X10
	SUBWF	PWM02,W
	BTFSC	STATUS,Z
	GOTO	Y2_DOWN
	INCF	PWM02
	INCF	PWM12

	MOVLW	0X05
	SUBWF	PWM02,W
	BTFSC	STATUS,C
	GOTO	Y3_UP
	GOTO	BACK
Y2_DOWN
	BSF	BITCON2,1
	MOVF	PWM02
	BTFSC	STATUS,Z
	GOTO	Y3_UP
	DECF	PWM02
	DECF	PWM12
Y3_UP
	BTFSC	BITCON2,2
	GOTO	Y3_DOWN
	MOVLW	0X10
	SUBWF	PWM03,W
	BTFSC	STATUS,Z
	GOTO	Y3_DOWN
	INCF	PWM03
	INCF	PWM13

	MOVLW	0X05
	SUBWF	PWM03,W
	BTFSC	STATUS,C
	GOTO	Y4_UP
	GOTO	BACK
Y3_DOWN
	BSF	BITCON2,2
	MOVF	PWM03
	BTFSC	STATUS,Z
	GOTO	Y4_UP
	DECF	PWM03
	DECF	PWM13
Y4_UP
	BTFSC	BITCON2,3
	GOTO	Y4_DOWN
	MOVLW	0X10
	SUBWF	PWM04,W
	BTFSC	STATUS,Z
	GOTO	Y4_DOWN
	INCF	PWM04
	INCF	PWM14

	MOVLW	0X05
	SUBWF	PWM04,W
	BTFSC	STATUS,C
	GOTO	Y5_UP
	GOTO	BACK
Y4_DOWN
	BSF	BITCON2,3
	MOVF	PWM04
	BTFSC	STATUS,Z
	GOTO	Y5_UP
	DECF	PWM04
	DECF	PWM14
Y5_UP
	BTFSC	BITCON2,4
	GOTO	Y5_DOWN
	MOVLW	0X10
	SUBWF	PWM05,W
	BTFSC	STATUS,Z
	GOTO	Y5_DOWN
	INCF	PWM05
	INCF	PWM15

	MOVLW	0X05
	SUBWF	PWM05,W
	BTFSC	STATUS,C
	GOTO	Y6_UP
	GOTO	BACK
Y5_DOWN
	BSF	BITCON2,4
	MOVF	PWM05
	BTFSC	STATUS,Z
	GOTO	Y6_UP
	DECF	PWM05
	DECF	PWM15
Y6_UP
	BTFSC	BITCON2,5
	GOTO	Y6_DOWN
	MOVLW	0X10
	SUBWF	PWM06,W
	BTFSC	STATUS,Z
	GOTO	Y6_DOWN
	INCF	PWM06
	INCF	PWM16
	GOTO	BACK
Y6_DOWN
	BSF	BITCON2,5
	MOVF	PWM06
	BTFSC	STATUS,Z
	GOTO	Y_OVER
	DECF	PWM06
	DECF	PWM16
	GOTO	BACK

Y_OVER
	INCF	CYCLE
	MOVLW	0X03
	SUBWF	CYCLE,W
	BTFSS	STATUS,Z
	GOTO	Y_CYCLE
	INCF	SYN_SIGNAL
	CLRF	CYCLE
Y_CYCLE
	CLRF	BITCON2
	GOTO	BACK
;*************GREEN UP-DOWN SUB_PROGRAMME*******
G1_UP
	BTFSC	BITCON1,0
	GOTO	G1_DOWN
	MOVLW	0X10
	SUBWF	PWM11,W
	BTFSC	STATUS,Z
	GOTO	G1_DOWN
	INCF	PWM11

	MOVLW	0X05
	SUBWF	PWM11,W
	BTFSC	STATUS,C
	GOTO	G2_UP
	GOTO	BACK
G1_DOWN
	BSF	BITCON1,0
	MOVF	PWM11
	BTFSS	STATUS,Z
	DECF	PWM11
G2_UP
	BTFSC	BITCON1,1
	GOTO	G2_DOWN
	MOVLW	0X10
	SUBWF	PWM12,W
	BTFSC	STATUS,Z
	GOTO	G2_DOWN

⌨️ 快捷键说明

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