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

📄 dial_t6b.asm

📁 基于PIC16F73的有码开关有功率输出 DMX512协议的 灯光数据接受
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;========TITLE============
;DMX512 / NET DATA RECEIVE
;SUPPORT FOR SINGLE MODEL PERFORM 
;9 CHANNEL PWM DRIVE OUTPUT

;++++++++++++++++++++++++++
	   INCLUDE P16F73.INC
;+++++++++++++++++++++++++++
#DEFINE		CHANNEL1	PORTC,3
#DEFINE		CHANNEL2	PORTC,2
#DEFINE		CHANNEL3	PORTC,1
#DEFINE		CHANNEL4	PORTC,0
#DEFINE		CHANNEL5	PORTA,5
#DEFINE		CHANNEL6	PORTA,4
#DEFINE		CHANNEL7	PORTA,3
#DEFINE		CHANNEL8	PORTA,2
#DEFINE		CHANNEL9	PORTA,1
#define     	CHANGEENABLE    SIGNAL,0
#define     	FRAMESTARTED    STATUS_COMM,2
#define     	RXBUFFER        STATUS_COMM,4
#define     	TX		PORTC,6
#define     	RX		PORTC,7
           
;-------------REGISTER FILES-----------
W			EQU	H'0000'
F			EQU	H'0001'

WBUFFER			EQU	    0X22
SBUFFER			EQU	    0X23
PWM1                    EQU         0X24
PWM2                    EQU         0X25
PWM3                    EQU         0X26
PWM4			EQU	    0X27
PWM5                    EQU         0X28
PWM6                    EQU         0X29
PWM7                    EQU         0X2A
PWM8			EQU	    0X2B
PWM9			EQU	    0X2C
PWM1_CNTR               EQU         0X2D
PWM2_CNTR               EQU         0X2E
PWM3_CNTR               EQU         0X2F
PWM4_CNTR               EQU         0X30
PWM5_CNTR               EQU         0X31
PWM6_CNTR               EQU         0X32
PWM7_CNTR               EQU         0X33
PWM8_CNTR               EQU         0X34
PWM9_CNTR               EQU         0X35
RISING_EDGE             EQU         0X36
TEMP_RC			EQU	    0X37
MODEL_SEL		EQU	    0X38
SPEED_SEL		EQU	    0X39
LOCAL_ADDRL		EQU	    0X3B
LOCAL_ADDRH		EQU	    0X3C
SPEED_MAT		EQU	    0X3D
SPEED_NUM		EQU	    0X3E
PULSE_L			EQU	    0X3F
NUM_PULSEL		EQU	    0X40
PULSE_H			EQU	    0X41
STATUS_COMM		EQU	    0X42
SIGNAL			EQU	    0X43
COUNT_ADDRL		EQU	    0X44
COUNT_ADDRH		EQU	    0X45
SLOCAL_L		EQU		0X46
SLOCAL_H		EQU		0X47
BUFFER_RC		EQU		0X48
DELAY_TMR		EQU		0X49
NUM_PULSEH		EQU		0X4A
PERFORM_CH		EQU		0X4B
COUNTER_L		EQU		0X4C



;******************************************
;*;*****MAIN PROGRAMME********************* 			  
;******************************************
	ORG	0000
	CLRF	PCLATH
	GOTO	MAIN
	ORG	0004
	MOVWF	WBUFFER	
	SWAPF	STATUS,W
        BCF     STATUS,RP0
	MOVWF	SBUFFER
	GOTO	INTSUB


MAIN
	BCF	STATUS,RP1
	BCF	STATUS,RP0
	BCF	INTCON,GIE
	

INPORTS	
	BCF	STATUS,RP0
	CLRF	PORTA
	CLRF	PORTB
	CLRF	PORTC
	BCF	SSPCON,SSPEN			;RC3,RC4,RC5 AS I/O
	BSF	STATUS,RP0
        MOVLW   0XFF
        MOVWF   ADCON1                  ;PORTA IS DIGITAL I/O
	MOVLW	0X00
	MOVWF	TRISA		;PORTA  IS OUTPUT
	MOVLW	0XFF		 
	MOVWF	TRISB		;PORTB  IS INPUT 
	MOVLW	0XB0		 
	MOVWF	TRISC		

;
INTIMERS
	BCF	STATUS,RP0
	CLRF	TMR0
	BSF	STATUS,RP0
	MOVLW	0X03		;  
	MOVWF	OPTION_REG		;PORTB PULL-UP ENABLED,T0 1MS 
	
ININT
	BCF		STATUS,RP0
	MOVLW	0X00		;
	MOVWF	INTCON		
        BSF     INTCON,PEIE
	MOVLW	0X00		;00000011
	BSF	STATUS,RP0
	MOVWF	PIE1		; 

INCOM	BSF	STATUS,RP0
	MOVLW 	0X03
	MOVWF	SPBRG		;16 M,BRGH=1,,250KBPS
	MOVLW	0X44
	MOVWF	TXSTA		;BRGH=1, 9 BITS TRANSMIT
	BCF	STATUS,RP0
	MOVLW	0X40
	MOVWF	RCSTA                   ;SPEN=0,RX9=1
	;BCF	PIR1,RCIF
;
INRAM
            BCF         STATUS,RP0
           

;>>>>>>>>>>>can modify the power on status>>>>>>???????????
            BCF         INTCON,T0IE;BSF         INTCON,T0IE
            MOVLW       0XFF;FF
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???????????????
	    MOVWF	PWM1
	    CLRF	PWM2
	    CLRF	PWM3
	    CLRF	PWM4
	    CLRF	PWM5
	    CLRF	PWM6
	    CLRF	PWM7
	    CLRF	PWM8
	    CLRF	PWM9
	    CLRF	PWM1_CNTR
	    CLRF	PWM2_CNTR
	    CLRF	PWM3_CNTR
	    CLRF	PWM4_CNTR
	    CLRF	PWM5_CNTR
            CLRF	PWM6_CNTR
	    CLRF	PWM7_CNTR
	    CLRF	PWM8_CNTR
	    CLRF	PWM9_CNTR
            CLRF        SIGNAL
	    BSF		CHANGEENABLE        
            BCF		FRAMESTARTED

	    CLRF	TEMP_RC			
	    CLRF	MODEL_SEL

	    MOVLW	0X01		
	    MOVWF	SPEED_SEL

            CLRF        STATUS_COMM
            CLRF        COUNT_ADDRL
            CLRF        COUNT_ADDRH
            CLRF        LOCAL_ADDRL
            CLRF        LOCAL_ADDRH
	    CLRF	SPEED_MAT		
	    CLRF	SPEED_NUM		
            CLRF	PULSE_L			
            CLRF	NUM_PULSEL		
            CLRF	PULSE_H	
	    CLRF	DELAY_TMR
	    CLRF	COUNTER_L
            
            BSF         INTCON,GIE
            MOVF        RCREG
	    MOVF	RCREG
            
        
;*************DIAL CONFIRM START*************
START
	BCF     STATUS,RP0
	CLRF	TEMP_RC
	MOVF	PORTC,W
	NOP
	NOP
	NOP
	MOVF	PORTC,W
	MOVWF	TEMP_RC
	NOP
	BTFSC	TEMP_RC,5
	GOTO	SINGLE_CTL
NET_CTL
	BCF	INTCON,T0IE
	CLRF	DELAY_TMR
	BCF	LOCAL_ADDRH,0
	MOVF	PORTB,W
	MOVWF	LOCAL_ADDRL
	BTFSC	TEMP_RC,4
	BSF	LOCAL_ADDRH,0
	CLRF	PWM1
	BCF     FRAMESTARTED
	BSF     RCSTA,SPEN
	BCF	RCSTA,CREN
        BSF     RCSTA,CREN 
	MOVF    RCREG
	MOVF	RCREG
	BSF	STATUS,RP0
	BSF     PIE1,RCIE
	GOTO	PWM_DRIVE
SINGLE_CTL
	BCF     RCSTA,CREN
	BCF	RCSTA,SPEN
	BSF	STATUS,RP0
	BCF	PIE1,RCIE
	BCF	STATUS,RP0

	CLRF	COUNTER_L
	CLRF    PULSE_L
	CLRF	PULSE_H
	CLRF	NUM_PULSEL
	CLRF	NUM_PULSEH
	CLRF	PERFORM_CH
	BSF	CHANGEENABLE
	BCF	SIGNAL,1
	MOVLW	0XFF
	MOVWF	PWM1
	CLRF	PWM2
	CLRF	PWM3
	CLRF	PWM4
	CLRF	PWM5
	CLRF	PWM6
	CLRF	PWM7
	CLRF	PWM8
	CLRF	PWM9
	
	MOVF	PORTB,W
	MOVWF	MODEL_SEL
	MOVWF	SPEED_SEL
	
	RRF	MODEL_SEL,F
        RRF	MODEL_SEL,F
	RRF	MODEL_SEL,F
        RRF	MODEL_SEL,F
	MOVLW	0X0F
	ANDWF	SPEED_SEL,F
	ANDWF	MODEL_SEL,F
	INCF	SPEED_SEL
	BSF	INTCON,T0IE

PERFORMSTART	
	NOP
	BCF	STATUS,RP0
	MOVF	DELAY_TMR,W
	SUBWF	SPEED_SEL,W
	BTFSS	STATUS,Z
	GOTO	PWM_DRIVE

	CLRF	DELAY_TMR
	BTFSC	TEMP_RC,4
	GOTO	WHCOLOR_CTL
;***********SINGLE COLOR CONTR0L*********************
SINCOL_CTL
	 MOVF	MODEL_SEL,W
	 BTFSC	STATUS,Z
	 GOTO   SPERFORM1

	 MOVLW	0X01
	 SUBWF	MODEL_SEL,W
	 BTFSC	STATUS,Z
	 GOTO   SPERFORM2

	 MOVLW	0X02
	 SUBWF	MODEL_SEL,W
	 BTFSC	STATUS,Z
	 GOTO   SPERFORM3

	 MOVLW	0X03
	 SUBWF	MODEL_SEL,W
	 BTFSC	STATUS,Z
	 GOTO   SPERFORM4

	 MOVLW	0X04
	 SUBWF	MODEL_SEL,W
	 BTFSC	STATUS,Z
	 GOTO   SPERFORM5

	 MOVLW	0X05
	 SUBWF	MODEL_SEL,W
	 BTFSC	STATUS,Z
	 GOTO   SPERFORM6

	 MOVLW	0X06
	 SUBWF	MODEL_SEL,W
	 BTFSC	STATUS,Z
	 GOTO   SPERFORM7

	 GOTO	PWM_DRIVE
;***************SINGLE COLOR PERFORM 1*****************
SPERFORM1
	 MOVLW	0XFF
	 MOVWF	PWM1
	 MOVWF	PWM2
	 MOVWF	PWM3
	 MOVWF	PWM4
	 MOVWF	PWM5
	 MOVWF	PWM6
	 MOVWF	PWM7
	 MOVWF	PWM8
	 MOVWF	PWM9

	 INCF   NUM_PULSEL
	 BTFSS	STATUS,Z
	 GOTO	NEXT_INCF
	 BSF	SIGNAL,1
	 GOTO	PWM_DRIVE
NEXT_INCF	
	 INCF   NUM_PULSEL
	 BTFSS	STATUS,Z
	 GOTO	NEXT1_INCF
	 BSF	SIGNAL,1
	 GOTO	PWM_DRIVE
NEXT1_INCF	
	 INCF   NUM_PULSEL
	 BTFSS	STATUS,Z
	 GOTO	PWM_DRIVE
	 BSF	SIGNAL,1
	 GOTO	PWM_DRIVE
;******************SINGLE COLOR PERFORM 2****************
SPERFORM2
	    INCF        PULSE_L
            BTFSS       STATUS,Z  ;UP TO 2S
            GOTO        NOT_2S
                          
            INCF        PULSE_H
            MOVLW       0X02
            SUBWF       PULSE_H,W
            BTFSC       STATUS,C
            CLRF        PULSE_H
            BSF         CHANGEENABLE
;
NOT_2S    NOP
;................................
            BCF         STATUS,RP0
            BTFSS       CHANGEENABLE		;
            GOTO        PWM_DRIVE
;--------------------------------------
	MOVF        PULSE_H,W
        BTFSC       STATUS,Z
        GOTO        WHITE_UP
WHITE_DOWN
	MOVF	PWM1,F
	BTFSC	STATUS,Z
	GOTO	WHITECHANGEOVER
	DECF	PWM1
	DECF	PWM2
	DECF	PWM3
	DECF	PWM4
	DECF	PWM5
	DECF	PWM6
	DECF	PWM7
	DECF	PWM8
	DECF	PWM9
	GOTO	PWM_DRIVE
WHITE_UP
	MOVLW	0XFF
	SUBWF	PWM1,W
	BTFSC	STATUS,Z
	GOTO	WHITECHANGEOVER
	INCF	PWM1
	INCF	PWM2
	INCF	PWM3
	INCF	PWM4
	INCF	PWM5
	INCF	PWM6
	INCF	PWM7
	INCF	PWM8
	INCF	PWM9
	GOTO	PWM_DRIVE
WHITECHANGEOVER
	BCF	CHANGEENABLE

	GOTO	PWM_DRIVE

;*****************SINGLE COLOR PERFORM 3*************
SPERFORM3
	    INCF        PULSE_L
	    MOVF	PULSE_L
            BTFSS       STATUS,Z  ;UP TO 2S
            GOTO        PWMSET

           
            INCF        PULSE_H
            MOVLW       0X12
            SUBWF       PULSE_H,W
            BTFSC       STATUS,C
            CLRF        PULSE_H
	    GOTO	PWM_DRIVE
PWMSET
	  
	    MOVF	PULSE_H
	    BTFSC	STATUS,Z
	    INCF	PWM1

	    MOVLW	0X01
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    INCF	PWM2

	    MOVLW	0X02
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    INCF	PWM3
	    
	    MOVLW	0X03
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    INCF	PWM4
	    
	    MOVLW	0X04
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    INCF	PWM5
	    
	    MOVLW	0X05
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    INCF	PWM6
	    
	    MOVLW	0X06
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    INCF	PWM7
	    
	    MOVLW	0X07
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    INCF	PWM8
	    
	    MOVLW	0X08
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    INCF	PWM9
	    
	    MOVLW	0X09
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM9

	    MOVLW	0X0A
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM8

	    MOVLW	0X0B
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM7

	    MOVLW	0X0C
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM6

	    MOVLW	0X0D
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM5

	    MOVLW	0X0E
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM4

	    MOVLW	0X0F
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM3

	    MOVLW	0X10
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM2

	    MOVLW	0X11
	    SUBWF	PULSE_H,W
	    BTFSC	STATUS,Z
	    DECF	PWM1
	    GOTO	PWM_DRIVE
;***********SINGLE COLOR PERFORM 4***********************
SPERFORM4
	    INCF        PULSE_L
	    MOVLW	0X40
	    SUBWF	PULSE_L,W
            BTFSS       STATUS,Z  ;UP TO 1S
            GOTO        PWM_RUN

            CLRF	PULSE_L             
            INCF        PULSE_H
            MOVLW       0X5A
            SUBWF       PULSE_H,W
            BTFSC       STATUS,C
            CLRF        PULSE_H
PWM_RUN
	  
	    MOVF	PULSE_H
	    BTFSS	STATUS,Z
	    GOTO	PWM1_RUN2
	    MOVLW	0XFF
	    MOVWF	PWM9
PWM1_RUN2
	    MOVLW	0X01
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM1_RUN3
	    MOVLW	0XFF
	    MOVWF	PWM8
	    CLRF	PWM9
PWM1_RUN3
	    MOVLW	0X02
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM1_RUN4
	    MOVLW	0XFF
	    MOVWF	PWM7
	    CLRF	PWM8
PWM1_RUN4	    
	    MOVLW	0X03
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM1_RUN5
	    MOVLW	0XFF
	    MOVWF	PWM6
	    CLRF	PWM7
PWM1_RUN5	    
	    MOVLW	0X04
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM1_RUN6
	    MOVLW	0XFF
	    MOVWF	PWM5
	    CLRF	PWM6
PWM1_RUN6	    
	    MOVLW	0X05
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM1_RUN7
	    MOVLW	0XFF
	    MOVWF	PWM4
	    CLRF	PWM5
PWM1_RUN7	    
	    MOVLW	0X06
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM1_RUN8
	    MOVLW	0XFF
	    MOVWF	PWM3
	    CLRF	PWM4
PWM1_RUN8	    
	    MOVLW	0X07
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM1_RUN9
	    MOVLW	0XFF
	    MOVWF	PWM2
	    CLRF	PWM3
PWM1_RUN9	    
	    MOVLW	0X08
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM2_RUN1
	    MOVLW	0XFF
	    MOVWF	PWM1
	    CLRF	PWM2
PWM2_RUN1	    
	    MOVLW	0X09
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM2_RUN2
	    MOVLW	0XFF
	    MOVWF	PWM9
PWM2_RUN2	    
	    MOVLW	0X0A
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM2_RUN3
	    MOVLW	0XFF
	    MOVWF	PWM8
	    CLRF	PWM9
PWM2_RUN3	    
	    MOVLW	0X0B
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM2_RUN4
	    MOVLW	0XFF
	    MOVWF	PWM7
	    CLRF	PWM8
PWM2_RUN4	    
	    MOVLW	0X0C
	    SUBWF	PULSE_H,W
	    BTFSS	STATUS,Z
	    GOTO	PWM2_RUN5
	    MOVLW	0XFF
	    MOVWF	PWM6

⌨️ 快捷键说明

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