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

📄 dial_t6b.asm

📁 基于PIC16F73的有码开关有功率输出 DMX512协议的 灯光数据接受
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	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 + -