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

📄 d12ci.lst

📁 采用PDIUSBD12开发的USB总线与429总线数据转换的单片机固件程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  D12CI                                                                  12/16/2004 15:21:56 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN E:\MCU\USB_FIRM\D12CI.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE E:\MCU\USB_FIRM\D12CI.C DB SB OE

stmt level    source

   1          /**********************************************
   2                  USB固件编程
   3          
   4          File Name:	D12ci.C
   5          Revision:		0.2(2004-05-28)
   6          Author:		    LHP
   7          Use library:
   8          Note:			不带DMA控制功能
   9          ***********************************************/
  10          
  11          #include <reg51.h>
  12          
  13          #include "D12ci.h"
  14          
  15          #define D12_COMMAND 0xff03
  16          #define D12_DATA    0xff02
  17          
  18          sbit A0=P3^0;
  19          
  20          void outportb(unsigned int Addr,unsigned char Data);
  21          unsigned char inportb(unsigned int Addr);
  22          
  23          extern EPPFLAGS bEPPflags;
  24          
  25          void outportb(unsigned int Addr,unsigned char Data)
  26          {
  27   1          if(Addr%2==1)
  28   1               A0=1;
  29   1          else
  30   1               A0=0;
  31   1      
  32   1          *((unsigned char xdata*)Addr)=Data;
  33   1      }
  34          
  35          unsigned char inportb(unsigned int Addr)
  36          {//从D12读取数据,addr必须是偶数,此时数据线上传输的是数据,所以直接就让A0=0
  37   1          A0=0;
  38   1          return *((unsigned char xdata*)Addr);
  39   1      }
  40          
  41          void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
  42          {
  43   1      	if(bEPPflags.bits.in_isr == 0)
  44   1      		DISABLE;
  45   1      
  46   1       //   A0=1;
  47   1      //	D12_COMMAND = 0xD0;
  48   1          outportb(D12_COMMAND,0xD0);
  49   1      
  50   1      	if(bEnable)
  51   1      		bAddress |= 0x80;
  52   1      
  53   1          //A0=0;
  54   1      	//D12_DATA = bAddress;
  55   1          outportb(D12_DATA,bAddress);
C51 COMPILER V6.12  D12CI                                                                  12/16/2004 15:21:56 PAGE 2   

  56   1      
  57   1      	if(bEPPflags.bits.in_isr == 0)
  58   1      		ENABLE;
  59   1      }
  60          
  61          void D12_SetEndpointEnable(unsigned char bEnable)
  62          {
  63   1      	if(bEPPflags.bits.in_isr == 0)
  64   1      		DISABLE;
  65   1      //    A0=1;
  66   1      //	D12_COMMAND = 0xD8;
  67   1          outportb(D12_COMMAND,0xD8);
  68   1      
  69   1      //    A0=0;
  70   1      	if(bEnable)
  71   1      //		D12_DATA = 1;
  72   1              outportb(D12_DATA,1);
  73   1      	else
  74   1      		//D12_DATA = 0;
  75   1              outportb(D12_DATA,0);
  76   1      
  77   1      	if(bEPPflags.bits.in_isr == 0)
  78   1      		ENABLE;
  79   1      }
  80          
  81          void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
  82          {
  83   1      	if(bEPPflags.bits.in_isr == 0)
  84   1      		DISABLE;
  85   1      //  A0=1;
  86   1      //	D12_COMMAND = 0xF3;
  87   1          outportb(D12_COMMAND,0xF3);
  88   1      //  A0=0;
  89   1      //	D12_DATA = bConfig;
  90   1      //	D12_DATA = bClkDiv;
  91   1          outportb(D12_DATA,bConfig);
  92   1          outportb(D12_DATA,bClkDiv);
  93   1      
  94   1      	if(bEPPflags.bits.in_isr == 0)
  95   1      		ENABLE;
  96   1      }
  97          /*
  98          void D12_SetDMA(unsigned char bMode)
  99          {
 100          	if(bEPPflags.bits.in_isr == 0)
 101          		DISABLE;
 102          
 103          	D12_COMMAND = 0xFB;
 104          	D12_DATA = bMode;
 105          
 106          	if(bEPPflags.bits.in_isr == 0)
 107          		ENABLE;
 108          }
 109          */
 110          unsigned short D12_ReadInterruptRegister(void)
 111          {
 112   1      	unsigned char b1;
 113   1      	unsigned int j;
 114   1       //   A0=1;
 115   1      //	D12_COMMAND = 0xF4;
 116   1          outportb(D12_COMMAND,0xF4);
 117   1      //    A0=0;
C51 COMPILER V6.12  D12CI                                                                  12/16/2004 15:21:56 PAGE 3   

 118   1      //	b1 = D12_DATA;
 119   1      //	j = D12_DATA;
 120   1          b1=inportb(D12_DATA);
 121   1          j=inportb(D12_DATA);
 122   1      	j <<= 8;
 123   1      	j += b1;
 124   1      
 125   1      	return j;
 126   1      }
 127          
 128          unsigned char D12_SelectEndpoint(unsigned char bEndp)
 129          {
 130   1      	unsigned char c;
 131   1      
 132   1      	if(bEPPflags.bits.in_isr == 0)
 133   1      		DISABLE;
 134   1       //   A0=1;
 135   1      //	D12_COMMAND = bEndp;
 136   1          outportb(D12_COMMAND,bEndp);
 137   1      //    A0=0;
 138   1      //	c = D12_DATA;
 139   1          c=inportb(D12_DATA);
 140   1      
 141   1      	if(bEPPflags.bits.in_isr == 0)
 142   1      		ENABLE;
 143   1      
 144   1      	return c;
 145   1      }
 146          
 147          unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
 148          {
 149   1      //    A0=1;
 150   1      //	D12_COMMAND = 0x40 + bEndp;
 151   1          outportb(D12_COMMAND,0x40+bEndp);
 152   1      //    A0=0;
 153   1      	//return D12_DATA;
 154   1          return inportb(D12_DATA);
 155   1      }
 156          
 157          /*
 158          unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
 159          {
 160          	unsigned char c;
 161          
 162          	if(bEPPflags.bits.in_isr == 0)
 163          		DISABLE;
 164          
 165          	D12_COMMAND = 0x40 + bEndp;
 166          	c = D12_DATA;
 167          
 168          	if(bEPPflags.bits.in_isr == 0)
 169          		ENABLE;
 170          
 171          	return c;
 172          }
 173          */
 174          
 175          void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
 176          {
 177   1      	if(bEPPflags.bits.in_isr == 0)
 178   1      		DISABLE;
 179   1       //   A0=1;
C51 COMPILER V6.12  D12CI                                                                  12/16/2004 15:21:56 PAGE 4   

 180   1      //	D12_COMMAND = 0x40 + bEndp;
 181   1       //   A0=0;
 182   1      //	D12_DATA = bStalled;
 183   1          outportb(D12_COMMAND,0x40+bEndp);
 184   1          outportb(D12_DATA,bStalled);
 185   1      
 186   1      	if(bEPPflags.bits.in_isr == 0)
 187   1      		ENABLE;
 188   1      }
 189          
 190          /*
 191          void D12_SendResume(void)
 192          {
 193          	D12_COMMAND = 0xF6;
 194          }
 195          
 196          
 197          unsigned short D12_ReadCurrentFrameNumber(void)
 198          {
 199          	unsigned short i,j;
 200          
 201          	if(bEPPflags.bits.in_isr == 0)
 202          		DISABLE;
 203          
 204          	D12_COMMAND = 0xF5;
 205          	i = D12_DATA;
 206          	j = D12_DATA;
 207          
 208          	i += (j<<8);
 209          
 210          	if(bEPPflags.bits.in_isr == 0)
 211          		ENABLE;
 212          
 213          	return i;
 214          }
 215          */
 216          /*
 217          unsigned short D12_ReadChipID(void)
 218          {
 219          	unsigned short i,j;
 220          
 221          	if(bEPPflags.bits.in_isr == 0)
 222          		DISABLE;
 223          
 224          	outportb(portbase+D12_COMMAND, 0xFD);
 225          	i=inportb(portbase+D12_DATA);
 226          	j=inportb(portbase+D12_DATA);
 227          	i += (j<<8);
 228          
 229          	if(bEPPflags.bits.in_isr == 0)
 230          		ENABLE;
 231          
 232          	return i;
 233          }
 234          */
 235          
 236          unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
 237          {
 238   1      	unsigned char i, j;
 239   1      
 240   1      	if(bEPPflags.bits.in_isr == 0)
 241   1      		DISABLE;
C51 COMPILER V6.12  D12CI                                                                  12/16/2004 15:21:56 PAGE 5   

 242   1      //    A0=1;
 243   1      //	D12_COMMAND = endp;
 244   1      //    A0=0;
 245   1      //	i=D12_DATA;
 246   1          outportb(D12_COMMAND,endp);
 247   1          i=inportb(D12_DATA);
 248   1      	if((i & D12_FULLEMPTY) == 0)
 249   1          {
 250   2      		if(bEPPflags.bits.in_isr == 0)
 251   2      			ENABLE;
 252   2      		return 0;
 253   2      	}
 254   1       //   A0=1;
 255   1      //	D12_COMMAND = 0xF0;

⌨️ 快捷键说明

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