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

📄 rs485.lst

📁 基于pic16分46 的rs485通讯协议
💻 LST
📖 第 1 页 / 共 5 页
字号:


HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-48944                            Sun Oct  7 13:19:31 2007

Licensed to: ONE
     1                           	processor	16F946
     2                           	opt	pw 79
     3                           	psect	__Z48944RS_,global,delta=1
     4                           	psect	text0,local,class=CODE,delta=2
     5                           	psect	text4,local,class=CODE,delta=2
     6                           	psect	strings,global,class=STRING,delta=2
     7                           	psect	const1,local,class=CONST,delta=2
     8                           	psect	const2,local,class=CONST,delta=2
     9                           	psect	text8,local,class=CODE,delta=2
    10                           	psect	text10,local,class=CODE,delta=2
    11                           	psect	text11,local,class=CODE,delta=2
    12                           	psect	text12,local,class=CODE,delta=2
    13                           	psect	text13,local,class=CODE,delta=2
    14                           	psect	rbss_0,global,class=BANK0,space=1,delta=
      +                          1
    15                           	psect	rbss_1,global,class=BANK1,space=1,delta=
      +                          1
    16                           	psect	temp,global,ovrld,class=BANK0,space=1,de
      +                          lta=1
    17  0000                     
    18  0000                     
    19  0000                     
    20  0000                     
    21  0000                     
    22  0000                     
    23  0000                     
    24  0000                     
    25  0000                     
    26  0000                     
    27                           
    28                           	psect	__Z48944RS_
    29  01A0                     
    30  01A0                     
    31                           
    32                           	psect	text0
    33  048D                     _Rs485Initialize
    34                           ;	_cAddr assigned to ?a_Rs485Initialize+0
    35  0000                     _Rs485Initialize$cAddr	set	?a_Rs485Initialize
    36                           ;_cAddr stored from w
    37  048D  0183               	clrf	3	;select bank 0
    38  048E  00C7               	movwf	?a_Rs485Initialize
    39                           ;rs485.c: 49: cOurAddr = cAddr;
    40  048F  00A6               	movwf	_cOurAddr
    41                           ;rs485.c: 50: cRS485State = 0;
    42  0490  01A7               	clrf	_cRS485State
    43                           ;rs485.c: 51: RD4 = 0;
    44  0491  1208               	bcf	8,4
    45                           ;rs485.c: 52: RCIE = 1;
    46  0492  1683               	bsf	3,5
    47  0493  168C               	bsf	12,5
    48                           ;rs485.c: 54: }
    49  0494  1283               	bcf	3,5
    50  0495  0008               	return
    51                           
    52                           	psect	text4
    53  0501                     _Rs485GetPacket
    54                           ;	_cCom assigned to ?a_Rs485GetPacket+0
    55  0000                     _Rs485GetPacket$cCom	set	?a_Rs485GetPacket
    56                           ;	_c assigned to ?a_Rs485GetPacket+1
    57  0000                     _Rs485GetPacket$c	set	?a_Rs485GetPacket+1
    58                           ;_cCom stored from w
    59  0501  0183               	clrf	3	;select bank 0
    60  0502  00C9               	movwf	?a_Rs485GetPacket
    61                           ;rs485.c: 249: unsigned char c;
    62  0503  0084               	movwf	4
    63  0504  1383               	bcf	3,7
    64  0505  0823               	movf	_cCommand,w
    65  0506  0080               	movwf	0
    66                           ;rs485.c: 252: *cLen = cLenExpected;
    67  0507  0847               	movf	?_Rs485GetPacket,w
    68  0508  0084               	movwf	4
    69  0509  0824               	movf	_cLenExpected,w
    70  050A  0080               	movwf	0
    71                           ;rs485.c: 253: for ( c=0; c < cLenExpected;c++ 
      +                          ) cData[c] = c485Buf[c];
    72  050B  01CA               	clrf	?a_Rs485GetPacket+1
    73  050C  2D19               	goto	l53
    74  050D                     l50
    75  050D  084A               	movf	?a_Rs485GetPacket+1,w
    76  050E  3EA0               	addlw	_c485Buf
    77  050F  0084               	movwf	4
    78  0510  1383               	bcf	3,7
    79  0511  0800               	movf	0,w
    80  0512  00F0               	movwf	btemp
    81  0513  084A               	movf	?a_Rs485GetPacket+1,w
    82  0514  0748               	addwf	?_Rs485GetPacket+1,w
    83  0515  0084               	movwf	4
    84  0516  0870               	movf	btemp,w
    85  0517  0080               	movwf	0
    86  0518  0ACA               	incf	?a_Rs485GetPacket+1
    87  0519                     l53
    88  0519  0824               	movf	_cLenExpected,w
    89  051A  024A               	subwf	?a_Rs485GetPacket+1,w
    90  051B  1C03               	btfss	3,0
    91  051C  2D0D               	goto	l50
    92                           ;rs485.c: 255: cData[cLenExpected] = 0x00;
    93  051D  0824               	movf	_cLenExpected,w
    94  051E  0748               	addwf	?_Rs485GetPacket+1,w
    95  051F  0084               	movwf	4
    96  0520  1383               	bcf	3,7
    97  0521  0180               	clrf	0
    98                           ;rs485.c: 256: }
    99  0522  0008               	return
   100                           
   101                           	psect	const1
   102                           ;rs485.c: 267: const unsigned char CRC16_Lookup
      +                          High[16] = {
   103                           ;rs485.c: 268: 0x00, 0x10, 0x20, 0x30, 0x40, 0x
      +                          50, 0x60, 0x70,
   104                           ;rs485.c: 269: 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0x
      +                          D1, 0xE1, 0xF1
   105                           ;rs485.c: 270: };
   106  0077  0782               	addwf	2
   107  0078                     _CRC16_LookupHigh
   108  0078  3400               	retlw	0
   109  0079  3410               	retlw	16
   110  007A  3420               	retlw	32
   111  007B  3430               	retlw	48
   112  007C  3440               	retlw	64
   113  007D  3450               	retlw	80
   114  007E  3460               	retlw	96
   115  007F  3470               	retlw	112
   116  0080  3481               	retlw	-127
   117  0081  3491               	retlw	-111
   118  0082  34A1               	retlw	-95
   119  0083  34B1               	retlw	-79
   120  0084  34C1               	retlw	-63
   121  0085  34D1               	retlw	-47
   122  0086  34E1               	retlw	-31
   123  0087  34F1               	retlw	-15
   124                           
   125                           	psect	const2
   126                           ;rs485.c: 271: const unsigned char CRC16_Lookup
      +                          Low[16] = {
   127                           ;rs485.c: 272: 0x00, 0x21, 0x42, 0x63, 0x84, 0x
      +                          A5, 0xC6, 0xE7,
   128                           ;rs485.c: 273: 0x08, 0x29, 0x4A, 0x6B, 0x8C, 0x
      +                          AD, 0xCE, 0xEF
   129                           ;rs485.c: 274: };
   130  0066  0782               	addwf	2
   131  0067                     _CRC16_LookupLow
   132  0067  3400               	retlw	0
   133  0068  3421               	retlw	33
   134  0069  3442               	retlw	66
   135  006A  3463               	retlw	99
   136  006B  3484               	retlw	-124
   137  006C  34A5               	retlw	-91
   138  006D  34C6               	retlw	-58
   139  006E  34E7               	retlw	-25
   140  006F  3408               	retlw	8
   141  0070  3429               	retlw	41
   142  0071  344A               	retlw	74
   143  0072  346B               	retlw	107
   144  0073  348C               	retlw	-116
   145  0074  34AD               	retlw	-83
   146  0075  34CE               	retlw	-50
   147  0076  34EF               	retlw	-17
   148                           
   149                           	psect	text8
   150                           ;rs485.c: 324: void Rs485SendChar(unsigned char
      +                           c )
   151                           ;rs485.c: 325: {
   152  0652                     _Rs485SendChar
   153                           ;	_c assigned to ?a_Rs485SendChar+0
   154  0000                     _Rs485SendChar$c	set	?a_Rs485SendChar
   155                           ;_c stored from w
   156  0652  0183               	clrf	3	;select bank 0
   157  0653  00CC               	movwf	?a_Rs485SendChar
   158                           ;rs485.c: 326: TXREG = c;
   159  0654  084C               	movf	?a_Rs485SendChar,w
   160  0655  0099               	movwf	25	;volatile
   161                           ;rs485.c: 327: while ( !TRMT );
   162  0656                     l58
   163  0656  1683               	bsf	3,5
   164  0657  1C98               	btfss	24,1
   165  0658  2E56               	goto	l58
   166                           ;rs485.c: 328: }
   167  0659  1283               	bcf	3,5
   168  065A  0008               	return
   169  065B                     _Rs485SendPacket
   170                           ;	_cCmd assigned to ?a_Rs485SendPacket+0
   171  0000                     _Rs485SendPacket$cCmd	set	?a_Rs485SendPacket
   172                           ;	_d assigned to ?a_Rs485SendPacket+1
   173  0000                     _Rs485SendPacket$d	set	?a_Rs485SendPacket+1
   174                           ;	_c assigned to ?a_Rs485SendPacket+2
   175  0000                     _Rs485SendPacket$c	set	?a_Rs485SendPacket+2
   176                           ;_cCmd stored from w
   177  065B  0183               	clrf	3	;select bank 0
   178  065C  00C9               	movwf	?a_Rs485SendPacket
   179                           ;rs485.c: 192: unsigned char c, d;
   180  065D  1683               	bsf	3,5
   181  065E  128C               	bcf	12,5
   182                           ;rs485.c: 195: RD4 = 1;
   183  065F  1283               	bcf	3,5
   184  0660  1608               	bsf	8,4
   185                           ;rs485.c: 197: DelayMs(1);
   186  0661  3001               	movlw	1
   187  0662  120A  118A  24A9   	fcall	_DelayMs
      +       120A  118A         
   188                           ;rs485.c: 199: cCalcCrcHigh = 0xff;
   189  0667  30FF               	movlw	-1
   190  0668  00A1               	movwf	_cCalcCrcHigh
   191                           ;rs485.c: 200: cCalcCrcLow = 0xff;
   192  0669  00A2               	movwf	_cCalcCrcLow
   193                           ;rs485.c: 202: for ( c=0; c < 2; c++ ) Rs485Sen
      +                          dChar( 0xaa );
   194  066A  01CB               	clrf	?a_Rs485SendPacket+2
   195  066B                     l34
   196  066B  30AA               	movlw	-86
   197  066C  2652               	fcall	_Rs485SendChar
   198  066D  0ACB               	incf	?a_Rs485SendPacket+2
   199  066E  3002               	movlw	2
   200  066F  024B               	subwf	?a_Rs485SendPacket+2,w
   201  0670  1C03               	btfss	3,0
   202  0671  2E6B               	goto	l34
   203                           ;rs485.c: 204: Rs485UpdateCrc( 0x02 );
   204  0672  3002               	movlw	2
   205  0673  120A  118A  2752   	fcall	_Rs485UpdateCrc
      +       120A  118A         
   206                           ;rs485.c: 205: Rs485SendChar( 0x02 );
   207  0678  3002               	movlw	2
   208  0679  2652               	fcall	_Rs485SendChar
   209                           ;rs485.c: 206: Rs485UpdateCrc( cOurAddr );
   210  067A  0826               	movf	_cOurAddr,w
   211  067B  120A  118A  2752   	fcall	_Rs485UpdateCrc
      +       120A  118A         
   212                           ;rs485.c: 207: Rs485SendChar( cOurAddr );
   213  0680  0826               	movf	_cOurAddr,w
   214  0681  2652               	fcall	_Rs485SendChar
   215                           ;rs485.c: 208: Rs485UpdateCrc( cLen );
   216  0682  0847               	movf	?_Rs485SendPacket,w
   217  0683  120A  118A  2752   	fcall	_Rs485UpdateCrc
      +       120A  118A         
   218                           ;rs485.c: 209: Rs485SendChar( cLen );
   219  0688  0847               	movf	?_Rs485SendPacket,w
   220  0689  2652               	fcall	_Rs485SendChar
   221                           ;rs485.c: 210: Rs485UpdateCrc( cCmd );
   222  068A  0849               	movf	?a_Rs485SendPacket,w
   223  068B  120A  118A  2752   	fcall	_Rs485UpdateCrc
      +       120A  118A         
   224                           ;rs485.c: 211: Rs485SendChar( cCmd );
   225  0690  0849               	movf	?a_Rs485SendPacket,w
   226  0691  2652               	fcall	_Rs485SendChar
   227                           ;rs485.c: 214: if ( cLen != 0 )
   228  0692  08C7               	movf	?_Rs485SendPacket
   229  0693  1903               	btfsc	3,2
   230  0694  2EB5               	goto	l37
   231                           ;rs485.c: 215: {
   232  0695  01CB               	clrf	?a_Rs485SendPacket+2
   233  0696                     l41
   234  0696  0847               	movf	?_Rs485SendPacket,w
   235  0697  024B               	subwf	?a_Rs485SendPacket+2,w
   236  0698  1803               	btfsc	3,0
   237  0699  2EA7               	goto	l39
   238                           ;rs485.c: 217: {
   239                           ;rs485.c: 218: d = cData[c];
   240  069A  084B               	movf	?a_Rs485SendPacket+2,w
   241  069B  0748               	addwf	?_Rs485SendPacket+1,w
   242  069C  0084               	movwf	4
   243  069D  1383               	bcf	3,7
   244  069E  0800               	movf	0,w
   245  069F  00CA               	movwf	?a_Rs485SendPacket+1
   246                           ;rs485.c: 219: Rs485UpdateCrc( d );
   247  06A0  120A  118A  2752   	fcall	_Rs485UpdateCrc
      +       120A  118A         
   248                           ;rs485.c: 220: }
   249  06A5  0ACB               	incf	?a_Rs485SendPacket+2
   250  06A6  2E96               	goto	l41
   251  06A7                     l39
   252                           ;rs485.c: 221: for ( c = 0; c < cLen; c++ )
   253  06A7  01CB               	clrf	?a_Rs485SendPacket+2
   254  06A8                     l45
   255  06A8  0847               	movf	?_Rs485SendPacket,w
   256  06A9  024B               	subwf	?a_Rs485SendPacket+2,w
   257  06AA  1803               	btfsc	3,0
   258  06AB  2EB5               	goto	l37
   259                           ;rs485.c: 222: {
   260                           ;rs485.c: 223: d = cData[c];
   261  06AC  084B               	movf	?a_Rs485SendPacket+2,w
   262  06AD  0748               	addwf	?_Rs485SendPacket+1,w
   263  06AE  0084               	movwf	4
   264  06AF  1383               	bcf	3,7
   265  06B0  0800               	movf	0,w
   266  06B1  00CA               	movwf	?a_Rs485SendPacket+1
   267                           ;rs485.c: 224: Rs485SendChar( d );
   268  06B2  2652               	fcall	_Rs485SendChar

⌨️ 快捷键说明

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