亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? MSP430F1611U盤數據讀寫 通過調試
?? C
字號:
// 單片機與CH375波特率100000,單片機與PC機波特率115200
//實測:向U盤寫1M字節數據用1分鐘,從U盤讀1M字節數據用14秒
#include  "USB.h"
struct USBAtt USBAtt1;//定義存儲U盤基本信息的結構體
extern struct USBAtt USBAtt2;//返回U盤基本信息的結構體
unsigned char *mBufferPoint;
int uu,clu_end;
unsigned long filenam;
unsigned long f,clu_sta,kkkk;
unsigned int q3,q4,jj;
//unsigned char __flash ABC[3]={0x01,0x02,0x03};
/************************************************************************
給定簇號,轉換為該簇對應的起始LBA號
************************************************************************/
unsigned long CLUtoLBA(int iCluster)
{
  unsigned long lba;
  lba = USBAtt1.DiskStart + USBAtt1.RsvdSecCnt + USBAtt1.FATz16*2 + 32 + ((unsigned long)(iCluster - 2)) * USBAtt1.SecPerClus;
  return  lba;
}
/************************************************************************
給定扇區號,起始位置,結束位置,讀出其數據
************************************************************************/
void RLBAFroTo(unsigned long LBA,int Start,int End,unsigned char *mBufferPoint)
{
  unsigned char rBuffer[512];
  int i;
  mReadSector( LBA, 1,rBuffer );
  for(i=Start;i<End+1;i++)
  {
    *mBufferPoint = rBuffer[i];  /* 將數據讀出 */
     mBufferPoint ++;
  }  
}
/************************************************************************
給定扇區號,起始位置,結束位置,將數據通過串口發送給計算機
************************************************************************/
void RLBAFroToPC(unsigned long LBA,int Start,int End)
{
  unsigned char rBuffer[512];
  int i;
  mReadSector( LBA, 1,rBuffer );
  for(i=Start;i<End+1;i++)
  {
     TXBUF1=rBuffer[i];
     while((IFG2&UTXIFG1)==0);//判斷是否發送完畢
     mBufferPoint ++;
  }  
}
/************************************************************************
給定起始扇區號,結束扇區號,將數據通過串口發送給計算機
************************************************************************/
void SeToSePC(unsigned long Start,unsigned long End)
{
  unsigned long i;
  int j;
  unsigned char temp[512];
  unsigned char *tP;
  for(i=Start;i<=End;i++)
  {
    tP = temp;  // 指向緩沖區起始地址
    while(mReadSector(i,1,temp)!=0); 
    for(j=0;j<512;j++)
   {
     TXBUF1=temp[j];
     while((IFG2&UTXIFG1)==0);//判斷是否發送完畢
   }    
  }
}   
/************************************************************************
給定簇號,將整簇數據通過串口發送給計算機
************************************************************************/
void CluToPC(int Clu)
{
  unsigned long LBAStart;
  unsigned long LBAEnd ;
  LBAStart = CLUtoLBA(Clu);
  LBAEnd = USBAtt1.SecPerClus +  LBAStart - 1;
  SeToSePC(LBAStart,LBAEnd);  
}
/************************************************************************
給定簇號,返回其鏈接簇號
************************************************************************/
unsigned long LinkClu(int Clu)
{
  int lk,h;
  unsigned char d[512];
  mReadSector((int)((Clu/256)+ USBAtt1.FAT1Start),1,d);
  h = 2 * (int)(Clu % 256);
  lk = d[h] | (d[h+1]<<8);
  if(lk == 0) {return 65539;}//未分配
  if(lk>=0xfff0 && lk<=0xfff6) {return 65538;}//保留
  if(lk>=0x01 && lk<=0xffef) {return lk;}//正常
  if(lk==0xfff7) {return 65537;}//壞簇
  if(lk>=0xfff8 && lk<=0xffff) return 65536;//文件結束簇
}
/************************************************************************
在FAT表中找到第一個空簇,返回其簇號
************************************************************************/
int FirstEmClu()
{
  unsigned char rBuffer[512];
  int i,j;
  for(i = 1;i<=USBAtt1.FATz16;i++)
   {
     mReadSector( USBAtt1.FAT1Start+(i-1), 1,rBuffer );
     for(j=0;j<512;j=j+2)
     {
       if(( rBuffer[j] | rBuffer[j+1]<<8 )==0)  {return  256 * (i-1) + j/2;break;}
     }
   }  
}
/************************************************************************
建立一個文件(大小1簇),文件屬性,
p 中存放文件屬性的32字節
************************************************************************/
void Create_NewFile(unsigned char *p)
{
  int a,i,j,k,nft,nw,q;
  unsigned char rBuffer[512];
  unsigned char q1,q2;
  unsigned long filename;
  a=FirstEmClu();//在FAT表中找到第一個空簇,返回其簇號

  q2 = (unsigned char)(a/100); 
  q1 = (unsigned char)(a - q2*100);
  q =USBAtt1.PerByteSec * USBAtt1.SecPerClus;
  
  q3 = (q>>8) | 0x00ff; 
  q4 = 0x00ff | q; 
  for(i=1;i<=USBAtt1.NumIndex * 32/512;i++)
  {
    mReadSector( USBAtt1.FDTStart+(i-1), 1,rBuffer );
    for(j=0;j<512;j=j+32)
    {
      if(rBuffer[j] == 0 || rBuffer[j] == 0xE5)  
      {        
        for(k = j;k<=j+31;k++)
        {
          rBuffer[k] = *p;
          *p++;
        }
          rBuffer[j + 26] = q1;
          rBuffer[j + 27] = q2;  
          rBuffer[j + 28] = 0;
          rBuffer[j + 29] = 0x10;
          rBuffer[j + 30] = 0;
          rBuffer[j + 31] = 0;
          mWriteSector( USBAtt1.FDTStart + i -1, 1 ,rBuffer);
          goto  CB;
      }
    }
  } 
CB: 
  nft = (int)(a/256); nw = (int)(a%256);
  mReadSector(USBAtt1.FAT1Start + nft,1,rBuffer);
  rBuffer[2*nw] = 0xff;
  rBuffer[2*nw+1] = 0xff;
  mWriteSector(USBAtt1.FAT1Start + nft,1,rBuffer);
  mWriteSector(USBAtt1.FAT2Start + nft,1,rBuffer);  
}
/************************************************************************
得到指定文件名的首簇號及大小(以簇為單位)
返回long型數據,其中低2字節為首簇號,高2字節為大小(簇)
************************************************************************/
unsigned long Findfileatt(unsigned  char *p)
{
  int a,b,c,i,j,d;
  float e;
  unsigned long l,l1,l2;
  unsigned char buff[512];
  a=FirstEmClu();//得出第一個空簇號
  for(i=1;i<=USBAtt1.NumIndex * 32/512;i++)
  {
    mReadSector( USBAtt1.FDTStart+i-1, 1,buff );
    for(j=0;j<512;j=j+32)
    {
      if(buff[0+j]==*p && buff[1+j]==*(p+1) && buff[2+j]==*(p+2) && buff[3+j]==*(p+3) 
         && buff[4+j]==*(p+4) && buff[5+j]==*(p+5) && buff[6+j]==*(p+6) && buff[7+j]==*(p+7)
         && buff[8+j]==*(p+8) && buff[9+j]==*(p+9) && buff[10+j]==*(p+10))
      {
        b = buff[26+j] | (buff[27+j]<<8);
        d = (buff[28+j] | (buff[29+j]<<8) | (buff[30+j]<<16) | (buff[31+j]<<24))%(USBAtt1.PerByteSec * USBAtt1.SecPerClus);
        e = (buff[28+j] | (buff[29+j]<<8) | (buff[30+j]<<16) | (buff[31+j]<<24))/(USBAtt1.PerByteSec * USBAtt1.SecPerClus);
        if( d!= 0)
        {
          c=(int)e + 1;
        }
        else 
          c=(int)e;
 
        l1 = (0x0000ffff & b);
        l2 = (0x0000ffff & (unsigned long)c)<<16;
        l = l1 + l2;
        return l;       
      }
    }
  }
}
/************************************************************************
得到指定文件名的最后簇號
************************************************************************/
int FindFinalclu(unsigned  char *p) 
{
  int a,b;
  unsigned char buffer[512],c1,c2;
  a = Findfileatt(p) & 0x0000ffff;  
  while(1)
  {
    mReadSector( USBAtt1.FAT1Start + (int)(a/256), 1 , buffer );  
    c1=buffer[2*(int)(a%256)];c2=buffer[2*(int)(a%256)+1];
    b = c1 | c2<<8;
    if(b == 0xffff)
    {
      return a;
      break;
    }
    else
    {
      a = b;
       break;
    }
  }    
}
/************************************************************************
將指定文件的大小增加1簇
*p指向文件名的數組,11個元素
************************************************************************/
unsigned long AddoneClu(unsigned  char *p,int finaclu)
{
  int empclu,i,j;
  unsigned char buffer[512];
  unsigned long d,e;
  
 // finaclu = FindFinalclu(p);
  empclu =FirstEmClu();
  
  
  mReadSector( USBAtt1.FAT1Start + (int)(empclu/256), 1 , buffer );
  buffer[2*(int)(empclu % 256)] = 0xff;
  buffer[2*(int)(empclu % 256)+1] = 0xff;  
  mWriteSector( USBAtt1.FAT1Start + (int)(empclu/256), 1 , buffer );//空簇寫入ffff
  mWriteSector( USBAtt1.FAT2Start + (int)(empclu/256), 1 , buffer );//空簇寫入ffff
  
  
  mReadSector( USBAtt1.FAT1Start + (int)(finaclu/256), 1 , buffer );
  buffer[2*(int)(finaclu % 256)] = (unsigned char)(empclu & 0x00ff);
  buffer[2*(int)(finaclu % 256)+1] = (unsigned char)((0xff00 & empclu) >> 8);
  mWriteSector( USBAtt1.FAT1Start + (int)(finaclu/256), 1 , buffer );  
  mWriteSector( USBAtt1.FAT2Start + (int)(finaclu/256), 1 , buffer ); 
  
  for(i=1;i<=USBAtt1.NumIndex * 32/512;i++)
  {
    mReadSector( USBAtt1.FDTStart+i-1, 1,buffer );
    for(j=0;j<512;j=j+32)
    {
       if(buffer[0+j]==*p && buffer[1+j]==*(p+1) && buffer[2+j]==*(p+2) && buffer[3+j]==*(p+3) 
         && buffer[4+j]==*(p+4) && buffer[5+j]==*(p+5) && buffer[6+j]==*(p+6) && buffer[7+j]==*(p+7)
         && buffer[8+j]==*(p+8) && buffer[9+j]==*(p+9) && buffer[10+j]==*(p+10))
      {
       d = (unsigned long)buffer[28+j] | (unsigned long)(buffer[29+j]<<8) | (unsigned long)(buffer[30+j]<<16) | (unsigned long)(buffer[31+j]<<24);
       e = d + (USBAtt1.PerByteSec * USBAtt1.SecPerClus);  
        buffer[28+j] = (unsigned char)(e & 0x000000ff);
        buffer[29+j] = (unsigned char)((e>>8) & 0x000000ff);
        buffer[30+j] = (unsigned char)((e>>16) & 0x000000ff);
        buffer[31+j] = (unsigned char)((e>>24) & 0x000000ff);
        mWriteSector( USBAtt1.FDTStart+i-1, 1 ,buffer);
        return 1; 
      }          
      
    }
  
}
}
/************************************************************************
主函數
************************************************************************/
void main(void)
{                            //i   i     l     e                             T      X     T   檔案位 
  unsigned char fileatt[32]={0x73,0x61,0x76 ,0x65 ,0x20 ,0x20 ,0x20, 0x20 ,0x54 ,0x58, 0x54 ,0x00 ,0x0 ,0x0 ,0x0 ,0x0, 0x0 ,0x0, 0x0, 0x0 ,0x0 ,0x0 ,0x96, 0x9d,0x21 ,0x31,0x01,0x50,0,0,0x10,0};
  unsigned char filename[11] = {'S','A','V','E',0x20,0x20,0x20,0x20,'T','X','T'};
  unsigned char DATA[512]={0xd6,0xf7,0xba,0xaf ,0xca ,0xfd ,0xcb, 0xb5 ,0xc3 ,0xf7};

  unsigned int o,i;
  
  P4DIR|=BIT0+BIT4;
  P4OUT=0;

  SysInit();       /**系統初始化**/ 
  HardwareRst();   /**硬件復位CH375**/ 
  Reset375();     /** 軟件復位CH375**/ 
  while(Test375()==0)    /** 測試CH375工作狀態,若不正常則LED3閃爍**/
  {
   LED3glitter();
  }   
  Set375Band();    /**重新設置CH375的波特率10000**/ 
  McuBChange();   /**單片機波特率改變10000**/  
  while(Test375()==0)   /** 測試CH375工作狀態,若不正常則LED3閃爍**/
  {
   LED3glitter();
  }    
  while(WRCD375(CMD_SET_USB_MODE,0x06)!=0x51)    /**設置USB工作模式,若不正常則LED5閃爍**/
  {
    LED5glitter();   //LED5閃爍
  }
   mDelaymS(100);  
  while(ReadP10()==1)   /* LED3\5交替閃爍,說明在等待U盤連接*/
  {
    LED53glitter();   //交替閃爍
  }  
  while( WRC375(CMD_GET_STATUS) != USB_INT_CONNECT )   /* LED3\5同時閃爍則說明連接不成功*/
  {
    LED35glitter();   //同時閃爍
  }
  while(USBInit()==0)    /*初始化U盤 ,若不成功,則LED3快閃*/
  {
    LED3kglitter();   //LED3快閃
  }   
  USBAtt1 = AcquireAtt();   /*獲取U盤基本屬性*/
 
   Create_NewFile(fileatt);
   mWriteSector( USBAtt1.FDTStart,1,fileatt);
   
  jj = Findfileatt(fileatt)&0xffff;//clu_sta 先找文件的首簇號
  kkkk  = CLUtoLBA(jj);//20481  轉化成起始扇區號
  for(i=0;i<16;i++)
  {
  mWriteSector( kkkk, 128 ,DATA);
  kkkk++;
  }
  while(1)
  {    
    LED3355kglitter();
  }
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲精品精华液| 国产一区二区三区蝌蚪| 久久激情五月婷婷| 91网站最新网址| 精品免费视频一区二区| 亚洲精品中文字幕乱码三区| 极品美女销魂一区二区三区免费| 91丨porny丨蝌蚪视频| 2020国产精品| 老色鬼精品视频在线观看播放| 日本韩国视频一区二区| 国产精品区一区二区三区| 免费观看日韩电影| 欧美日韩精品一二三区| 亚洲精品中文字幕乱码三区| 国产91精品入口| 2020国产成人综合网| 奇米影视一区二区三区小说| 欧美中文字幕一区二区三区亚洲| 国产精品国产三级国产有无不卡 | 欧美一级爆毛片| 亚洲欧美一区二区三区孕妇| 国产99精品视频| 精品粉嫩超白一线天av| 麻豆精品久久久| 欧美一级艳片视频免费观看| 亚洲成人自拍偷拍| 欧美日韩精品一区二区| 一区二区三区日韩精品视频| 91蜜桃网址入口| 亚洲欧美另类小说视频| 色综合中文综合网| 国产精品毛片高清在线完整版| 国产精品综合二区| 国产日韩欧美电影| 成a人片亚洲日本久久| 中文字幕一区二区不卡 | 久久男人中文字幕资源站| 免费日本视频一区| 精品国产污网站| 国产成人亚洲精品狼色在线| 国产欧美一区二区三区沐欲| 国产不卡一区视频| 国产精品久久三区| 91豆麻精品91久久久久久| 香蕉av福利精品导航| 91精品国模一区二区三区| 老色鬼精品视频在线观看播放| 日韩欧美国产精品一区| 国产精品一级黄| 亚洲色欲色欲www在线观看| 在线免费观看日本欧美| 日韩黄色小视频| 久久久久久一级片| 色天使色偷偷av一区二区| 亚洲国产精品欧美一二99| 91精品啪在线观看国产60岁| 国产一区二区调教| 亚洲三级在线播放| 这里只有精品99re| 国产成人综合在线观看| 亚洲精品国产无天堂网2021| 欧美美女直播网站| 国产99久久久国产精品潘金| 一区二区三区蜜桃| 日韩亚洲欧美高清| 99久久久精品| 久久99这里只有精品| 亚洲欧洲精品天堂一级| 欧美精品第一页| 成人免费视频播放| 日韩av电影一区| 国产精品久久久久久久久果冻传媒| 欧美视频日韩视频| 国产黄色91视频| 视频一区欧美日韩| 综合久久久久久| 欧美xxx久久| 欧美视频你懂的| 成人免费福利片| 久久69国产一区二区蜜臀| ●精品国产综合乱码久久久久| 日韩免费观看2025年上映的电影| 99精品视频在线免费观看| 美女一区二区在线观看| 亚洲综合在线五月| 日本一区二区三区四区在线视频 | av资源网一区| 久久99精品国产.久久久久久| 亚洲制服丝袜在线| 中文字幕在线一区| 精品91自产拍在线观看一区| 精品视频免费在线| 日本伦理一区二区| 成人免费视频视频| 国产精选一区二区三区| 日韩黄色片在线观看| 一区二区免费在线| 136国产福利精品导航| 久久久影院官网| 日韩欧美一二三四区| 欧美体内she精高潮| 色香色香欲天天天影视综合网| 国产不卡在线视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美激情一区二区三区全黄| 精品国产免费久久| 欧美一级专区免费大片| 欧美日韩国产影片| 欧美美女直播网站| 欧美日韩一级黄| 欧美日韩精品一区二区天天拍小说| 91美女视频网站| 成人国产免费视频| 成人av电影在线观看| av在线不卡电影| 91麻豆免费在线观看| av激情成人网| 一本一道波多野结衣一区二区| www.欧美色图| 91九色最新地址| 欧美吻胸吃奶大尺度电影| 欧美午夜精品久久久| 欧美精品高清视频| 日韩欧美成人一区| 久久久久久久久久久久久久久99| 久久久久99精品国产片| 国产欧美综合在线观看第十页| 国产精品情趣视频| 亚洲精品欧美专区| 天堂蜜桃一区二区三区| 激情综合色丁香一区二区| 国产一区二区视频在线| 成人国产亚洲欧美成人综合网| 色综合久久中文字幕| 欧美浪妇xxxx高跟鞋交| 精品国产精品网麻豆系列| 国产精品视频你懂的| 亚洲美女在线国产| 日韩高清国产一区在线| 国产一二精品视频| 色狠狠色噜噜噜综合网| 91精品综合久久久久久| 国产婷婷色一区二区三区在线| 国产精品美女久久久久av爽李琼 | 99国产精品久久久| 欧美日韩一区二区三区免费看| 日韩午夜激情av| 国产精品国产三级国产aⅴ中文| 亚洲精品高清视频在线观看| 免费高清视频精品| av中文字幕一区| 日韩欧美国产麻豆| 亚洲男人的天堂av| 久久不见久久见免费视频1| 99在线热播精品免费| 欧美一区二区三区日韩| 国产精品欧美一区二区三区| 日本欧美一区二区三区乱码| 国产a级毛片一区| 91精品国产91久久综合桃花| 国产精品免费久久久久| 日本成人超碰在线观看| 99精品国产热久久91蜜凸| 日韩视频永久免费| 一区二区三区高清在线| 国产麻豆精品久久一二三| 欧美亚男人的天堂| 国产精品美女一区二区三区| 奇米色777欧美一区二区| 91丨九色丨国产丨porny| wwwwxxxxx欧美| 视频一区在线播放| 91久久国产综合久久| 国产女人水真多18毛片18精品视频 | 亚洲成人av在线电影| 99久久精品99国产精品| 日韩欧美国产麻豆| 日韩福利视频导航| 欧美图区在线视频| 亚洲免费观看高清完整版在线观看熊| 国内欧美视频一区二区| 在线不卡中文字幕| 亚洲综合一区在线| 91一区二区三区在线观看| 久久久久久久久伊人| 久久精品国产网站| 制服丝袜日韩国产| 偷拍日韩校园综合在线| 欧美午夜寂寞影院| 亚洲最新视频在线播放| 色综合色综合色综合色综合色综合| 欧美国产日韩精品免费观看| 国产高清成人在线| 国产夜色精品一区二区av| 国产馆精品极品| 国产欧美日韩精品a在线观看| 国产精品正在播放| 久久久久久久综合日本| 国产一区二区不卡在线|