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

📄 cdc.lst

📁 USB的开发例子,用PIC18F4550实现.可以和电脑用USB控制连接.
💻 LST
📖 第 1 页 / 共 3 页
字号:
   248  000610  E0DC               	bz	l90
   249  000612  0A03               	xorlw	3
   250  000614  E0E8               	bz	l91
   251  000616  0A01               	xorlw	1
   252  000618  E0EB               	bz	l92
   253  00061A  0012               	return	
   254                           ;cdc.c: 144: }
   255                           ;cdc.c: 167: void CDCInitEP(void)
   256                           ;cdc.c: 168: {
   257  00061C                     _CDCInitEP:
   258  000000                     
   259                           ;cdc.c: 170: line_coding.b.dwDTERate._dword = 11
      +                          5200;
   260  00061C  0100               	movlb	_line_coding shr (0+8)
   261  00061E  6BF8               	clrf	(_line_coding+3)& (0+255),b
   262  000620  0E01               	movlw	1
   263  000622  6FF7               	movwf	(_line_coding+2)& (0+255),b
   264  000624  0EC2               	movlw	194
   265  000626  6FF6               	movwf	(_line_coding+1)& (0+255),b
   266  000628  6BF5               	clrf	_line_coding& (0+255),b
   267                           ;cdc.c: 171: line_coding.b.bCharFormat = 0x00;
   268  00062A  6BF9               	clrf	(_line_coding+4)& (0+255),b
   269                           ;cdc.c: 172: line_coding.b.bParityType = 0x00;
   270  00062C  6BFA               	clrf	(_line_coding+5)& (0+255),b
   271                           ;cdc.c: 173: line_coding.b.bDataBits = 0x08;
   272  00062E  0E08               	movlw	8
   273  000630  CFE8 F0FB          	movff	wreg,_line_coding+6
   274                           ;cdc.c: 175: cdc_trf_state = 0;
   275  000634  0103               	movlb	_cdc_trf_state shr (0+8)
   276  000636  6B63               	clrf	_cdc_trf_state& (0+255),b
   277                           ;cdc.c: 176: cdc_rx_len = 0;
   278  000638  0103               	movlb	_cdc_rx_len shr (0+8)
   279  00063A  6B62               	clrf	_cdc_rx_len& (0+255),b
   280                           ;cdc.c: 178: UEP2 = 0x0A|0x10;
   281  00063C  0E1A               	movlw	26
   282  00063E  6E72               	movwf	3954,c	;volatile
   283                           ;cdc.c: 179: UEP3 = 0x0E|0x10;
   284  000640  0E1E               	movlw	30
   285  000642  6E73               	movwf	3955,c	;volatile
   286                           ;cdc.c: 192: ep[2].in.b.ADR = (byte*)cdc_notice;
   287  000644  0104               	movlb	4
   288  000646  6B16               	clrf	22,b
   289  000648  0E05               	movlw	5
   290  00064A  6F17               	movwf	23,b
   291                           ;cdc.c: 193: ep[2].in.a.Stat._byte = 0x00|0x40;
   292  00064C  0E40               	movlw	64
   293  00064E  CFE8 F414          	movff	wreg,1044
   294                           ;cdc.c: 195: ep[3].out.a.Cnt = sizeof(cdc_data_r
      +                          x);
   295  000652  CFE8 F419          	movff	wreg,1049
   296                           ;cdc.c: 196: ep[3].out.b.ADR = (byte*)cdc_data_r
      +                          x;
   297  000656  6B1A               	clrf	26,b
   298  000658  0E06               	movlw	6
   299  00065A  6F1B               	movwf	27,b
   300                           ;cdc.c: 197: ep[3].out.a.Stat._byte = 0x80|0x00|
      +                          0x08;
   301  00065C  0E88               	movlw	-120
   302  00065E  CFE8 F418          	movff	wreg,1048
   303                           ;cdc.c: 199: ep[3].in.b.ADR = (byte*)cdc_data_tx
      +                          ;
   304  000662  6B1E               	clrf	30,b
   305  000664  0E07               	movlw	7
   306  000666  6F1F               	movwf	31,b
   307                           ;cdc.c: 200: ep[3].in.a.Stat._byte = 0x00|0x40;
   308  000668  0E40               	movlw	64
   309  00066A  CFE8 F41C          	movff	wreg,1052
   310                           ;cdc.c: 202: }
   311  00066E  0012               	return	
   312                           ;cdc.c: 237: byte getsUSBUSART(char *buffer, byt
      +                          e len)
   313                           ;cdc.c: 238: {
   314                           ;       param _buffer assigned to ?_getsUSBUSART
      +                          +0
   315  000670  00FC               	dw	?_getsUSBUSART
   316  000672                     _getsUSBUSART:
   317  000000                     
   318                           ;cdc.c: 239: cdc_rx_len = 0;
   319  000672  0103               	movlb	_cdc_rx_len shr (0+8)
   320  000674  6B62               	clrf	_cdc_rx_len& (0+255),b
   321                           ;cdc.c: 241: if(!ep[3].out.a.Stat.b.UOWN)
   322  000676  0104               	movlb	4
   323  000678  BF18               	btfsc	24,7,b
   324  00067A  D038               	goto	l96
   325                           ;cdc.c: 242: {
   326  00067C  0100               	movlb	__Lparam shr (0+8)
   327  00067E  51FE               	movf	(?_getsUSBUSART+2)^(__Lparam& (0+65280)),w
   328  000680  0104               	movlb	4
   329  000682  6119               	cpfslt	25,b
   330  000684  D002               	goto	l97
   331                           ;cdc.c: 248: len = ep[3].out.a.Cnt;
   332  000686  C419 F0FE          	movff	1049,?_getsUSBUSART+2
   333  00068A                     l97:
   334                           ;cdc.c: 253: for(cdc_rx_len = 0; cdc_rx_len < le
      +                          n; cdc_rx_len++)
   335  00068A  0103               	movlb	_cdc_rx_len shr (0+8)
   336  00068C  6B62               	clrf	_cdc_rx_len& (0+255),b
   337  00068E                     l101:
   338  00068E  0100               	movlb	__Lparam shr (0+8)
   339  000690  51FE               	movf	(?_getsUSBUSART+2)^(__Lparam& (0+65280)),w
   340  000692  0103               	movlb	_cdc_rx_len shr (0+8)
   341  000694  5D62               	subwf	_cdc_rx_len& (0+255),w,b
   342  000696  B0D8               	btfsc	status,0,c
   343  000698  D014               	goto	u80
   344                           ;cdc.c: 254: buffer[cdc_rx_len] = cdc_data_rx[cd
      +                          c_rx_len];
   345  00069A  C362  FFE8         	movff	_cdc_rx_len,wreg
   346  00069E  EE16 F000          	lfsr	1,1536
   347  0006A2  26E1               	addwf	fsr1l,f,c
   348  0006A4  0E00               	movlw	0
   349  0006A6  22E2               	addwfc	fsr1h,f,c
   350  0006A8  C362  FFE8         	movff	_cdc_rx_len,wreg
   351  0006AC  0100               	movlb	__Lparam shr (0+8)
   352  0006AE  25FC               	addwf	?_getsUSBUSART^(__Lparam& (0+65280)),w
   353  0006B0  6EE9               	movwf	fsr0l,c
   354  0006B2  0E00               	movlw	0
   355  0006B4  21FD               	addwfc	(?_getsUSBUSART+1)^(__Lparam& (0+65280))
      +                          ,w
   356  0006B6  6EEA               	movwf	fsr0h
   357  0006B8  CFE7 FFEF          	movff	indf1,indf0
   358  0006BC  0103               	movlb	_cdc_rx_len shr (0+8)
   359  0006BE  2B62               	incf	_cdc_rx_len& (0+255),f,b
   360  0006C0  D7E6               	goto	l101
   361  0006C2                     u80:
   362                           ;cdc.c: 259: ep[3].out.a.Cnt = sizeof(cdc_data_r
      +                          x);
   363  0006C2  0E40               	movlw	64
   364  0006C4  CFE8 F419          	movff	wreg,1049
   365                           ;cdc.c: 260: { ep[3].out.a.Stat._byte &= 0x40; e
      +                          p[3].out.a.Stat.a.DTS = !ep[3].out.a.Stat.a.DTS;
      +                           ep[3].out.a.Stat._byte |= 0x80|0x08; };
   366  0006C8  0104               	movlb	4
   367  0006CA  1718               	andwf	24,f,b
   368  0006CC  0E00               	movlw	0
   369  0006CE  AD18               	btfss	24,6,b
   370  0006D0  0E01               	movlw	1
   371  0006D2  6E00               	movwf	btemp
   372  0006D4  EE04 F018          	lfsr	0,1048
   373  0006D8  3A00               	swapf	btemp,f
   374  0006DA  3600               	rlcf	btemp,f
   375  0006DC  3600               	rlcf	btemp,f
   376  0006DE  50EF               	movf	indf0,w,c
   377  0006E0  1800               	xorwf	btemp,w
   378  0006E2  0BBF               	andlw	-65
   379  0006E4  1800               	xorwf	btemp,w
   380  0006E6  6EEF               	movwf	indf0,c
   381  0006E8  0E88               	movlw	-120
   382  0006EA  1318               	iorwf	24,f,b
   383  0006EC                     l96:
   384                           ;cdc.c: 261: }
   385  0006EC  C362  FFE8         	movff	_cdc_rx_len,wreg
   386  0006F0  0012               	return	
   387                           ;cdc.c: 265: }
   388  0006F2  00FC               	dw	?_putsUSBUSART
   389  0006F4                     _putsUSBUSART:
   390  000000                     
   391                           ;cdc.c: 296: byte len;
   392  0006F4  0103               	movlb	_cdc_trf_state shr (0+8)
   393  0006F6  5363               	movf	_cdc_trf_state& (0+255),f,b
   394  0006F8  A4D8               	btfss	status,2,c
   395  0006FA  0012               	return	
   396                           ; _data loaded to fsr1
   397  0006FC  C0FC  FFE1         	movff	?_putsUSBUSART,fsr1l
   398  000700  C0FD  FFE2         	movff	?_putsUSBUSART+1,fsr1h
   399                           ;cdc.c: 327: len = 0;
   400  000704  6AD9               	clrf	fsr2l,c
   401  000706                     l106:
   402                           ;cdc.c: 328: do
   403                           ;cdc.c: 329: {
   404  000706  2AD9               	incf	fsr2l,f,c
   405                           ;cdc.c: 331: if(len == 255) break;
   406  000708  28D9               	incf	fsr2l,w,c
   407  00070A  B4D8               	btfsc	status,2,c
   408  00070C  D009               	goto	l105
   409                           ;cdc.c: 332: }while(*data++);
   410  00070E  CFE1 FFE9          	movff	fsr1l,fsr0l
   411  000712  CFE2 FFEA          	movff	fsr1h,fsr0h
   412  000716  4AE1               	infsnz	fsr1l,f,c
   413  000718  2AE2               	incf	fsr1h,f,c
   414  00071A  50EF               	movf	indf0,w,c
   415  00071C  A4D8               	btfss	status,2,c
   416  00071E  D7F3               	goto	l106
   417  000720                     l105:
   418                           ;cdc.c: 337: data-=len;
   419  000720  50D9               	movf	fsr2l,w,c
   420  000722  5EE1               	subwf	fsr1l,f,c
   421  000724  0E00               	movlw	0
   422  000726  5AE2               	subwfb	fsr1h,f,c
   423                           ;cdc.c: 345: { pCDCSrc.bRam = (byte*)data; cdc_t
      +                          x_len = len; cdc_mem_type = 0; cdc_trf_state = 1
      +                          ; };
   424  000728  CFE1 F0EF          	movff	fsr1l,_pCDCSrc
   425  00072C  CFE2 F0F0          	movff	fsr1h,_pCDCSrc+1
   426  000730  CFD9 F364          	movff	fsr2l,_cdc_tx_len
   427  000734  0103               	movlb	_cdc_mem_type shr (0+8)
   428  000736  6B61               	clrf	_cdc_mem_type& (0+255),b
   429  000738  0E01               	movlw	1
   430  00073A  CFE8 F363          	movff	wreg,_cdc_trf_state
   431                           ;cdc.c: 346: }
   432  00073E  0012               	return	
   433  000740  00FC               	dw	?_putrsUSBUSART
   434  000742                     _putrsUSBUSART:
   435  000000                     
   436                           ;cdc.c: 377: byte len;
   437  000742  0103               	movlb	_cdc_trf_state shr (0+8)
   438  000744  5363               	movf	_cdc_trf_state& (0+255),f,b
   439  000746  A4D8               	btfss	status,2,c
   440  000748  0012               	return	
   441                           ;cdc.c: 408: len = 0;
   442  00074A  6AD9               	clrf	fsr2l,c
   443  00074C                     l112:
   444                           ;cdc.c: 409: do
   445                           ;cdc.c: 410: {
   446  00074C  2AD9               	incf	fsr2l,f,c
   447                           ;cdc.c: 412: if(len == 255) break;
   448  00074E  28D9               	incf	fsr2l,w,c
   449  000750  B4D8               	btfsc	status,2,c
   450  000752  D016               	goto	l111
   451                           ;cdc.c: 413: }while(*data++);
   452  000754  0100               	movlb	__Lparam shr (0+8)
   453  000756  C0FC  FFF6         	movff	?_putrsUSBUSART,tblptrl
   454  00075A  C0FD  FFF7         	movff	?_putrsUSBUSART+1,tblptrh
   455  00075E  2BFC               	incf	?_putrsUSBUSART^(__Lparam& (0+65280)),f
   456  000760  0E00               	movlw	0
   457  000762  23FD               	addwfc	(?_putrsUSBUSART+1)^(__Lparam& (0+65280)
      +                          ),f
   458  000764  0E03               	movlw	(high __ramtop+-1)
   459  000766  64F7               	cpfsgt	tblptrh,c
   460  000768  D003               	bra	u147
   461  00076A  0008               	tblrd		*
   462  00076C  50F5               	movf	tablat,w,c
   463  00076E  D005               	bra	u140
   464  000770                     u147:
   465  000770  CFF6 FFE9          	movff	tblptrl,fsr0l
   466  000774  CFF7 FFEA          	movff	tblptrh,fsr0h
   467  000778  50EF               	movf	indf0,w,c
   468  00077A                     u140:
   469  00077A  0900               	iorlw	0
   470  00077C  A4D8               	btfss	status,2,c
   471  00077E  D7E6               	goto	l112
   472  000780                     l111:
   473                           ;cdc.c: 418: data-=len;
   474  000780  50D9               	movf	fsr2l,w,c
   475  000782  0100               	movlb	__Lparam shr (0+8)
   476  000784  5FFC               	subwf	?_putrsUSBUSART^(__Lparam& (0+65280)),f
   477  000786  0E00               	movlw	0
   478  000788  5BFD               	subwfb	(?_putrsUSBUSART+1)^(__Lparam& (0+65280)
      +                          ),f
   479                           ;cdc.c: 426: { pCDCSrc.bRom = (const byte*)data;
      +                           cdc_tx_len = len; cdc_mem_type = 1; cdc_trf_sta
      +                          te = 1; };
   480  00078A  C0FC  F0EF         	movff	?_putrsUSBUSART,_pCDCSrc
   481  00078E  C0FD  F0F0         	movff	?_putrsUSBUSART+1,_pCDCSrc+1
   482  000792  CFD9 F364          	movff	fsr2l,_cdc_tx_len
   483  000796  0E01               	movlw	1
   484  000798  CFE8 F361          	movff	wreg,_cdc_mem_type
   485  00079C  CFE8 F363          	movff	wreg,_cdc_trf_state
   486                           ;cdc.c: 428: }
   487  0007A0  0012               	return	
   488                           ;cdc.c: 446: void CDCTxService(void)
   489                           ;cdc.c: 447: {
   490  0007A2                     _CDCTxService:
   491  000000                     
   492                           ;cdc.c: 448: byte byte_to_send;

⌨️ 快捷键说明

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