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

📄 hpi.lst

📁 ms51 控制sl811读写u盘的源程序 及 原理图 可仿真试一下
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V6.20c  HPI                                                                   08/21/2003 22:51:03 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE HPI
OBJECT MODULE PLACED IN HPI.OBJ
COMPILER INVOKED BY: E:\WIN98\HARDWARE\KEILC\C51\BIN\C51.EXE HPI.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "common.h"
   2          #include "TPBULK.H"
   3          #include "HPI.H"
   4          #include "HAL.H"
   5          #include "Fat.h"
   6          
   7          extern XXGFLAGS bdata bXXGFlags;
   8          extern unsigned char xdata DBUF[BUFFER_LENGTH];
   9          //////////////////////////////////////////
  10          //UART_CMD_BLOCK xdata inblock;
  11          unsigned char xdata UARTBUF[UARTBUF_LENGTH];
  12          SYS_INFO_BLOCK xdata DeviceInfo;
  13          UART_CMD_BLOCK xdata UartCmdBlock;
  14          UART_RSP_BLOCK xdata UartRspBlock;
  15          FILE_INFO xdata ThisFile;
  16          extern FREE_FAT_INFO xdata FreeFat;
  17          //////////////////////////////////////////
  18          void UartSendRsp(void)
  19          {
  20   1      	unsigned int i;
  21   1      	unsigned char *pBuf=(unsigned char *)&UartRspBlock;
  22   1      	for(i=0;i<64;i++)
  23   1      		ComSendByte(*(pBuf+i));
  24   1      	if(UartRspBlock.len!=0){
  25   2      		for(i=0;i<UartRspBlock.len;i++)
  26   2      			ComSendByte(*(UartRspBlock.pbuffer+i));
  27   2      	   }
  28   1      }
  29          
  30          unsigned char UartHandler(void)
  31          {
  32   1        unsigned char retStatus;
  33   1        unsigned int len;
  34   1        unsigned long pointer;
  35   1        //unsigned char *pBuf=(unsigned char *)&UartRspBlock;
  36   1      
  37   1        //for(i=0;i<64;i++)
  38   1      	//*(pBuf+i)=0;
  39   1         //UartRspBlock.result=1;
  40   1         UartRspBlock.errcode=ERC_OK;
  41   1         UartRspBlock.len=0;
  42   1         ///////////////////////////
  43   1        switch(UartCmdBlock.cmd)
  44   1        {
  45   2          case CMD_RESET:
  46   2          
  47   2          	break;
  48   2          case CMD_DETECT_DEVICE:
  49   2          	ThisFile.bFileOpen=0;	
  50   2          	retStatus=DetectDevice();
  51   2          	UartRspBlock.cmd=CMD_DETECT_DEVICE_RSP;
  52   2          	break;
  53   2          case CMD_OPEN_FILE:
  54   2          	retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename);
  55   2          	UartRspBlock.cmd=CMD_OPEN_FILE_RSP;
C51 COMPILER V6.20c  HPI                                                                   08/21/2003 22:51:03 PAGE 2   

  56   2          	break;
  57   2          case CMD_CREATE_FILE:
  58   2          	
  59   2          	retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename);
  60   2          	if(UartRspBlock.errcode==ERC_FILENOTFOUND)
  61   2          		{	
  62   3      	    	retStatus=CreateFile(UartCmdBlock.CmdBlock.Cmd_CreateFile.item);
  63   3          		}
  64   2          	UartRspBlock.cmd=CMD_CREATE_FILE_RSP;
  65   2          	break;
  66   2          case CMD_READ_FILE:
  67   2          	len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_ReadFile.readLength);
  68   2      	retStatus=ReadFile(len,UARTBUF);
  69   2          	UartRspBlock.cmd=CMD_READ_FILE_RSP;
  70   2          	break;
  71   2          case CMD_WRITE_FILE:
  72   2          	len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_WriteFile.writeLength);
  73   2          	retStatus=WriteFile(len,UARTBUF);
  74   2          	UartRspBlock.cmd=CMD_WRITE_FILE_RSP;
  75   2          	break;
  76   2          
  77   2          case CMD_LIST:
  78   2          	ThisFile.bFileOpen=0;	
  79   2          	retStatus=List();
  80   2          	UartRspBlock.cmd=CMD_LIST_RSP;
  81   2          	break;
  82   2          case CMD_REMOVE_FILE:
  83   2          	ThisFile.bFileOpen=0;	
  84   2          	retStatus=RemoveFile(UartCmdBlock.CmdBlock.Cmd_RemoveFile.filename);
  85   2          	UartRspBlock.cmd=CMD_REMOVE_FILE_RSP;
  86   2          	break;
  87   2          case CMD_GET_CAPACITY:
  88   2          	ThisFile.bFileOpen=0;	
  89   2          	retStatus=GetCapacity();
  90   2          	UartRspBlock.cmd=CMD_GET_CAPACITY_RSP;
  91   2          	break;
  92   2          case CMD_GET_FREE_CAPACITY:
  93   2          	ThisFile.bFileOpen=0;	
  94   2          	retStatus=GetFreeCapacity();
  95   2          	UartRspBlock.cmd=CMD_GET_FREE_CAPACITY_RSP;
  96   2          	break;
  97   2          case CMD_SET_FILE_POINTER:
  98   2      	pointer=SwapINT32(UartCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer);
  99   2      	retStatus=SetFilePointer(pointer);  
 100   2      	UartRspBlock.cmd=CMD_SET_FILE_POINTER_RSP;  	
 101   2          	break;
 102   2          case CMD_GET_VERSION:
 103   2      	ThisFile.bFileOpen=0;
 104   2      	retStatus=GetFirmwareVersion();   
 105   2      	UartRspBlock.cmd=CMD_GET_VERSION_RSP; 
 106   2          	break;
 107   2          default:
 108   2          	bXXGFlags.bits.bCOM_ERR=1;
 109   2          	return FALSE;
 110   2        }
 111   1        
 112   1        ///////////////////////////////
 113   1        UartRspBlock.result=retStatus;
 114   1        UartRspBlock.pbuffer=UARTBUF;
 115   1        UartSendRsp();
 116   1        return TRUE;
 117   1        //return retStatus;
C51 COMPILER V6.20c  HPI                                                                   08/21/2003 22:51:03 PAGE 3   

 118   1      }
 119          unsigned char DetectDevice(void)
 120          {
 121   1      #define RspBlockDetectDevice UartRspBlock.RspBlock.Rsp_DetectDevice
 122   1      	return bXXGFlags.bits.SLAVE_IS_ATTACHED;
 123   1      	
 124   1      #undef RspBlockDetectDevice
 125   1      }
 126          
 127          unsigned char List(void)
 128          {
 129   1      #define RspBlockList UartRspBlock.RspBlock.Rsp_List
 130   1      	unsigned int item,i;
 131   1      	unsigned char j,k,bstop,sector;
 132   1      	//RspBlockList.errcode=ERC_NODEVICE;
 133   1      	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
 134   1      	{
 135   2      	UartRspBlock.errcode=ERC_NODEVICE;
 136   2      	return FALSE;		
 137   2      	}
 138   1      	///////////////////////////////////////////////////////////
 139   1      	item=0;
 140   1      	bstop=0;
 141   1      	//RspBlockList.result=0x1;
 142   1      	for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
 143   1      	    {   
 144   2      		//////////////////////////////////////////////////
 145   2      		if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
 146   2      			{
 147   3      			//item=0;
 148   3      			UartRspBlock.errcode=ERC_DEVICEERR;
 149   3      			return FALSE;			
 150   3      			}
 151   2      		///////////////////////////////////////////////////
 152   2      		for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
 153   2      			{
 154   3      			if(DBUF[i]==0x00)
 155   3      				{bstop=1;
 156   4      				break;}
 157   3      			else if(DBUF[i]==0xE5)
 158   3      				continue;
 159   3      			else if((DBUF[i]&0x40==0x40)&&(DBUF[i+11]==0xff))
 160   3      				{
 161   4      				j=DBUF[i]&0x0F;
 162   4      				j=j+1;
 163   4      				for(k=0;k<j*32;k++)
 164   4      					UARTBUF[item*32+k]=DBUF[i+k];
 165   4      				i=i+(j-1)*32;
 166   4      				item=item+j;
 167   4      				}
 168   3      			else
 169   3      				{
 170   4      				for(k=0;k<32;k++)
 171   4      					UARTBUF[item*32+k]=DBUF[i+k];
 172   4      				item=item+1;
 173   4      				}
 174   3      			}
 175   2      		///////////////////////////////////////////////////////
 176   2      		if(bstop==1)break;
 177   2      		
 178   2      	    }
 179   1      		
C51 COMPILER V6.20c  HPI                                                                   08/21/2003 22:51:03 PAGE 4   

 180   1      	//pBuf=(PREAD_CAPACITY_RSP)DBUF;
 181   1      	///////////////////////////////////////////
 182   1      	RspBlockList.len=SwapINT16(item*32);
 183   1      	UartRspBlock.len=item*32;
 184   1      	return TRUE;
 185   1      	
 186   1      #undef RspBlockList
 187   1      
 188   1      }
 189          unsigned char OpenFile(unsigned char *pBuffer)
 190          {
 191   1      #define RspBlockOpenFile UartRspBlock.RspBlock.Rsp_OpenFile
 192   1      	unsigned int i;
 193   1      	unsigned char j,bstop,sector;
 194   1      	PDIR_INFO pDirInfo;
 195   1      	
 196   1      	if(!bXXGFlags.bits.SLAVE_IS_ATTACHED)
 197   1      	{
 198   2      	UartRspBlock.errcode=ERC_NODEVICE;
 199   2      	return FALSE;		
 200   2      	}
 201   1      	///////////////////////////////////////////////////////////
 202   1      	
 203   1      	ThisFile.bFileOpen=0;
 204   1      	//RspBlockOpenFile.result=0x0;
 205   1      	//RspBlockOpenFile.errcode=ERC_OK;
 206   1      	for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++)
 207   1      	    {   
 208   2      		//////////////////////////////////////////////////
 209   2      		if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF))
 210   2      			{
 211   3      			UartRspBlock.errcode=ERC_DEVICEERR;
 212   3      			return FALSE;	
 213   3      			
 214   3      			}
 215   2      		///////////////////////////////////////////////////
 216   2      		for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32)
 217   2      			{
 218   3      			if(DBUF[i]==0x00)
 219   3      				{
 220   4      				UartRspBlock.errcode=ERC_FILENOTFOUND;
 221   4      				//UartRspBlock.errcode=ERC_DEVICEERR;
 222   4      				return FALSE;	
 223   4      				}
 224   3      			///////////////////////////////////////////
 225   3      			j=0;
 226   3      			while(DBUF[i+j]==*(pBuffer+j))
 227   3      				{
 228   4      				 j=j+1;
 229   4      				 if(j>10)
 230   4      				 	break;
 231   4      				}
 232   3      			
 233   3      			if(j>10)
 234   3      			    {
 235   4      			    for(j=0;j<32;j++)
 236   4      			    	RspBlockOpenFile.item[j]=DBUF[i+j];
 237   4      			    //RspBlockOpenFile.result=0x1;
 238   4      			    ThisFile.bFileOpen=1;
 239   4      			    bstop=1;
 240   4      			     break;}
 241   3      			
C51 COMPILER V6.20c  HPI                                                                   08/21/2003 22:51:03 PAGE 5   

 242   3      			}
 243   2      		///////////////////////////////////////////////////////
 244   2      		if(bstop==1)break;
 245   2      		///////////////////////////////////////////////////////
 246   2      		//if(DeviceInfo.BPB_RootEntCnt)
 247   2      		
 248   2      	    }
 249   1      	    
 250   1      	    if(sector>=DeviceInfo.BPB_RootEntCnt)
 251   1      	    	{
 252   2      	    	UartRspBlock.errcode=ERC_FILENOTFOUND;
 253   2      	    	//UartRspBlock.errcode=ERC_DEVICEERR;
 254   2      		return FALSE;		
 255   2      	    	}
 256   1      	////////////////////////////////////////////
 257   1      	pDirInfo=(PDIR_INFO)RspBlockOpenFile.item;
 258   1      	ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster);
 259   1      	ThisFile.LengthInByte=SwapINT32(pDirInfo->length);
 260   1      	ThisFile.ClusterPointer=ThisFile.StartCluster;
 261   1      	ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.StartCluster);
 262   1      	ThisFile.OffsetofSector=0;
 263   1      	ThisFile.SectorofCluster=0;
 264   1      	//=ThisFatSecNum(clusterNum);
 265   1      	//xxgFatEntOffset=ThisFatEntOffset(clusterNum);
 266   1      	ThisFile.FatSectorPointer=0;
 267   1      	//ThisFile.bFileOpen=1;
 268   1      	ThisFile.pointer=0;
 269   1      	///////////////////////////////////////////
 270   1      	FreeFat.SectorNum=DeviceInfo.FatStartSector;
 271   1      	FreeFat.OldSectorNum=DeviceInfo.FatStartSector;
 272   1      	FreeFat.OffsetofSector=2;
 273   1      	
 274   1      	return TRUE;
 275   1      #undef RspBlockOpenFile
 276   1      }
 277          
 278          unsigned char ReadFile(unsigned int readLength,unsigned char *pBuffer)
 279          {
 280   1      #define RspBlockReadFile UartRspBlock.RspBlock.Rsp_ReadFile
 281   1      	unsigned int idata len,i;
 282   1      	unsigned char bSuccess;
 283   1      	//unsigned char sector;
 284   1      	//unsigned long lba;
 285   1      	

⌨️ 快捷键说明

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