📄 rxdali.lst
字号:
00006 txdali macro MYREGH, MYREGL
00007 movff MYREGH, DALI_H
00008 movff MYREGL, DALI_L
00009 call SendData
MPASM 5.20 RXDALI.ASM 11-3-2008 15:53:51 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00010 endm
00011 ; *****************************************************************************
00012
00013
00014 ; *****************************************************************************
00015 rxdali macro
00016 call RecvData
00017 endm
00018 ; *****************************************************************************
00019
00020
00021 ; *****************************************************************************
00022 tx macro MYREG
00023 movff MYREG, TXREG
00024 endm
00025 ; *****************************************************************************
00026
00027
00028 ; *****************************************************************************
00029 delay macro MYLIT
00030 movlf high MYLIT, TMR1H
00031 movlf low MYLIT, TMR1L
00032 call DelayCyclesT1
00033 endm
00034 ; *****************************************************************************
00035
00036
00037 ; *****************************************************************************
00038 delayf macro MYFILE_H, MYFILE_L
00039 movff MYFILE_H, TMR1H
00040 movff MYFILE_L, TMR1L
00041 call DelayCyclesT1
00042 endm
00043 ; *****************************************************************************
00044
00045
00046 ; *** Set DALI Bus High *******************************************************
00047 outhi macro
00048 bcf PORTB, 4 ; Turn off clamp
00049 goto $ + 1
00050 bsf PORTB, 5 ; Turn on output
00051 ; goto $ + 1
00052 ; goto $ + 1
00053 endm
00054 ; *****************************************************************************
00055
00056
00057 ; *** Set DALI Bus Low ********************************************************
00058 outlo macro
00059 bcf PORTB, 5 ; Turn off output driver
00060 goto $ + 1 ; Wait a little for gate discharge
00061 bsf PORTB, 4 ; Turn on clamp
00062 ; goto $ + 1
MPASM 5.20 RXDALI.ASM 11-3-2008 15:53:51 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00063 endm
00064 ; *****************************************************************************
00065
00066
00067 ; *** Emergency Shutdown ******************************************************
00068 esdwn macro WHERE
00069 bcf PORTB, 3 ; Turn off output driver
00070 goto WHERE
00071 endm
00072 ; *****************************************************************************
00073
00074
00075 ; *****************************************************************************
00076 wrtee macro MYREG
00077 banksel EEADR
00078 movwf EEDATA ; Init the first values
00079 movlw TX_EDGE_DELAY_H
00080 sublw MYREG
00081 movwf EEADR
00082 call WriteEEData
00083 endm
00084 ; *****************************************************************************
00085
00086
00006 ; *****************************************************************************
00007
00008
00009 ; *****************************************************************************
0000 00010 EXTERN DALI_H, DALI_L
0000 00011 EXTERN MILLISECONDS
0000 00012 EXTERN WREG1
0000 00013 EXTERN DelayCyclesT1
0000 00014 EXTERN RX_WAIT, RX_START_DELAY_H
0000 00015 EXTERN RX_START_DELAY_L, RX_SAMPLE_DELAY_H, RX_SAMPLE_DELAY_L
0000 00016 EXTERN RX_DELAY_NEXT_H, RX_DELAY_NEXT_L, RX_DEBUG
00017 ; *****************************************************************************
00018
00019
00020 ; *****************************************************************************
00021 RX_DALI CODE
0000 00022 RecvData
00023
0000 01?? 00024 clrf MILLISECONDS
00025
00026 Lp10 cffbig MILLISECONDS, RX_WAIT, ReportErr ; Quit after some ms
0001 08?? M movf MILLISECONDS, W
0002 02?? M subwf RX_WAIT, W
0003 1C03 M btfss STATUS, C
0004 2??? M goto ReportErr
00027
00028 brset CMCON, C1OUT, Lp10 ; Wait for a falling edge
0005 1B1F M btfsc CMCON, C1OUT
0006 2??? M goto Lp10
MPASM 5.20 RXDALI.ASM 11-3-2008 15:53:51 PAGE 8
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00029
0007 138B 00030 bcf INTCON, GIE ; Disable Interrupts
00031
00032 ; delay 0xFED3 ; Delay 300us
00033 delayf RX_START_DELAY_H, RX_START_DELAY_L
M movff RX_START_DELAY_H, TMR1H
0008 08?? M movf RX_START_DELAY_H, W
0009 008F M movwf TMR1H
M movff RX_START_DELAY_L, TMR1L
000A 08?? M movf RX_START_DELAY_L, W
000B 008E M movwf TMR1L
000C 2??? M call DelayCyclesT1
00034
000D 2??? 00035 call RecvBit ; Get start bit
000E 1B80 00036 btfsc WREG1, 7
000F 2??? 00037 goto ReportErr
00038
00039
0010 2??? 00040 call RecvBit ; Get bit 7
0011 1B80 00041 btfsc WREG1, 7
0012 2??? 00042 goto ReportErr
0013 1900 00043 btfsc WREG1, 2
0014 1780 00044 bsf DALI_L, 7
0015 1D00 00045 btfss WREG1, 2
0016 1380 00046 bcf DALI_L, 7
00047
00048
0017 2??? 00049 call RecvBit ; Get bit 6
0018 1B80 00050 btfsc WREG1, 7
0019 2??? 00051 goto ReportErr
001A 1900 00052 btfsc WREG1, 2
001B 1700 00053 bsf DALI_L, 6
001C 1D00 00054 btfss WREG1, 2
001D 1300 00055 bcf DALI_L, 6
00056
00057
001E 2??? 00058 call RecvBit ; Get bit 5
001F 1B80 00059 btfsc WREG1, 7
0020 2??? 00060 goto ReportErr
0021 1900 00061 btfsc WREG1, 2
0022 1680 00062 bsf DALI_L, 5
0023 1D00 00063 btfss WREG1, 2
0024 1280 00064 bcf DALI_L, 5
00065
00066
0025 2??? 00067 call RecvBit ; Get bit 4
0026 1B80 00068 btfsc WREG1, 7
0027 2??? 00069 goto ReportErr
0028 1900 00070 btfsc WREG1, 2
0029 1600 00071 bsf DALI_L, 4
002A 1D00 00072 btfss WREG1, 2
002B 1200 00073 bcf DALI_L, 4
00074
MPASM 5.20 RXDALI.ASM 11-3-2008 15:53:51 PAGE 9
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00075
002C 2??? 00076 call RecvBit ; Get bit 3
002D 1B80 00077 btfsc WREG1, 7
002E 2??? 00078 goto ReportErr
002F 1900 00079 btfsc WREG1, 2
0030 1580 00080 bsf DALI_L, 3
0031 1D00 00081 btfss WREG1, 2
0032 1180 00082 bcf DALI_L, 3
00083
00084
0033 2??? 00085 call RecvBit ; Get bit 2
0034 1B80 00086 btfsc WREG1, 7
0035 2??? 00087 goto ReportErr
0036 1900 00088 btfsc WREG1, 2
0037 1500 00089 bsf DALI_L, 2
0038 1D00 00090 btfss WREG1, 2
0039 1100 00091 bcf DALI_L, 2
00092
00093
003A 2??? 00094 call RecvBit ; Get bit 1
003B 1B80 00095 btfsc WREG1, 7
003C 2??? 00096 goto ReportErr
003D 1900 00097 btfsc WREG1, 2
003E 1480 00098 bsf DALI_L, 1
003F 1D00 00099 btfss WREG1, 2
0040 1080 00100 bcf DALI_L, 1
00101
00102
0041 2??? 00103 call RecvBit ; Get bit 0
0042 1B80 00104 btfsc WREG1, 7
0043 2??? 00105 goto ReportErr
0044 1900 00106 btfsc WREG1, 2
0045 1400 00107 bsf DALI_L, 0
0046 1D00 00108 btfss WREG1, 2
0047 1000 00109 bcf DALI_L, 0
00110
0048 178B 00111 bsf INTCON, GIE ; Enable Interrupts
0049 3400 00112 retlw 0x00
00113
004A 00114 ReportErr
004A 01?? 00115 clrf DALI_L
004B 178B 00116 bsf INTCON, GIE ; Enable Interrupts
004C 34FE 00117 retlw 0xFE
00118
0000 00119 GLOBAL RecvData
00120 ; *****************************************************************************
00121
00122
00123 ; *****************************************************************************
004D 00124 RecvBit
00125 movlf 0x01, TMR0 ; Setup timer for 200us overflow
004D 3001 M movlw 0x01
004E 0081 M movwf TMR0
MPASM 5.20 RXDALI.ASM 11-3-2008 15:53:51 PAGE 10
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
004F 110B 00126 bcf INTCON, T0IF
00127
00128 brclr CMCON, C1OUT, LookForHi ; High or Low next
0050 1F1F M btfss CMCON, C1OUT
0051 2??? M goto LookForHi
00129
0052 00130 LookForLo
00131 brclr CMCON, C1OUT, FinRecv ; If low then finish receive
0052 1F1F M btfss CMCON, C1OUT
0053 2??? M goto FinRecv
00132
00133 brclr INTCON, T0IF, LookForLo ; Too much time
0054 1D0B M btfss INTCON, T0IF
0055 2??? M goto LookForLo
0056 2??? 00134 goto RecvError ; Exit with error
00135
0057 00136 LookForHi
00137 brset CMCON, C1OUT, FinRecv ; If high then finish receive
0057 1B1F M btfsc CMCON, C1OUT
0058 2??? M goto FinRecv
00138
00139 brclr INTCON, T0IF, LookForHi ; Too much time
0059 1D0B M btfss INTCON, T0IF
005A 2??? M goto LookForHi
005B 2??? 00140 goto RecvError ; Exit with error
00141
005C 00142 FinRecv
00143 ; btfsc RX_DEBUG, 0
005C 1786 00144 bsf PORTB, 7
00145
00146 delayf RX_SAMPLE_DELAY_H, RX_SAMPLE_DELAY_L
M movff RX_SAMPLE_DELAY_H, TMR1H
005D 08?? M movf RX_SAMPLE_DELAY_H, W
005E 008F M movwf TMR1H
M movff RX_SAMPLE_DELAY_L, TMR1L
005F 08?? M movf RX_SAMPLE_DELAY_L, W
0060 008E M movwf TMR1L
0061 2??? M call DelayCyclesT1
00147 ; delay 0xFFB0 ; Delay 100us
00148
00149 ; btfsc RX_DEBUG, 0
0062 1386 00150 bcf PORTB, 7
00151
0063 01?? 00152 clrf WREG1
0064 1B1F 00153 btfsc CMCON, C1OUT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -