<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機硬盤控制電路以及源程序

          51單片機硬盤控制電路以及源程序

          作者: 時間:2012-10-12 來源:網(wǎng)絡(luò) 收藏

          #include at89x51.h>

          /**************************************************
          * HardDisk Control Demo
          * Power BY DDDLZHU
          * 編譯環(huán)境 : KEIL C51 V7.07 支持器件 : AT89C51
          * COPYRIGHT (C) 2004

          ***************************************************/

          #define byte unsigned char
          #define uint unsigned int
          /*************************************************
          //線路連接定義。如電路有變直接修改就可以了
          *************************************************/

          #define DataH P1
          #define DataL P0
          #define RegAddr P2
          #define Read P3_4
          #define Write P3_3
          #define Rst P3_2

          /*************************************************
          //線路連接定義。如電路有變直接修改就可以了
          *************************************************/

          //地址定義
          #define _Status_Control 0x16
          #define _Data 0x8
          #define _Err_Features 0x9
          #define _SecCount 0xa
          #define _SecNum 0xb
          #define _CylinderL 0xc
          #define _CylinderH 0xd
          #define _DeviceAndHead 0xe
          #define _Status_Command 0xf

          //******************************************************/
          /*這里為初始化硬盤的重要參數(shù),每個硬盤的參數(shù)都不盡相同。若不正確則讀不了盤中的數(shù)據(jù)。計算方法如下:
          先看清楚你的 硬盤表面標(biāo)簽中的數(shù)據(jù),里面有三個重要參數(shù):
          1。柱面數(shù)(Cylinder)
          2。磁頭數(shù)(Head)
          3。磁道數(shù)(Sector)
          其中 _MaxHead=0xA+Head
          _MaxSector=Sector
          例如我的130M硬盤(很老吧,哈哈),磁頭數(shù)為15,十六進(jìn)制為0xf,所以_MaxHead=0xAF,磁道數(shù)為17,所以_MaxSector=0x11
          */
          #define _MaxHead 0xAF
          #define _MaxSector 0x11

          //************************************************
          byte bdata Status=0x00;
          sbit ERR=Status^0;
          sbit IDX=Status^1;
          sbit CORR=Status^2;
          sbit DRQ=Status^3;
          sbit DSC=Status^4;
          sbit DF=Status^5;
          sbit DRDY=Status^6;
          sbit BSY=Status^7;

          //************************************************************
          * D7 D6 D5 D4 D3 D2 D1 D0 *
          BSY DRDY DWF DSC DRQ CORR IDX ERR *
          BSY:驅(qū)動器忙; *
          DRDY:驅(qū)動器準(zhǔn)備好; *
          DWF:驅(qū)動器寫失??; *
          DSC:尋道結(jié)束; *
          DRQ:請求服務(wù),驅(qū)動器希望通過數(shù)據(jù)與CPU交換一字節(jié)數(shù)據(jù);*
          CORR:當(dāng)可以糾正的讀錯誤發(fā)生時,該位置1,數(shù)據(jù)傳輸將繼續(xù)進(jìn)行 *
          IDX:收到綜引信號; *
          ERR:命令執(zhí)行出錯。 *
          *************************************************************/

          byte Data_bufferH=0x0;
          byte Data_bufferL=0x0;

          //***************串口子程序
          void send_string(unsigned char *word);
          void send_char(unsigned char word);
          unsigned char get_char(void);

          /*******************************************************
          :延遲函數(shù)
          ********************************************************/
          void delay(byte ms)
          { byte i,j;
          for(i=0;ims;i++)
          for(j=0;j255;j++);
          }

          /*******************************************************
          *讀
          ********************************************************/
          byte ReadReg(byte Addr)
          {
          RegAddr=Addr;
          DataL=0xff;
          Read=0;
          Status=DataL;
          Read=1;
          return Status;
          }

          /*******************************************************
          *等待BSY信號
          ********************************************************/
          byte WaitBSY(void)
          {
          byte timeOut=0;
          do{
          ReadReg(_Status_Command);
          timeOut++;
          // if(timeOut>=254) return(0xff);
          }while(BSY);
          return(1);
          }

          51單片機相關(guān)文章:51單片機教程



          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();