📄 dial_t6b.asm
字号:
GOTO PWM_CHANGEOVER
SET_PWM3
CLRF PWM2
MOVLW 0XFF
MOVWF PWM3
GOTO PWM_CHANGEOVER
SET_PWM23
CLRF PWM1
MOVLW 0XFF
MOVWF PWM2
MOVWF PWM3
GOTO PWM_CHANGEOVER
DISA_CHANGE
BCF CHANGEENABLE
GOTO PWM_CHANGEOVER
;*******************WHOLE COLOR PERFORM 4****************
WPERFORM4
INCF PULSE_L
BTFSS STATUS,Z
GOTO PWM_OPER
INCF PULSE_H
MOVLW 0X0C
SUBWF PULSE_H,W
BTFSC STATUS,C
CLRF PULSE_H
GOTO PWM_DRIVE
;--------------------------------------
PWM_OPER
MOVF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM1_UP3
MOVLW 0X01
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM1_DOWN3
MOVLW 0X02
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM12_UP3
MOVLW 0X03
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM12_DOWN3
MOVLW 0X04
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM2_UP3
MOVLW 0X05
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM2_DOWN3
MOVLW 0X06
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM23_UP3
MOVLW 0X07
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM23_DOWN3
MOVLW 0X08
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM3_UP3
MOVLW 0X09
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM3_DOWN3
MOVLW 0X0A
SUBWF PULSE_H,W
BTFSC STATUS,Z
GOTO PWM13_UP3
PWM13_DOWN3
DECF PWM3
DECF PWM1
GOTO PWM_CHANGEOVER
PWM13_UP3
INCF PWM3
INCF PWM1
GOTO PWM_CHANGEOVER
PWM23_DOWN3
DECF PWM3
DECF PWM2
GOTO PWM_CHANGEOVER
PWM23_UP3
INCF PWM3
INCF PWM2
GOTO PWM_CHANGEOVER
PWM12_DOWN3
DECF PWM1
DECF PWM2
GOTO PWM_CHANGEOVER
PWM12_UP3
INCF PWM1
INCF PWM2
GOTO PWM_CHANGEOVER
PWM3_DOWN3
DECF PWM3
GOTO PWM_CHANGEOVER
PWM3_UP3
INCF PWM3
GOTO PWM_CHANGEOVER
PWM1_DOWN3
DECF PWM1
GOTO PWM_CHANGEOVER
PWM1_UP3
INCF PWM1
GOTO PWM_CHANGEOVER
PWM2_DOWN3
DECF PWM2
GOTO PWM_CHANGEOVER
PWM2_UP3
INCF PWM2
GOTO PWM_CHANGEOVER
;****************WHOLE COLOR PERFORM 5***********
WPERFORM5
INCF COUNTER_L
BTFSC STATUS,Z
INCF NUM_PULSEH
MOVLW 0X44 ;17s for each perform
SUBWF NUM_PULSEH,W
BTFSS STATUS,Z
GOTO WPERFORM_SEL
CLRF NUM_PULSEH
CLRF PULSE_L
CLRF PULSE_H
CLRF NUM_PULSEL
CLRF PWM1
MOVLW 0X00
MOVWF PWM2
MOVWF PWM3
BSF CHANGEENABLE
INCF PERFORM_CH
MOVLW 0X04
SUBWF PERFORM_CH,W
BTFSS STATUS,C
GOTO WPERFORM_SEL
CLRF PERFORM_CH
WPERFORM_SEL
MOVF PERFORM_CH
BTFSC STATUS,Z
GOTO WPERFORM1
MOVLW 0X01
SUBWF PERFORM_CH,W
BTFSC STATUS,Z
GOTO WPERFORM2
MOVLW 0X02
SUBWF PERFORM_CH,W
BTFSC STATUS,Z
GOTO WPERFORM3
MOVLW 0X03
SUBWF PERFORM_CH,W
BTFSC STATUS,Z
GOTO WPERFORM4
GOTO PWM_DRIVE
;****************WHOLE COLOR PERFORM 6***********
WPERFORM6
MOVLW 0XFF
MOVWF PWM1
GOTO PWM_CHANGEOVER
;****************WHOLE COLOR PERFORM 7***********
WPERFORM7
MOVLW 0XFF
MOVWF PWM1
MOVWF PWM2
GOTO PWM_CHANGEOVER
;****************WHOLE COLOR PERFORM 8***********
WPERFORM8
MOVLW 0XFF
MOVWF PWM2
GOTO PWM_CHANGEOVER
;****************WHOLE COLOR PERFORM 9***********
WPERFORM9
MOVLW 0XFF
MOVWF PWM3
MOVWF PWM2
GOTO PWM_CHANGEOVER
;****************WHOLE COLOR PERFORM A***********
WPERFORMA
MOVLW 0XFF
MOVWF PWM3
GOTO PWM_CHANGEOVER
;****************WHOLE COLOR PERFORM B***********
WPERFORMB
MOVLW 0XFF
MOVWF PWM1
MOVWF PWM3
GOTO PWM_CHANGEOVER
;****************WHOLE COLOR PERFORM C***********
WPERFORMC
MOVLW 0XFF
MOVWF PWM1
MOVWF PWM2
MOVWF PWM3
;*****************COPY PWM VALUE*****************
PWM_CHANGEOVER
MOVF PWM1,W
MOVWF PWM4
MOVWF PWM7
MOVF PWM2,W
MOVWF PWM5
MOVWF PWM8
MOVF PWM3,W
MOVWF PWM6
MOVWF PWM9
GOTO PWM_DRIVE
;***********************************
;******************PWM DRIVE OUTPUT CYCLE***********************
PWM_DRIVE
CLRWDT
BCF STATUS,RP0
BCF STATUS,RP1
MOVF PORTC,W
XORWF TEMP_RC,W
MOVWF BUFFER_RC
BTFSC BUFFER_RC,5
GOTO START
PWM_MULTIPLE
DECFSZ RISING_EDGE,F ;If the rising edge counter has not rolled
GOTO PWM_UPDATE ;over, then go update the PWM counters
;
PWM_RISING_EDGE: ;
;
MOVF PWM1,W ;Update each counter with the latest
MOVWF PWM1_CNTR ;pwm value
MOVF PWM2,W ;
MOVWF PWM2_CNTR ;
;
MOVF PWM3,W ;
MOVWF PWM3_CNTR ;
MOVF PWM4,W ;
MOVWF PWM4_CNTR ;
MOVF PWM5,W ;
MOVWF PWM5_CNTR
MOVF PWM6,W ;
MOVWF PWM6_CNTR
MOVF PWM7,W ;
MOVWF PWM7_CNTR
MOVF PWM8,W ;
MOVWF PWM8_CNTR
MOVF PWM9,W ;
MOVWF PWM9_CNTR
MOVF PWM1
BTFSC STATUS,Z
GOTO NEXT1
BSF CHANNEL1
NEXT1 MOVF PWM2
BTFSC STATUS,Z
GOTO NEXT2
BSF CHANNEL2
NEXT2 MOVF PWM3
BTFSC STATUS,Z
GOTO NEXT3
BSF CHANNEL3
NEXT3 MOVF PWM4
BTFSC STATUS,Z
GOTO NEXT4
BSF CHANNEL4
NEXT4 MOVF PWM5
BTFSC STATUS,Z
GOTO NEXT5
BSF CHANNEL5
NEXT5 MOVF PWM6
BTFSC STATUS,Z
GOTO NEXT6
BSF CHANNEL6
NEXT6 MOVF PWM7
BTFSC STATUS,Z
GOTO NEXT7
BSF CHANNEL7
NEXT7 MOVF PWM8
BTFSC STATUS,Z
GOTO NEXT8
BSF CHANNEL8
NEXT8 MOVF PWM9
BTFSS STATUS,Z
BSF CHANNEL9
GOTO PERFORMSTART ;IF CHANNELPWM NOT '0' THEN LINGT THIS CHANNEL
PWM_UPDATE:
DECF PWM1_CNTR
BTFSC STATUS,Z
BCF CHANNEL1
DECF PWM2_CNTR
BTFSC STATUS,Z
BCF CHANNEL2
DECF PWM3_CNTR
BTFSC STATUS,Z
BCF CHANNEL3
DECF PWM4_CNTR
BTFSC STATUS,Z
BCF CHANNEL4
DECF PWM5_CNTR
BTFSC STATUS,Z
BCF CHANNEL5
DECF PWM6_CNTR
BTFSC STATUS,Z
BCF CHANNEL6
DECF PWM7_CNTR
BTFSC STATUS,Z
BCF CHANNEL7
DECF PWM8_CNTR
BTFSC STATUS,Z
BCF CHANNEL8
DECF PWM9_CNTR
BTFSC STATUS,Z
BCF CHANNEL9 ;IF PWMCONTRL -- =0 THEN OFF THIS CHANNEL
GOTO PERFORMSTART
;********************** FOR INTERRUPT *******************************
;*****************BASED DMX512 / NET DATA RECEIVE***********************
INTSUB
CLRWDT
BCF STATUS,RP1
BSF STATUS,RP0
BTFSS PIE1,RCIE
GOTO INTSUB1
BCF STATUS,RP0
BTFSS PIR1,RCIF
GOTO INTSUB1
SERIAL_RC
BTFSS FRAMESTARTED
GOTO DET_FRAMESTART
;=========================================
RECEIVE_DIS
BTFSS RCSTA,RX9D
GOTO ERR_DIS ;RX9D=0,ERR
MOVF COUNT_ADDRL,W
BTFSS STATUS,Z
GOTO RC_VALUE
MOVF COUNT_ADDRH,W
BTFSS STATUS,Z
GOTO RC_VALUE
MOVF RCREG,W
BTFSS STATUS,Z
GOTO ERR_DIS
RC_OVER
INCF COUNT_ADDRL ;FIRST BYTE=00 THEN VALID
BTFSC STATUS,Z
INCF COUNT_ADDRH
GOTO BACK
RC_VALUE
MOVF LOCAL_ADDRL,W
MOVWF SLOCAL_L
MOVF LOCAL_ADDRH,W
MOVWF SLOCAL_H
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_CH1
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_CH1
MOVF RCREG,W
MOVWF PWM1
GOTO RC_OVER
DET_CH1
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_CH2
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_CH2
MOVF RCREG,W
MOVWF PWM2
GOTO RC_OVER
DET_CH2
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_CH3
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_CH3
MOVF RCREG,W
MOVWF PWM3
GOTO RC_OVER
DET_CH3
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_CH4
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_CH4
MOVF RCREG,W
MOVWF PWM4
GOTO RC_OVER
DET_CH4
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_CH5
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_CH5
MOVF RCREG,W
MOVWF PWM5
GOTO RC_OVER
DET_CH5
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_CH6
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_CH6
MOVF RCREG,W
MOVWF PWM6
GOTO RC_OVER
DET_CH6
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_CH7
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_CH7
MOVF RCREG,W
MOVWF PWM7
GOTO RC_OVER
DET_CH7
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_CH8
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_CH8
MOVF RCREG,W
MOVWF PWM8
GOTO RC_OVER
DET_CH8
INCF SLOCAL_L
BTFSC STATUS,Z
INCF SLOCAL_H
MOVF COUNT_ADDRL,W
SUBWF SLOCAL_L,W
BTFSS STATUS,Z
GOTO DET_RE
MOVF COUNT_ADDRH,W
SUBWF SLOCAL_H,W
BTFSS STATUS,Z
GOTO DET_RE
MOVF RCREG,W
MOVWF PWM9
GOTO ERR_DIS
DET_RE
MOVF RCREG ;MOVF RCREG,W
GOTO RC_OVER
ERR_DIS
MOVF RCREG ;MOVF RCREG,W
BCF FRAMESTARTED
GOTO BACK
DET_FRAMESTART
MOVF RCREG
BTFSS STATUS,Z
GOTO BACK
BTFSC RCSTA,RX9D
GOTO BACK ;RX9D=1,ERR
BSF FRAMESTARTED
CLRF COUNT_ADDRL
CLRF COUNT_ADDRH
GOTO BACK
;********************COLOR_MODEL INTERUPT*****************************
INTSUB1
BCF STATUS,RP0
BTFSS INTCON,T0IE
GOTO INTSUB2
BTFSS INTCON,T0IF
GOTO INTSUB2
BCF INTCON,T0IF
INCF DELAY_TMR
GOTO BACK
;;*********************
INTSUB2
NOP
;*****************************************
BACK
BCF STATUS,RP0
SWAPF SBUFFER,W
MOVWF STATUS
SWAPF WBUFFER,F
SWAPF WBUFFER,W ;RETURN W AND STATUS AND PCLATH
RETFIE
;=================DISABLE THIS SUB PROGRAM==========================
MUL_10
BCF STATUS,RP0
CLRF SPEED_MAT
MOVF SPEED_MAT,W
MOVWF SPEED_NUM
SUBWF SPEED_SEL,W
BTFSC STATUS,Z
RETURN
LOOP
MOVLW 0X0A
ADDWF SPEED_NUM,F
INCF SPEED_MAT
MOVF SPEED_MAT,W
SUBWF SPEED_SEL,W
BTFSS STATUS,Z
GOTO LOOP
RETURN
GOTO MAIN
GOTO MAIN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -