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

📄 rc485.lst

📁 采用16F877实现的485接送通讯。内含CRC校验
💻 LST
📖 第 1 页 / 共 3 页
字号:
MPASM 03.20.02 Released         RC485.ASM   12-31-2006  14:07:17         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 #INCLUDE P16F877.INC
                      00001         LIST
                      00002 ; P16F877.INC  Standard Header File, Version 1.00    Microchip Technology, Inc.
                      00373         LIST
                      00002                 CBLOCK  20H
  00000020            00003 R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,CRC_HI,CRC_LW,RC_COUNTER,BLO,BHI,T1,T2,BUF        
                      00004         ENDC
                      00005         CBLOCK  70H
  00000070            00006 W_TEMP,STATUS_TEMP,PCLATH_TEMP
                      00007         ENDC
                      00008 #DEFINE LED1    PORTC,2
                      00009 #DEFINE LED2    PORTC,3
                      00010 #DEFINE LED3    PORTC,4
                      00011 #DEFINE LED4    PORTC,5
                      00012         
0000                  00013         ORG     0000H
0000   0000           00014         NOP
0001   2805           00015         GOTO    MAIN
0004                  00016         ORG     0004H
0004   2811           00017         GOTO    INT_SER
0005                  00018 MAIN
0005   30C0           00019         MOVLW   B'11000000'
0006   008B           00020         MOVWF   INTCON
0007   1683           00021         BSF     STATUS,RP0
0008   3020           00022         MOVLW   B'00100000'
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0009   008C           00023         MOVWF   PIE1
000A   1283           00024         BCF     STATUS,RP0
000B   2075           00025         CALL    USART_CSH
000C   3050           00026         MOVLW   50H
000D   0084           00027         MOVWF   FSR
000E   3000           00028         MOVLW   00H
000F   00AE           00029         MOVWF   RC_COUNTER
0010   2810           00030         GOTO    $
                      00031 ;------------------------------------------------------------------
                      00032 ;中断服务子程序
                      00033 ;------------------------------------------------------------------
0011                  00034 INT_SER
0011   00F0           00035         MOVWF   W_TEMP
0012   0E03           00036         SWAPF   STATUS,W
0013   00F1           00037         MOVWF   STATUS_TEMP
0014   080A           00038         MOVF    PCLATH,W
0015   00F2           00039         MOVWF   PCLATH_TEMP
                      00040         
0016   018C           00041         CLRF    PIR1
                      00042         
0017   081A           00043         MOVF    RCREG,W
0018   0080           00044         MOVWF   INDF
0019   0804           00045         MOVF    FSR,W
001A   00AB           00046         MOVWF   R11
001B   2095           00047         CALL    DISP
001C   082B           00048         MOVF    R11,W
001D   0084           00049         MOVWF   FSR
MPASM 03.20.02 Released         RC485.ASM   12-31-2006  14:07:17         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

Message[305]: Using default destination of 1 (file).
001E   0A84           00050         INCF    FSR
Message[305]: Using default destination of 1 (file).
001F   0AAE           00051         INCF    RC_COUNTER
0020   3005           00052         MOVLW   .5      
0021   022E           00053         SUBWF   RC_COUNTER,W    ;判断是否收到5个数据
0022   1D03           00054         BTFSS   STATUS,Z        
0023   286E           00055         GOTO    RET             ;没收到5个,跳出中断继续等待
                      00056 ;-----------------------------------------------------------    
                      00057 ;收到5个数据后,进行CRC校验
                      00058 ;-----------------------------------------------------------    
0024                  00059 RECE1   
0024   2082           00060         CALL    CRC_CSH         ;前3个数据进行CRC校验
0025   0850           00061         MOVF    50H,W
0026   2086           00062         CALL    CRC_SUB
0027                  00063 RECE2   
0027   0851           00064         MOVF    51H,W
0028   2086           00065         CALL    CRC_SUB
0029                  00066 RECE3   
0029   0852           00067         MOVF    52H,W
002A   2086           00068         CALL    CRC_SUB
                      00069 
002B                  00070 RECE4   
002B   0853           00071         MOVF    53H,W           ;收到的CRC_LW放在55H,和上面计
002C   022D           00072         SUBWF   CRC_LW,W        ;算出的CRC_LW进行比较是否相同
002D   1D03           00073         BTFSS   STATUS,Z
002E   286B           00074         GOTO    ERR             ;CRC校验不正确
002F                  00075 RECE5   
002F   0854           00076         MOVF    54H,W           ;CRC_LW校验正确,继续比较CRC_HI
0030   022C           00077         SUBWF   CRC_HI,W
0031   1D03           00078         BTFSS   STATUS,Z
0032   286B           00079         GOTO    ERR             ;CRC校验不正确
0033                  00080 CORR                            ;收到的数据CRC校验正确
0033   1486           00081         BSF     PORTB,1         ; 
0034   1683 1303      00082         BANKSEL TRISC           ;输出PWM,蜂鸣器响
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0036   1087           00083         BCF     TRISC,1
0037   30C7           00084         MOVLW   .199
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0038   0092           00085         MOVWF   PR2
0039   1283 1303      00086         BANKSEL PORTC
003B   303C           00087         MOVLW   3CH
003C   009B           00088         MOVWF   CCPR2L
003D   300C           00089         MOVLW   B'00001100'
003E   009D           00090         MOVWF   CCP2CON
003F   3004           00091         MOVLW   B'00000100'
0040   0092           00092         MOVWF   T2CON
0041   20F4           00093         CALL    DELAY_1S
0042   0192           00094         CLRF    T2CON           ;延时一秒后关闭PWM
0043                  00095 SEND                            ;并回送报文
                      00096         
0043   3005           00097         MOVLW   05H
0044   0099           00098         MOVWF   TXREG
MPASM 03.20.02 Released         RC485.ASM   12-31-2006  14:07:17         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0045   2095           00099         CALL    DISP
0046   3005           00100         MOVLW   05H     
0047   2086           00101         CALL    CRC_SUB
0048   20EA           00102         CALL    DELAY_5MS
                      00103 
0049   3004           00104         MOVLW   04H
004A   0099           00105         MOVWF   TXREG
004B   2095           00106         CALL    DISP
004C   3004           00107         MOVLW   04H     
004D   2086           00108         CALL    CRC_SUB
004E   20EA           00109         CALL    DELAY_5MS
                      00110 
004F   3033           00111         MOVLW   .51
0050   0099           00112         MOVWF   TXREG
0051   2095           00113         CALL    DISP
0052   3033           00114         MOVLW   .51
0053   2086           00115         CALL    CRC_SUB
0054   20EA           00116         CALL    DELAY_5MS
                      00117         
0055   3034           00118         MOVLW   .52
0056   0099           00119         MOVWF   TXREG
0057   2095           00120         CALL    DISP
0058   3034           00121         MOVLW   .52
0059   2086           00122         CALL    CRC_SUB
005A   20EA           00123         CALL    DELAY_5MS
                      00124         
005B   3035           00125         MOVLW   .53
005C   0099           00126         MOVWF   TXREG
005D   2095           00127         CALL    DISP
005E   3035           00128         MOVLW   .53
005F   2086           00129         CALL    CRC_SUB
0060   20EA           00130         CALL    DELAY_5MS
                      00131         
                      00132         
0061   082D           00133         MOVF    CRC_LW,W
0062   0099           00134         MOVWF   TXREG
0063   2095           00135         CALL    DISP
0064   082D           00136         MOVF    CRC_LW,W
0065   20EA           00137         CALL    DELAY_5MS
                      00138 
0066   082C           00139         MOVF    CRC_HI,W
0067   0099           00140         MOVWF   TXREG
0068   2095           00141         CALL    DISP
0069   082C           00142         MOVF    CRC_HI,W
006A   20EA           00143         CALL    DELAY_5MS
                      00144         
                      00145         
006B                  00146 ERR     
                      00147                 
006B   01AE           00148         CLRF    RC_COUNTER
006C   3050           00149         MOVLW   50H
006D   0084           00150         MOVWF   FSR
                      00151         
MPASM 03.20.02 Released         RC485.ASM   12-31-2006  14:07:17         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00152         
006E                  00153 RET     
006E   0872           00154         MOVF    PCLATH_TEMP,W
006F   008A           00155         MOVWF   PCLATH
0070   0E71           00156         SWAPF   STATUS_TEMP,W
0071   0083           00157         MOVWF   STATUS
0072   0EF0           00158         SWAPF   W_TEMP,F
0073   0E70           00159         SWAPF   W_TEMP,W
0074   0009           00160         RETFIE
                      00161 
                      00162 
                      00163 
                      00164 ;-----------------------------------------------------------    
                      00165 ;异步通信初始化程序
                      00166 ;-----------------------------------------------------------
0075                  00167 USART_CSH
0075   1683           00168         BSF     STATUS,RP0
0076   3080           00169         MOVLW   B'10000000'
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0077   0087           00170         MOVWF   TRISC
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0078   0186           00171         CLRF    TRISB
0079   3033           00172         MOVLW   .51
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
007A   0099           00173         MOVWF   SPBRG
007B   3024           00174         MOVLW   B'00100100'
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
007C   0098           00175         MOVWF   TXSTA
                      00176         ;CLRF   PIE1
007D   0186           00177         CLRF    PORTB
007E   1283           00178         BCF     STATUS,RP0
007F   3090           00179         MOVLW   B'10010000'
0080   0098           00180         MOVWF   RCSTA
                      00181         
0081   0008           00182         RETURN
                      00183 ;-----------------------------------------------------------    
                      00184 ;CRC初始化
                      00185 ;-----------------------------------------------------------
                      00186 
0082                  00187 CRC_CSH
0082   30FF           00188         MOVLW   0FFH
0083   00AD           00189         MOVWF   CRC_LW
0084   00AC           00190         MOVWF   CRC_HI
0085   0008           00191         RETURN
                      00192 ;-----------------------------------------------------------    
                      00193 ;CRC运算
                      00194 ;-----------------------------------------------------------
                      00195 
0086                  00196 CRC_SUB
0086   06AD           00197         XORWF   CRC_LW,F
0087   3008           00198         MOVLW   .8
0088   00A0           00199         MOVWF   R0
0089                  00200 L3
MPASM 03.20.02 Released         RC485.ASM   12-31-2006  14:07:17         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0089   1003           00201         BCF     STATUS,C
008A   0CAC           00202         RRF     CRC_HI,F
008B   0CAD           00203         RRF     CRC_LW,F
008C   1C03           00204         BTFSS   STATUS,C
008D   2892           00205         GOTO    L5
008E   30A0           00206         MOVLW   0A0H
008F   06AC           00207         XORWF   CRC_HI,F
0090   3001           00208         MOVLW   01H
0091   06AD           00209         XORWF   CRC_LW,F
0092                  00210 L5
0092   0BA0           00211         DECFSZ  R0,F
0093   2889           00212         GOTO    L3      
0094   0008           00213         RETURN
                      00214 
                      00215 ;-----------------------------------------------------------    
                      00216 ;显示程序
                      00217 ;-----------------------------------------------------------
0095                  00218 DISP
0095   00AF           00219         MOVWF   BLO
0096   01B0           00220         CLRF    BHI
0097   20B7           00221         CALL    B2BCD
                      00222         ;BANKSEL        TRISC

⌨️ 快捷键说明

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