📄 flow star.asm
字号:
;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 + -