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