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

📄 kd12ci.lst

📁 USB固件程序源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
  74   1      
  75   1      }
  76          
  77          void D12_SetDMA(unsigned char bMode)
C51 COMPILER V6.20c  KD12CI                                                                10/31/2002 21:55:45 PAGE 10  

  78          {
  79   1      
  80   1       	if(bEPPflags.bits.in_isr == 0)
  81   1       	 	DISABLE;
  82   1       	outportcmd(0xFB);
  83   1       	outportdata(bMode);
  84   1      	if(bEPPflags.bits.in_isr == 0)
  85   1      		ENABLE;
  86   1      
  87   1      }
  88          /*
  89          unsigned char D12_GetDMA(void)
  90          {
  91           outportcmd(0xFB);
  92           return(inportb());
  93          }
  94          */
  95          /*
  96          unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
  97          {
  98          	unsigned char c;
  99          
 100          	if(bEPPflags.bits.in_isr == 0)
 101          		DISABLE;
 102          
 103          	outportcmd(0x80 + bEndp);
 104          	c = inportb();
 105          
 106          	if(bEPPflags.bits.in_isr == 0)
 107          		ENABLE;
 108          
 109          	return c;
 110          }
 111          */
 112          void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
 113          {
 114   1      	if(bEPPflags.bits.in_isr == 0)
 115   1      		DISABLE;
 116   1      
 117   1      	outportcmd(0x40 + bEndp);
 118   1      	outportdata(bStalled);
 119   1      
 120   1      	if(bEPPflags.bits.in_isr == 0)
 121   1      		ENABLE;
 122   1      }
 123          
 124          
 125          /*
 126          void D12_SendResume(void)
 127          {
 128           outportcmd(0xF6);
 129          }
 130          */
 131          
 132          unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
 133          {
 134   1      	unsigned char i;
 135   1      
 136   1      	if(bEPPflags.bits.in_isr == 0)
 137   1      		DISABLE;
 138   1      	//---------------------
 139   1      	outportcmd(endp);	//选择端点
C51 COMPILER V6.20c  KD12CI                                                                10/31/2002 21:55:45 PAGE 11  

 140   1      	inportb();		//读入满/空状态
 141   1      
 142   1      	outportcmd(0xF0);	//写缓冲区命令
 143   1      	outportdata(0);
 144   1      	outportdata(len);
 145   1      
 146   1      	for(i=0; i<len; i++)
 147   1      		outportdata(*(buf+i));
 148   1      
 149   1      	outportcmd(0xFA);	//驶购冲区有效
 150   1      	
 151   1      	//--------------------------------
 152   1      	if(bEPPflags.bits.in_isr == 0)
 153   1      		ENABLE;
 154   1      
 155   1      	return len;
 156   1      }
 157          void D12_AcknowledgeEndpoint(unsigned char endp)
 158          {
 159   1      	outportcmd(endp);	//选择端点
 160   1      	outportcmd(0xF1);	//应答设置
 161   1      	if(endp == 0)
 162   1      		outportcmd(0xF2);	//缓冲区清零
 163   1      }
 164          unsigned short D12_ReadInterruptRegister(void)
 165          {
 166   1      	unsigned char b1;
 167   1      	unsigned int j;
 168   1      	//outportb(D12_COMMAND, 0xF4);
 169   1      	outportcmd(0xF4);
 170   1      	b1 = inportb();
 171   1      	j = inportb();
 172   1      	j <<= 8;
 173   1      	j += b1;
 174   1      	return j;
 175   1      }
 176          
 177          unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
 178          {
 179   1      	//outportb(D12_COMMAND, 0x40 + bEndp);
 180   1      	outportcmd(0x40 + bEndp);
 181   1      	return inportb();
 182   1      }
 183          unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
 184          {
 185   1      	unsigned char i, j;
 186   1      
 187   1      	if(bEPPflags.bits.in_isr == 0)
 188   1      		DISABLE;
 189   1      	//--------------------------------
 190   1      	outportcmd(endp);			//选择端点
 191   1      	if((inportb() & D12_FULLEMPTY) == 0) {	//如果缓冲区为空,则返回
 192   2      		if(bEPPflags.bits.in_isr == 0)
 193   2      			ENABLE;
 194   2      		return 0;
 195   2      	}
 196   1      
 197   1      	outportcmd(0xF0);			//读缓冲区
 198   1      	j = inportb();
 199   1      	j = inportb();
 200   1      
 201   1      	if(j > len)
C51 COMPILER V6.20c  KD12CI                                                                10/31/2002 21:55:45 PAGE 12  

 202   1      		j = len;
 203   1      
 204   1      	for(i=0; i<j; i++)
 205   1      		*(buf+i) = inportb();
 206   1      
 207   1      	outportcmd(0xF2);				//缓冲区清空
 208   1      	//-------------------------------
 209   1      	if(bEPPflags.bits.in_isr == 0)
 210   1      		ENABLE;
 211   1      
 212   1      	return j;
 213   1      }
 214          
 215          unsigned char D12_SelectEndpoint(unsigned char bEndp)
 216          {
 217   1      	unsigned char c;
 218   1      
 219   1      	if(bEPPflags.bits.in_isr == 0)
 220   1      		DISABLE;
 221   1      
 222   1      	outportcmd(bEndp);
 223   1      	c = inportb();
 224   1      
 225   1      	if(bEPPflags.bits.in_isr == 0)
 226   1      		ENABLE;
 227   1      
 228   1      	return c;
 229   1      }
 230          
C51 COMPILER V6.20c  KD12CI                                                                10/31/2002 21:55:45 PAGE 13  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _outportcmd (BEGIN)
                                           ; SOURCE LINE # 8
;---- Variable 'value' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 9
                                           ; SOURCE LINE # 16
0000 90FF03            MOV     DPTR,#0FF03H
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 17
0005 22                RET     
             ; FUNCTION _outportcmd (END)

             ; FUNCTION _outportdata (BEGIN)
                                           ; SOURCE LINE # 18
;---- Variable 'value' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 19
                                           ; SOURCE LINE # 20
0000 90FF02            MOV     DPTR,#0FF02H
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 21
0005 22                RET     
             ; FUNCTION _outportdata (END)

             ; FUNCTION L?0045 (BEGIN)
0000 120000      R     LCALL   _outportcmd
             ; FUNCTION inportb (BEGIN)
                                           ; SOURCE LINE # 23
                                           ; SOURCE LINE # 24
                                           ; SOURCE LINE # 33
0003 90FF02            MOV     DPTR,#0FF02H
0006 A3                INC     DPTR
0007 E0                MOVX    A,@DPTR
0008 FF                MOV     R7,A
                                           ; SOURCE LINE # 34
0009         ?C0003:
0009 22                RET     
             ; FUNCTION inportb (END)

             ; FUNCTION _D12_SetAddressEnable (BEGIN)
                                           ; SOURCE LINE # 36
;---- Variable 'bAddress' assigned to Register 'R6' ----
0000 AE07              MOV     R6,AR7
;---- Variable 'bEnable' assigned to Register 'R5' ----
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 38
0002 AF00        E     MOV     R7,bEPPflags
0004 EF                MOV     A,R7
0005 C4                SWAP    A
0006 13                RRC     A
0007 5407              ANL     A,#07H
0009 20E002            JB      ACC.0,?C0004
                                           ; SOURCE LINE # 39
000C C2AF              CLR     EA
000E         ?C0004:
                                           ; SOURCE LINE # 41
000E 7FD0              MOV     R7,#0D0H
0010 120000      R     LCALL   _outportcmd
                                           ; SOURCE LINE # 42
C51 COMPILER V6.20c  KD12CI                                                                10/31/2002 21:55:45 PAGE 14  

0013 ED                MOV     A,R5
0014 6003              JZ      ?C0005
                                           ; SOURCE LINE # 43
0016 430680            ORL     AR6,#080H
0019         ?C0005:
                                           ; SOURCE LINE # 44
0019 AF06              MOV     R7,AR6
001B 120000      R     LCALL   _outportdata
                                           ; SOURCE LINE # 46
001E AF00        E     MOV     R7,bEPPflags
0020 EF                MOV     A,R7
0021 C4                SWAP    A
0022 13                RRC     A
0023 5407              ANL     A,#07H
0025 20E002            JB      ACC.0,?C0007
                                           ; SOURCE LINE # 47
0028 D2AF              SETB    EA
                                           ; SOURCE LINE # 48
002A         ?C0007:
002A 22                RET     
             ; FUNCTION _D12_SetAddressEnable (END)

             ; FUNCTION _D12_SetEndpointEnable (BEGIN)
                                           ; SOURCE LINE # 50
;---- Variable 'bEnable' assigned to Register 'R6' ----
0000 AE07              MOV     R6,AR7
                                           ; SOURCE LINE # 51
                                           ; SOURCE LINE # 52
0002 AF00        E     MOV     R7,bEPPflags
0004 EF                MOV     A,R7
0005 C4                SWAP    A
0006 13                RRC     A
0007 5407              ANL     A,#07H
0009 20E002            JB      ACC.0,?C0008
                                           ; SOURCE LINE # 53
000C C2AF              CLR     EA
000E         ?C0008:
                                           ; SOURCE LINE # 55
000E 7FD8              MOV     R7,#0D8H
0010 120000      R     LCALL   _outportcmd
                                           ; SOURCE LINE # 56
0013 EE                MOV     A,R6
0014 6004              JZ      ?C0009
                                           ; SOURCE LINE # 57
0016 7F01              MOV     R7,#01H
0018 8002              SJMP    ?C0044
001A         ?C0009:
                                           ; SOURCE LINE # 59
001A E4                CLR     A
001B FF                MOV     R7,A
001C         ?C0044:
001C 120000      R     LCALL   _outportdata
001F         ?C0010:
                                           ; SOURCE LINE # 61
001F AF00        E     MOV     R7,bEPPflags
0021 EF                MOV     A,R7
0022 C4                SWAP    A

⌨️ 快捷键说明

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