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

📄 rxdali.lst

📁 DALI系统主控制器的软件代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
                      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 + -