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

📄 main.lst

📁 Microchip 公司16F648 芯片实现RS485通讯,符合Modbus通讯协议,可用PICC环境编译.文件完整,可供参考.
💻 LST
📖 第 1 页 / 共 3 页
字号:
   210  0028' 2800'              	goto	l20
   211  0029' 1683               	bsf	3,5
   212  002A' 1E8C               	btfss	12,5
   213  002B' 2800'              	goto	l20
   214                           ;main.c: 134: {
   215  002C' 300A               	movlw	10
   216  002D' 1283               	bcf	3,5
   217  002E' 0080'              	movwf	_receTimeOut	;volatile
   218                           ;main.c: 141: if(FERR==1)
   219  002F' 1D18               	btfss	24,2
   220  0030' 2800'              	goto	l21
   221                           ;main.c: 142: {
   222  0031' 1218               	bcf	24,4
   223                           ;main.c: 148: FERR = 0;
   224  0032' 1118               	bcf	24,2
   225  0033' 2800'              	goto	L1
   226                           ;main.c: 149: CREN = 1;
   227                           ;main.c: 150: tmp = RCREG;
   228                           ;main.c: 152: }
   229  0034'                    l21
   230  0034' 1C98               	btfss	24,1
   231  0035' 2800'              	goto	l23
   232                           ;main.c: 154: {
   233  0036' 1218               	bcf	24,4
   234                           ;main.c: 163: OERR = 0;
   235  0037' 1098               	bcf	24,1
   236  0038'                    L1
   237                           ;main.c: 164: CREN = 1;
   238  0038' 1618               	bsf	24,4
   239                           ;main.c: 165: tmp = RCREG;
   240  0039' 081A               	movf	26,w	;volatile
   241  003A' 0080'              	movwf	?a_isr
   242                           ;main.c: 166: }
   243  003B' 2800'              	goto	l20
   244  003C'                    l23
   245                           ;main.c: 168: {
   246  003C' 3000               	movlw	0
   247  003D' 1818               	btfsc	24,0
   248  003E' 3001               	movlw	1
   249  003F' 1683               	bsf	3,5
   250  0040' 0080'              	movwf	_RX9DBuf^(0+128)
   251                           ;main.c: 171: receBuf[receCount] = RCREG;
   252  0041' 0800'              	movf	_receCount^(0+128),w	;volatile
   253  0042' 3E00'              	addlw	_receBuf
   254  0043' 0084               	movwf	4
   255  0044' 1383               	bcf	3,7
   256  0045' 1283               	bcf	3,5
   257  0046' 081A               	movf	26,w	;volatile
   258  0047' 0080               	movwf	0
   259                           ;main.c: 172: if(RX9DBuf != ParityBit(&receBuf[
      +                          receCount]) )
   260  0048' 1683               	bsf	3,5
   261  0049' 0800'              	movf	_receCount^(0+128),w	;volatile
   262  004A' 3E00'              	addlw	_receBuf
   263  004B' 1283               	bcf	3,5
   264  004C' 0080'              	movwf	?_ParityBit
   265  004D' 3080               	movlw	128
   266  004E' 0081'              	movwf	?_ParityBit+1
   267  004F' 118A' 2000' 118A'  	fcall	_ParityBit
   268  0052' 0082'              	movwf	btemp+2
   269  0053' 0183'              	clrf	btemp+3
   270  0054' 1683               	bsf	3,5
   271  0055' 0800'              	movf	_RX9DBuf^(0+128),w
   272  0056' 0080'              	movwf	btemp
   273  0057' 0181'              	clrf	btemp+1
   274  0058' 0803'              	movf	btemp+3,w
   275  0059' 0601'              	xorwf	btemp+1,w
   276  005A' 1D03               	btfss	3,2
   277  005B' 2800'              	goto	u165
   278  005C' 0802'              	movf	btemp+2,w
   279  005D' 0600'              	xorwf	btemp,w
   280  005E'                    u165
   281  005E' 1903               	btfsc	3,2
   282  005F' 2800'              	goto	l25
   283                           ;main.c: 173: checkoutError = 1;
   284  0060' 3001               	movlw	1
   285  0061' 1283               	bcf	3,5
   286  0062' 0080'              	movwf	_checkoutError	;volatile
   287  0063'                    l25
   288                           ;main.c: 174: receCount++;
   289  0063' 1683               	bsf	3,5
   290  0064' 0A80'              	incf	_receCount^(0+128)	;volatile
   291                           ;main.c: 175: receCount &= 0x0f;
   292  0065' 300F               	movlw	15
   293  0066' 0580'              	andwf	_receCount^(0+128)	;volatile
   294                           ;main.c: 176: }
   295  0067'                    l20
   296                           ;main.c: 177: }
   297  0067' 0000               	nop	;#
   298                           ;main.c: 179: return;
   299                           ;main.c: 180: }
   300  0068' 1303               	bcf	3,6	;carry unused
   301  0069' 1283               	bcf	3,5
   302                           
   303                           	psect	intsave_0
   304  0000'                    saved_w
   305  0000'                    	ds	1
   306                           
   307                           	psect	intret
   308  0000' 0800'              	movf	saved_fsr,w
   309  0001' 0084               	movwf	4	;restore FSR
   310  0002' 0800'              	movf	saved_pclath,w
   311  0003' 008A               	movwf	10
   312  0004'                    int_restore
   313  0004' 0800'              	movf	saved_status,w
   314  0005' 0083               	movwf	3
   315  0006' 0E80'              	swapf	saved_w
   316  0007' 0E00'              	swapf	saved_w,w
   317  0008' 0009               	retfie
   318                           
   319                           	psect	intentry
   320  0000'                    int_entry
   321  0000' 0080'              	movwf	saved_w
   322  0001' 0803               	movf	3,w
   323  0002' 0183               	clrf	3
   324  0003' 0080'              	movwf	saved_status
   325  0004' 0804               	movf	4,w
   326  0005' 0080'              	movwf	saved_fsr
   327  0006' 080A               	movf	10,w
   328  0007' 0080'              	movwf	saved_pclath
   329  0008' 018A               	clrf	10
   330                           
   331                           	psect	intsave
   332  0000'                    saved_status
   333  0000'                    	ds	1
   334  0001'                    saved_fsr
   335  0001'                    	ds	1
   336  0002'                    saved_pclath
   337  0002'                    	ds	1
   338                           
   339                           	psect	text4
   340                           ;main.c: 209: void IOinit(void)
   341                           ;main.c: 210: {
   342  0000'                    _IOinit
   343                           ;main.c: 211: CM0=1;
   344  0000' 0183               	clrf	3	;select bank 0
   345  0001' 141F               	bsf	31,0
   346                           ;main.c: 212: CM1=1;
   347  0002' 149F               	bsf	31,1
   348                           ;main.c: 213: CM2=1;
   349  0003' 151F               	bsf	31,2
   350                           ;main.c: 215: TRISA &= ~0b00000010;
   351  0004' 1683               	bsf	3,5
   352  0005' 1085               	bcf	5,1	;volatile
   353                           ;main.c: 216: TRISA |= 0b00000111;
   354  0006' 3007               	movlw	7
   355  0007' 0485               	iorwf	5	;volatile
   356                           ;main.c: 217: RA1 = 0;
   357  0008' 1283               	bcf	3,5
   358  0009' 1085               	bcf	5,1
   359                           ;main.c: 218: TRISB4 = 0;
   360  000A' 1683               	bsf	3,5
   361  000B' 1206               	bcf	6,4
   362                           ;main.c: 219: RB4 = 1;
   363  000C' 1283               	bcf	3,5
   364  000D' 1606               	bsf	6,4
   365                           ;main.c: 220: }
   366  000E' 0008               	return
   367                           ;main.c: 222: void sysinit(void)
   368                           ;main.c: 223: {
   369  000F'                    _sysinit
   370                           ;main.c: 224: asm("nop");
   371  000F' 0000               	nop	;#
   372                           ;main.c: 226: IOinit();
   373  0010' 2000'              	fcall	_IOinit
   374                           ;main.c: 227: time0init();
   375  0011' 118A' 2000'        	fcall	_time0init
   376                           ;main.c: 228: Uart_init();
   377  0013' 118A' 2000' 118A'  	fcall	_Uart_init
   378                           ;main.c: 229: asm("nop");
   379  0016' 0000               	nop	;#
   380                           ;main.c: 230: }
   381  0017' 0008               	return
   382                           
   383                           	psect	text6
   384  0000'                    _ParityBit
   385                           ;	_temp_a assigned to ?a_ParityBit+0
   386  0000                     _ParityBit$temp_a	set	?a_ParityBit
   387                           ;	_result assigned to ?a_ParityBit+1
   388  0000                     _ParityBit$result	set	?a_ParityBit+1
   389                           ;	_tempcount assigned to ?a_ParityBit+2
   390  0000                     _ParityBit$tempcount	set	?a_ParityBit+2
   391                           ;	_tempchar assigned to ?a_ParityBit+3
   392  0000                     _ParityBit$tempchar	set	?a_ParityBit+3
   393                           ;main.c: 237: char tempchar=0, tempcount ,temp_
      +                          a=0,result=0;
   394  0000' 0183               	clrf	3	;select bank 0
   395  0001' 0183'              	clrf	?a_ParityBit+3
   396  0002' 0180'              	clrf	?a_ParityBit
   397  0003' 0181'              	clrf	?a_ParityBit+1
   398                           ;main.c: 238: tempchar = *p_data;
   399  0004' 0801'              	movf	?_ParityBit+1,w
   400  0005' 0081'              	movwf	code_ptr+1
   401  0006' 0800'              	movf	?_ParityBit,w
   402  0007' 118A' 2000' 118A'  	fcall	string_table
   403  000A' 0083'              	movwf	?a_ParityBit+3
   404                           ;main.c: 240: for(tempcount = 8; tempcount > 0;
      +                           tempcount--)
   405  000B' 3008               	movlw	8
   406  000C' 0082'              	movwf	?a_ParityBit+2
   407  000D'                    l33
   408                           ;main.c: 241: {
   409                           ;main.c: 242: temp_a = tempchar & 0x01;
   410  000D' 0803'              	movf	?a_ParityBit+3,w
   411  000E' 3901               	andlw	1
   412  000F' 0080'              	movwf	?a_ParityBit
   413                           ;main.c: 243: if(1 == temp_a)
   414  0010' 0B00'              	decfsz	?a_ParityBit,w
   415  0011' 2800'              	goto	l36
   416                           ;main.c: 244: {
   417  0012' 0A81'              	incf	?a_ParityBit+1
   418  0013'                    l36
   419                           ;main.c: 246: }
   420  0013' 1003               	bcf	3,0
   421  0014' 0C83'              	rrf	?a_ParityBit+3
   422                           ;main.c: 248: }
   423  0015' 0B82'              	decfsz	?a_ParityBit+2
   424  0016' 2800'              	goto	l33
   425                           ;main.c: 249: return(result&0x01);
   426  0017' 0801'              	movf	?a_ParityBit+1,w

⌨️ 快捷键说明

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