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

📄 uart.lst

📁 Microchip 公司16F648 芯片实现RS485通讯,符合Modbus通讯协议,可用PICC环境编译.文件完整,可供参考.
💻 LST
📖 第 1 页 / 共 3 页
字号:
   255  000F' 0183               	clrf	3	;select bank 0
   256  0010' 0080'              	movwf	?a_CRC16
   257                           ;uart.c: 221: MyByte CRC16Lo,CRC16Hi;
   258  0011' 30FF               	movlw	-1
   259  0012' 0086'              	movwf	?a_CRC16+6
   260                           ;uart.c: 227: CRC16Hi = 0xff;
   261  0013' 0085'              	movwf	?a_CRC16+5
   262                           ;uart.c: 228: CL = 0x01;
   263  0014' 0182'              	clrf	?a_CRC16+2
   264  0015' 0A82'              	incf	?a_CRC16+2
   265                           ;uart.c: 229: CH = 0xa0;
   266  0016' 30A0               	movlw	-96
   267  0017' 0081'              	movwf	?a_CRC16+1
   268                           ;uart.c: 230: for(i=0; i<iLength; i++)
   269  0018' 0189'              	clrf	?a_CRC16+9
   270  0019' 018A'              	clrf	?a_CRC16+10
   271  001A' 2800'              	goto	l42
   272                           ;uart.c: 231: {
   273                           ;uart.c: 232: CRC16Lo = CRC16Lo ^ data[i];
   274  001B'                    L6
   275  001B' 0800'              	movf	?a_CRC16,w
   276  001C' 0709'              	addwf	?a_CRC16+9,w
   277  001D' 0084               	movwf	4
   278  001E' 1383               	bcf	3,7
   279  001F' 0800               	movf	0,w
   280  0020' 0686'              	xorwf	?a_CRC16+6
   281                           ;uart.c: 233: for( Flag=0; Flag<=7; Flag++)
   282  0021' 0187'              	clrf	?a_CRC16+7
   283  0022' 0188'              	clrf	?a_CRC16+8
   284  0023'                    l43
   285                           ;uart.c: 234: {
   286                           ;uart.c: 235: SaveHi = CRC16Hi;
   287  0023' 0805'              	movf	?a_CRC16+5,w
   288  0024' 0083'              	movwf	?a_CRC16+3
   289                           ;uart.c: 236: SaveLo = CRC16Lo;
   290  0025' 0806'              	movf	?a_CRC16+6,w
   291  0026' 0084'              	movwf	?a_CRC16+4
   292                           ;uart.c: 237: CRC16Hi = CRC16Hi>>1;
   293  0027' 1003               	bcf	3,0
   294  0028' 0C85'              	rrf	?a_CRC16+5
   295                           ;uart.c: 238: CRC16Lo = CRC16Lo>>1;
   296  0029' 1003               	bcf	3,0
   297  002A' 0C86'              	rrf	?a_CRC16+6
   298                           ;uart.c: 240: if((SaveHi&0x01) == 0x01)
   299  002B' 1803'              	btfsc	?a_CRC16+3,0
   300                           ;uart.c: 241: CRC16Lo = CRC16Lo|0x80;
   301  002C' 1786'              	bsf	?a_CRC16+6,7
   302                           ;uart.c: 243: if((SaveLo&0x01) == 0x01)
   303  002D' 1C04'              	btfss	?a_CRC16+4,0
   304  002E' 2800'              	goto	l47
   305                           ;uart.c: 244: {
   306  002F' 0801'              	movf	?a_CRC16+1,w
   307  0030' 0685'              	xorwf	?a_CRC16+5
   308                           ;uart.c: 246: CRC16Lo = CRC16Lo ^ CL;
   309  0031' 0802'              	movf	?a_CRC16+2,w
   310  0032' 0686'              	xorwf	?a_CRC16+6
   311  0033'                    l47
   312                           ;uart.c: 247: }
   313  0033' 0A87'              	incf	?a_CRC16+7
   314  0034' 1903               	btfsc	3,2
   315  0035' 0A88'              	incf	?a_CRC16+8
   316  0036' 0808'              	movf	?a_CRC16+8,w
   317  0037' 3A80               	xorlw	128
   318  0038' 0080'              	movwf	btemp
   319  0039' 3080               	movlw	128
   320  003A' 0200'              	subwf	btemp,w
   321  003B' 3008               	movlw	8
   322                           ;set	bank bits for (((?a_CRC16+7)))
   323  003C' 1903               	btfsc	3,2
   324  003D' 0207'              	subwf	?a_CRC16+7,w
   325  003E' 1C03               	btfss	3,0
   326  003F' 2800'              	goto	l43
   327                           ;uart.c: 249: }
   328  0040' 0A89'              	incf	?a_CRC16+9
   329  0041' 1903               	btfsc	3,2
   330  0042' 0A8A'              	incf	?a_CRC16+10
   331  0043'                    l42
   332  0043' 080A'              	movf	?a_CRC16+10,w
   333  0044' 3A80               	xorlw	128
   334  0045' 0080'              	movwf	btemp
   335  0046' 0801'              	movf	?_CRC16+1,w
   336  0047' 3A80               	xorlw	128
   337  0048' 0200'              	subwf	btemp,w
   338  0049' 1D03               	btfss	3,2
   339  004A' 2800'              	goto	u135
   340  004B' 0800'              	movf	?_CRC16,w
   341  004C' 0209'              	subwf	?a_CRC16+9,w
   342  004D'                    u135
   343                           ;uart.c: 250: return(CRC16Hi<<8 | CRC16Lo);
   344  004D' 1283               	bcf	3,5
   345  004E' 1303               	bcf	3,6	;carry unused
   346  004F' 1C03               	btfss	3,0
   347  0050' 2800'              	goto	L6
   348  0051' 0805'              	movf	?a_CRC16+5,w
   349  0052' 0081'              	movwf	btemp+1
   350  0053' 0180'              	clrf	btemp
   351  0054' 0806'              	movf	?a_CRC16+6,w
   352  0055' 0480'              	iorwf	btemp
   353                           ;uart.c: 251: }
   354  0056' 0008               	return
   355                           ;uart.c: 103: void SinglePressKeyDip(void)
   356                           ;uart.c: 104: {
   357  0057'                    _SinglePressKeyDip
   358                           ;uart.c: 105: sendBuf[0] = 0xff;
   359  0057' 30FF               	movlw	-1
   360  0058' 1683               	bsf	3,5
   361  0059' 1303               	bcf	3,6	;carry unused
   362  005A' 0080'              	movwf	_sendBuf^(0+128)
   363                           ;uart.c: 106: sendBuf[1] = 0xaa;
   364  005B' 30AA               	movlw	-86
   365  005C' 0080'              	movwf	(_sendBuf+1)^(0+128)
   366                           ;uart.c: 107: sendBuf[2] = 0x55;
   367  005D' 3055               	movlw	85
   368  005E' 0080'              	movwf	(_sendBuf+2)^(0+128)
   369                           ;uart.c: 108: crc_result = CRC16(sendBuf,3);
   370  005F' 3003               	movlw	3
   371  0060' 1283               	bcf	3,5
   372  0061' 0080'              	movwf	?_CRC16
   373  0062' 0181'              	clrf	?_CRC16+1
   374  0063' 3000'              	movlw	_sendBuf
   375  0064' 2000'              	fcall	_CRC16
   376  0065' 0800'              	movf	btemp,w
   377  0066' 0080'              	movwf	_crc_result
   378  0067' 0801'              	movf	btemp+1,w
   379  0068' 0081'              	movwf	_crc_result+1
   380                           ;uart.c: 109: sendBuf[3] = (uchar)(crc_result&0
      +                          x00ff);
   381  0069' 0800'              	movf	_crc_result,w
   382  006A' 1683               	bsf	3,5
   383  006B' 0080'              	movwf	(_sendBuf+3)^(0+128)
   384                           ;uart.c: 110: sendBuf[4] = (uchar)((crc_result&
      +                          0xff00)>>8);
   385  006C' 1283               	bcf	3,5
   386  006D' 0801'              	movf	_crc_result+1,w
   387  006E' 0081'              	movwf	btemp+1
   388  006F' 0800'              	movf	_crc_result,w
   389  0070' 0080'              	movwf	btemp
   390  0071' 0180'              	clrf	btemp
   391  0072' 0801'              	movf	btemp+1,w
   392  0073' 1683               	bsf	3,5
   393  0074' 0080'              	movwf	(_sendBuf+4)^(0+128)
   394                           ;uart.c: 112: sendCount = 5;
   395  0075' 3005               	movlw	5
   396  0076' 0080'              	movwf	_sendCount^(0+128)	;volatile
   397                           ;uart.c: 114: beginSend();
   398  0077' 2800'              	ljmp	_beginSend
   399  0078'                    _RecFrameCheck
   400                           ;	_p_CheckData assigned to ?a_RecFrameCheck+0
   401  0000                     _RecFrameCheck$p_CheckData	set	?a_RecFrameCheck
   402                           ;	_CRCWord assigned to ?a_RecFrameCheck+1
   403  0000                     _RecFrameCheck$CRCWord	set	?a_RecFrameCheck+1
   404                           ;_p_CheckData stored from w
   405  0078' 0183               	clrf	3	;select bank 0
   406  0079' 0080'              	movwf	?a_RecFrameCheck
   407                           ;uart.c: 204: uint CRCWord;
   408  007A' 1683               	bsf	3,5
   409  007B' 0800'              	movf	_GetCntTemp^(0+128),w	;volatile
   410  007C' 1283               	bcf	3,5
   411  007D' 0700'              	addwf	?a_RecFrameCheck,w
   412  007E' 3EFE               	addlw	-2
   413  007F' 0084               	movwf	4
   414  0080' 1383               	bcf	3,7
   415  0081' 0800               	movf	0,w
   416  0082' 0081'              	movwf	btemp+1
   417  0083' 1683               	bsf	3,5
   418  0084' 0800'              	movf	_GetCntTemp^(0+128),w	;volatile
   419  0085' 1283               	bcf	3,5
   420  0086' 0700'              	addwf	?a_RecFrameCheck,w
   421  0087' 0080'              	movwf	btemp
   422  0088' 0300'              	decf	btemp,w
   423  0089' 0084               	movwf	4
   424  008A' 0800               	movf	0,w
   425  008B' 0082'              	movwf	?a_RecFrameCheck+2
   426  008C' 0801'              	movf	btemp+1,w
   427  008D' 0081'              	movwf	?a_RecFrameCheck+1
   428                           ;uart.c: 207: if(CRCWord == CRC16(p_CheckData,G
      +                          etCntTemp-2))
   429  008E' 30FE               	movlw	254
   430  008F' 0080'              	movwf	btemp
   431  0090' 30FF               	movlw	255
   432  0091' 0081'              	movwf	btemp+1
   433  0092' 1683               	bsf	3,5
   434  0093' 0800'              	movf	_GetCntTemp^(0+128),w	;volatile
   435  0094' 0700'              	addwf	btemp,w
   436  0095' 1283               	bcf	3,5
   437  0096' 0080'              	movwf	?_CRC16
   438  0097' 0801'              	movf	btemp+1,w
   439  0098' 1803               	btfsc	3,0
   440  0099' 0A01'              	incf	btemp+1,w
   441  009A' 0081'              	movwf	?_CRC16+1
   442  009B' 0800'              	movf	?a_RecFrameCheck,w
   443  009C' 2000'              	fcall	_CRC16
   444  009D' 0802'              	movf	?a_RecFrameCheck+2,w
   445  009E' 0601'              	xorwf	btemp+1,w
   446  009F' 1D03               	btfss	3,2
   447  00A0' 2800'              	goto	u95
   448  00A1' 0801'              	movf	?a_RecFrameCheck+1,w
   449  00A2' 0600'              	xorwf	btemp,w
   450  00A3'                    u95
   451  00A3' 1903               	btfsc	3,2
   452                           ;uart.c: 208: {
   453  00A4' 3401               	retlw	1
   454                           ;uart.c: 212: {
   455  00A5' 3400               	retlw	0
   456                           ;uart.c: 118: void ReceiveFrameDisFun(void)
   457                           ;uart.c: 119: {
   458  00A6'                    _ReceiveFrameDisFun
   459                           ;uart.c: 132: if(receCount>4)
   460  00A6' 3005               	movlw	5
   461  00A7' 1683               	bsf	3,5
   462  00A8' 1303               	bcf	3,6	;carry unused
   463  00A9' 0200'              	subwf	_receCount^(0+128),w	;volatile
   464  00AA' 1803               	btfsc	3,0
   465  00AB' 2800'              	goto	l25
   466                           ;uart.c: 133: {
   467                           ;uart.c: 144: {
   468                           ;uart.c: 146: break;
   469                           ;uart.c: 148: case 1:
   470                           ;uart.c: 149: break;
   471                           ;uart.c: 151: case 3:
   472                           ;uart.c: 152: break;
   473                           ;uart.c: 154: case 5:
   474                           ;uart.c: 155: break;
   475  00AC' 2800'              	goto	l23
   476  00AD'                    l30
   477                           ;uart.c: 157: case 0xaa:
   478                           ;uart.c: 158: if(receCount >= 5)
   479  00AD' 3005               	movlw	5
   480  00AE' 0200'              	subwf	_receCount^(0+128),w	;volatile
   481  00AF' 1C03               	btfss	3,0
   482  00B0' 2800'              	goto	l23
   483                           ;uart.c: 159: {
   484  00B1' 0800'              	movf	_receBuf^(0+128),w
   485  00B2' 1283               	bcf	3,5
   486  00B3' 0600'              	xorwf	_LocalAddr,w
   487  00B4' 1D03               	btfss	3,2
   488  00B5' 2800'              	goto	l32
   489  00B6' 0800'              	movf	_checkoutError,w	;volatile
   490  00B7' 1D03               	btfss	3,2
   491  00B8' 2800'              	goto	l32
   492                           ;uart.c: 170: {
   493  00B9' 3005               	movlw	5
   494  00BA' 0080'              	movwf	?_RecFrameCheck
   495  00BB' 3000'              	movlw	_receBuf
   496  00BC' 2000'              	fcall	_RecFrameCheck
   497  00BD' 0080'              	movwf	btemp
   498  00BE' 0181'              	clrf	btemp+1
   499                           ;uart.c: 172: {
   500                           ;uart.c: 174: RA1 =!RA1;
   501  00BF' 3002               	movlw	2
   502  00C0' 0685               	xorwf	5
   503                           ;uart.c: 178: RB4 = !RB4;
   504  00C1' 3010               	movlw	16
   505  00C2' 0686               	xorwf	6
   506                           ;uart.c: 181: GetKeyValue = receBuf[2];
   507  00C3' 1683               	bsf	3,5
   508  00C4' 0800'              	movf	(_receBuf+2)^(0+128),w
   509  00C5' 1283               	bcf	3,5
   510  00C6' 0080'              	movwf	_GetKeyValue	;volatile
   511                           ;uart.c: 183: SinglePressKeyDip();
   512  00C7' 2000' 118A'        	fcall	_SinglePressKeyDip
   513  00C9'                    l32
   514                           ;uart.c: 184: }
   515  00C9' 1683               	bsf	3,5
   516  00CA' 0180'              	clrf	_receCount^(0+128)	;volatile

⌨️ 快捷键说明

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