📄 rc485.lst
字号:
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 + -