📄 cmd3.lst
字号:
00051
00052
00053 txdali DALI_H, DALI_L ; Transmit data on DALI bus
M movff DALI_H, DALI_H
000A 08?? M movf DALI_H, W
000B 00?? M movwf DALI_H
M movff DALI_L, DALI_L
000C 08?? M movf DALI_L, W
000D 00?? M movwf DALI_L
000E 2??? M call SendData
00054
000F 01?? 00055 clrf MILLISECONDS ; Wait at least 10ms
00056 Lp1 cffbis MILLISECONDS, DOUBLE_SEND_DELAY, Lp1
0010 08?? M movf DOUBLE_SEND_DELAY, W
0011 02?? M subwf MILLISECONDS, W
0012 1C03 M btfss STATUS, C
0013 2??? M goto Lp1
00057
00058 txdali DALI_H, DALI_L ; Transmit again
M movff DALI_H, DALI_H
0014 08?? M movf DALI_H, W
0015 00?? M movwf DALI_H
M movff DALI_L, DALI_L
0016 08?? M movf DALI_L, W
0017 00?? M movwf DALI_L
0018 2??? M call SendData
00059
0019 2??? 00060 goto Main
00061
0000 00062 GLOBAL DoubleSend
MPASM 5.20 CMD3.ASM 11-3-2008 15:53:43 PAGE 9
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00063 ; *****************************************************************************
00064
00065
00066 ; *****************************************************************************
001A 00067 SendReceive
00068
001A 1900 00069 btfsc BRIDGE_STATUS, 2 ; Prevent transmission if overload
001B 2??? 00070 goto Main
00071
00072
001C 1080 00073 bcf BRIDGE_STATUS, 1 ; Clear error flag
00074
00075 txdali DALI_H, DALI_L ; Transmit data on DALI bus
M movff DALI_H, DALI_H
001D 08?? M movf DALI_H, W
001E 00?? M movwf DALI_H
M movff DALI_L, DALI_L
001F 08?? M movf DALI_L, W
0020 00?? M movwf DALI_L
0021 2??? M call SendData
00076
00077 rxdali ; Receive data from DALI bus
0022 2??? M call RecvData
00078
0023 00?? 00079 movwf WREG1 ; Check for receive error
0024 08?? 00080 movf WREG1, F
00081 brz Jp1
0025 1903 M skifnz
0026 2??? M goto Jp1
00082
0027 1480 00083 bsf BRIDGE_STATUS, 1 ; Set receive error flag
00084
0028 01?? 00085 clrf WREG1
00086 tx WREG1 ; Transmit 'no recv code'
M movff WREG1, TXREG
0029 08?? M movf WREG1, W
002A 0099 M movwf TXREG
002B 2??? 00087 goto Main
00088
00089 Jp1 movlf 0xFF, WREG1
002C 30FF M movlw 0xFF
002D 00?? M movwf WREG1
00090 tx WREG1 ; Transmit 'recv code'
M movff WREG1, TXREG
002E 08?? M movf WREG1, W
002F 0099 M movwf TXREG
00091
00092 delay 0x3CAF ; Wait for 100ms
M movlf high 0x3CAF, TMR1H
0030 303C M movlw high 0x3CAF
0031 008F M movwf TMR1H
M movlf low 0x3CAF, TMR1L
0032 30AF M movlw low 0x3CAF
MPASM 5.20 CMD3.ASM 11-3-2008 15:53:43 PAGE 10
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0033 008E M movwf TMR1L
0034 2??? M call DelayCyclesT1
00093 delay 0x3CAF
M movlf high 0x3CAF, TMR1H
0035 303C M movlw high 0x3CAF
0036 008F M movwf TMR1H
M movlf low 0x3CAF, TMR1L
0037 30AF M movlw low 0x3CAF
0038 008E M movwf TMR1L
0039 2??? M call DelayCyclesT1
00094
00095 tx DALI_L ; Send via RS232
M movff DALI_L, TXREG
003A 08?? M movf DALI_L, W
003B 0099 M movwf TXREG
003C 2??? 00096 goto Main
00097
0000 00098 GLOBAL SendReceive
00099 ; *****************************************************************************
00100
00101
00102 ; *****************************************************************************
003D 00103 SendSequence
00104
003D 1900 00105 btfsc BRIDGE_STATUS, 2 ; Prevent transmission if overload
003E 2??? 00106 goto Main
00107
00108 txdali DALI_H_BAK1, DALI_L_BAK1 ; Transmit data on DALI bus
M movff DALI_H_BAK1, DALI_H
003F 08?? M movf DALI_H_BAK1, W
0040 00?? M movwf DALI_H
M movff DALI_L_BAK1, DALI_L
0041 08?? M movf DALI_L_BAK1, W
0042 00?? M movwf DALI_L
0043 2??? M call SendData
00109
0044 08?? 00110 movf MILLISECONDS, W ; Wait 10ms
0045 07?? 00111 addwf SEQUENCE_DELAY, W
0046 00?? 00112 movwf WREG1
00113 Lp2 cffbin WREG1, MILLISECONDS, Lp2
0047 08?? M movf MILLISECONDS, W
0048 02?? M subwf WREG1, W
0049 1D03 M btfss STATUS, Z
004A 2??? M goto Lp2
00114
00115 txdali DALI_H_BAK2, DALI_H_BAK2 ; Transmit next word in sequence
M movff DALI_H_BAK2, DALI_H
004B 08?? M movf DALI_H_BAK2, W
004C 00?? M movwf DALI_H
M movff DALI_H_BAK2, DALI_L
004D 08?? M movf DALI_H_BAK2, W
004E 00?? M movwf DALI_L
004F 2??? M call SendData
MPASM 5.20 CMD3.ASM 11-3-2008 15:53:43 PAGE 11
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00116
0050 08?? 00117 movf MILLISECONDS, W ; Wait 10ms
0051 07?? 00118 addwf SEQUENCE_DELAY, W
0052 00?? 00119 movwf WREG1
00120 Lp3 cffbin WREG1, MILLISECONDS, Lp3
0053 08?? M movf MILLISECONDS, W
0054 02?? M subwf WREG1, W
0055 1D03 M btfss STATUS, Z
0056 2??? M goto Lp3
00121
00122 txdali DALI_H_BAK3, DALI_H_BAK3 ; Transmit last word in sequence
M movff DALI_H_BAK3, DALI_H
0057 08?? M movf DALI_H_BAK3, W
0058 00?? M movwf DALI_H
M movff DALI_H_BAK3, DALI_L
0059 08?? M movf DALI_H_BAK3, W
005A 00?? M movwf DALI_L
005B 2??? M call SendData
00123
005C 2??? 00124 goto Main
00125
0000 00126 GLOBAL SendSequence
00127 ; *****************************************************************************
00128
00129 END
MPASM 5.20 CMD3.ASM 11-3-2008 15:53:43 PAGE 12
SYMBOL TABLE
LABEL VALUE
ADEN 00000003
BRGH 00000002
BRIDGE_STATUS 00000000
C 00000000
C1INV 00000004
C1OUT 00000006
C2INV 00000005
C2OUT 00000007
CCP1CON 00000017
CCP1IE 00000002
CCP1IF 00000002
CCP1M0 00000000
CCP1M1 00000001
CCP1M2 00000002
CCP1M3 00000003
CCP1X 00000005
CCP1Y 00000004
CCPR1H 00000016
CCPR1L 00000015
CIS 00000003
CM0 00000000
CM1 00000001
CM2 00000002
CMCON 0000001F
CMIE 00000006
CMIF 00000006
CREN 00000004
CSRC 00000007
DALI_H 00000000
DALI_H_BAK1 00000000
DALI_H_BAK2 00000000
DALI_H_BAK3 00000000
DALI_L 00000000
DALI_L_BAK1 00000000
DALI_L_BAK2 00000000
DALI_L_BAK3 00000000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -