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

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

?? 硬盤ide接口驅動程序.txt

?? 單片機驅動硬盤接口IDE的源代碼
?? TXT
字號:
/*********************************************************
硬盤ide接口驅動程序 
CPU:AT89C51 CLOCK:24M
并行接口:82c55
**********************************************************/

#include <reg51.h>
#include <intrins.h>
#include "ide_interface.h"
sbit led = P3^5;


/* IDE初始化, 返回0,初始化失敗.返回1,成功! */
uchar IDE_Init()
{
uchar status;
uint i=0;
IDE_Write(IDE_HEAD, 0xE0);
do {
status = IDE_Read(IDE_STATUS);
}
while(!(status & 0x40)|(status & 0x80));/* 等待RDY為"1" BSY為"0" */

IDE_Write(IDE_HEAD, 0x20);
IDE_Write(IDE_SECCNT, 64);

IDE_Write(IDE_COMMAND, IDE_CMD_INIT);

IDE_Busy();
//printf("Time out,device error!\n");

IDE_Write(IDE_COMMAND, IDE_CMD_RECAL);
IDE_Busy();
//printf("Time out,device error!\n");
return 1; //初始化成功!
}

/* 從硬盤讀取一個扇區,放入到形參指定的內存中 */
void ReadSector(uint *addr, unsigned long LBA)
{
IDE_Busy();/* 等待硬盤空閑 */
WriteLBA(LBA);
IDE_Write(IDE_COMMAND,IDE_CMD_READ);
IDE_Ready();
ReadData(addr);
}


/* 向硬盤寫一個扇區,返回零表示成功,否則失敗。*/
uchar WriteSector(uint *addr, unsigned long LBA)
{ 
uchar i;
IDE_Busy();
WriteLBA(LBA);
IDE_Write(IDE_COMMAND,IDE_CMD_WRITE);
IDE_Ready();
WriteData(addr);
i = IDE_Busy();
if((i & 0x01)==0x01) {
i = GetError;
return i; /* 有錯誤發生,返回錯誤狀態值 */
}
return 0; 
}

/* 取得錯誤號*/
uchar GetError()
{
uchar res;
res = IDE_Read(IDE_ERR); /* 取出低位字節 */
return res;
}


/* 讀取硬盤的標識。*/
void GetDriverId(uint *Buffer)
{
IDE_Busy();
IDE_Write(IDE_COMMAND,IDE_CMD_ID);
IDE_Ready();
ReadData(Buffer);
}

/* 激活硬盤(轉動)。*/
void SpinUP()
{
IDE_Write(IDE_COMMAND,IDE_CMD_SPINUP);
IDE_Busy();
}

/* 讓硬盤休眠(停轉)。*/
void SpinDown()
{
IDE_Busy();
IDE_Write(IDE_COMMAND,IDE_CMD_SPINDOWN);
IDE_Busy();
}


/* 從硬盤讀取512個字節。*/
void ReadData(uint xdata *Buffer)
{ 
uint i;

for(i = 0; i < 256; i ++)
{
*(Buffer ++) = IDE_Read(IDE_DATA);
}
}


/* 向硬盤寫入512個字節。 */
void WriteData(uint xdata *Buffer)
{
uint i;

for(i = 0; i < 256; i ++)
{
IDE_Write(IDE_DATA, *(Buffer++));
}
}


/* 向設備寄存器寫入邏輯塊地址*/
void WriteLBA(unsigned long LBA)
{
uint tmp_data = 0;

tmp_data |= ((LBA&0xFF000000) >> 24);
tmp_data &= 0x0F;
tmp_data |= 0xE0;
IDE_Write(IDE_HEAD, tmp_data);

tmp_data = 0;
tmp_data |= ((LBA&0xFF0000) >> 16);
IDE_Write(IDE_MSB, tmp_data);

tmp_data = 0;
tmp_data |= ((LBA&0xFF00) >> 8);
IDE_Write(IDE_LSB, tmp_data);

tmp_data = 0;
tmp_data |= (LBA&0xFF);
IDE_Write(IDE_SECTOR, tmp_data);

IDE_Write(IDE_SECCNT, 1);

}


/* 等待IDE設備空閑,返回設備的狀態. */ 
uchar IDE_Busy()
{
uchar res;
do
{
res = IDE_Read(IDE_STATUS);
}while(res & 0x80);

return res;
}

/* 等待設備空閑直到可以傳送數據,返回設備的狀態 */
uchar IDE_Ready()
{
uchar res;
do
{
res = IDE_Read(IDE_STATUS);
}while((res & 0x80)|(!(res & 0x08))); /* 等待DRQ=1,BSY=0 */

return res;
}

/* 通過8255讀取硬盤數據(一個16位的字)。 */
uint IDE_Read(uchar reg)
{
uint temp; uchar res;
CFG_8255 = RD_IDE_8255; /* 8255為輸入模式,讀硬盤。*/
IDE_8255_CTL= reg;
reg |= IDE_RD;
IDE_8255_CTL= reg;
_nop_;
temp = IDE_8255_MSB;
temp = (temp<<8) & 0xFF00;
res = IDE_8255_LSB;

temp = temp|res;
IDE_8255_CTL = 0x00; /* 清除控制寄存器。*/
return temp;
}


/* 通過8255向硬盤寫入一個字。 */
void IDE_Write(uchar reg,uint wr_data)
{
uchar tmp_data;
CFG_8255 = WR_IDE_8255; /* 8255為輸出模式,寫硬盤。*/
tmp_data = wr_data;
IDE_8255_LSB = tmp_data;/* 首先寫LSB。 */
tmp_data = (wr_data>>8);
IDE_8255_MSB = tmp_data;/* 繼續寫MSB。 */
IDE_8255_CTL = reg;
reg |= IDE_WR;
IDE_8255_CTL = reg;
_nop_;
IDE_8255_CTL = 0x00;/* 清除控制寄存器。 */
CFG_8255 = RD_IDE_8255; /* 8255為輸入模式,讀硬盤。*/
}


/* 硬盤復位操作,當初始化結束后需要復位。 */
void IDE_Reset()
{
CFG_8255 = WR_IDE_8255;/* 8255為輸出模式,寫硬盤。 */
IDE_8255_CTL = IDE_RST;
delay(10);
IDE_8255_CTL = 0x00;/* 清除控制寄存器。 */
}

/* 延時函數,延時ms級別 */
void delay(uint length) {
uint i;
do {
for (i=0;i<500;i++) {
}
length--;
}
while(length>0);
}

//測試程序部分
void main () {
uint i=1; unsigned long CurrentSector;

IDE_Reset();

if(IDE_Init()==1) {
for(i=0;i<3;i++){
led=0;
delay(50);
led=1;
delay(50);
}
}

GetDriverId(0x6000);

CurrentSector=0x00AA0000;
i=0;
do {

ReadSector(0x7000,CurrentSector);
CurrentSector++;
i++;
}
while(i<1953); /* 讀1MB的連續文件 */

SpinDown(); /* 硬盤停轉 */
for ( ; ; ) {
}
}
/*********************************************************
硬盤ide接口驅動程序 
CPU:AT89C51 CLOCK:24M
并行接口:82c55
**********************************************************/

#include <absacc.h> 
/***************type define****************/
#define uchar unsigned char
#define uint unsigned int
/******************************************/
/*以下是關于8255的一些定義:*/
#defineIDE_8255_LSB XBYTE[0x8000]/* 低8位 */
#defineIDE_8255_MSB XBYTE[0x8001]/* 高8位 */
#defineIDE_8255_CTL XBYTE[0x8002]
#defineCFG_8255 XBYTE[0x8003] /* 控制口 */
#defineRD_IDE_8255 0x92/*10010010b,8255輸入 */
#defineWR_IDE_8255 0x80/*10000000b,8255輸出 */

/*8255和IDE接口連接*/
#defineIDE_A0 0x01/* 8255和IDE接口直接相連 */
#defineIDE_A1 0x02/* 8255和IDE接口直接相連 */
#defineIDE_A2 0x04/* 8255和IDE接口直接相連 */
#defineIDE_CS0 0x08/* 8255和IDE接口通過74LS04反相后相連 */
#defineIDE_CS1 0x10/* 8255和IDE接口通過74LS04反相后相連 */
#defineIDE_WR 0x20/* 8255和IDE接口通過74LS04反相后相連 */
#defineIDE_RD 0x40/* 8255和IDE接口通過74LS04反相后相連 */
#defineIDE_RST 0x80/* 8255和IDE接口通過74LS04反相后相連 */

#defineIDE_DATAIDE_CS0
#defineIDE_ERRIDE_CS0 + IDE_A0
#defineIDE_SECCNTIDE_CS0 + IDE_A1
#defineIDE_SECTORIDE_CS0 + IDE_A1 + IDE_A0
#defineIDE_LSBIDE_CS0 + IDE_A2
#defineIDE_MSBIDE_CS0 + IDE_A2 + IDE_A0
#defineIDE_HEADIDE_CS0 + IDE_A2 + IDE_A1
#defineIDE_COMMANDIDE_CS0 + IDE_A2 + IDE_A1 + IDE_A0
#defineIDE_STATUSIDE_CS0 + IDE_A2 + IDE_A1 + IDE_A0
#defineIDE_CONTROLIDE_CS1 + IDE_A2 + IDE_A1
#defineIDE_ASTATUSIDE_CS1 + IDE_A2 + IDE_A1 + IDE_A0

/*IDE命令:*/
#defineIDE_CMD_RECAL 0x10
#defineIDE_CMD_READ 0x20
#defineIDE_CMD_WRITE 0x30
#defineIDE_CMD_INIT 0x91
#defineIDE_CMD_ID 0xEC
#defineIDE_CMD_SPINDOWN 0xE0
#defineIDE_CMD_SPINUP 0xE1

/*******************************函數定義*******************************/
uchar IDE_Init();
void ReadSector(uint *addr,unsigned long LBA);
uchar WriteSector(uint *addr, unsigned long LBA);
uchar GetError();
void GetDriverId(uint *Buffer);
void SpinUP();
void SpinDown();
void ReadData(uint xdata *Buffer);
void WriteData(uint xdata *Buffer);
void WriteLBA(unsigned long LBA);
uchar IDE_Busy();
uchar IDE_Ready();
uint IDE_Read(uchar reg);
void IDE_Write(uchar reg,uint wr_data);
void IDE_Reset();
void delay(uint length);
/**************************函數定義結束**********************************/ 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人少妇影院yyyy| 综合精品久久久| 欧美日韩亚洲国产综合| 精品视频一区二区三区免费| 精品久久久久久久人人人人传媒| 国产午夜精品久久久久久免费视| 国产一区二区三区久久悠悠色av| 精品国产一区二区三区不卡 | 欧美日精品一区视频| 一区二区三区精品视频| 在线一区二区三区四区五区| 欧美不卡123| 国产成人亚洲综合a∨猫咪| 久久久久久99久久久精品网站| 国产乱子伦一区二区三区国色天香| 91激情在线视频| 中文字幕精品综合| 色综合久久综合网| 亚洲国产精品t66y| 国模大尺度一区二区三区| 欧美性受xxxx| 麻豆一区二区三区| 国产精品毛片a∨一区二区三区| 99久久精品国产导航| 亚洲精品一区二区三区四区高清 | 精品午夜久久福利影院| 国产欧美日韩在线视频| 日本精品一区二区三区高清| 日本不卡一区二区三区高清视频| 久久久久亚洲综合| 欧美中文字幕亚洲一区二区va在线| 久久精品人人做人人爽人人| 色哦色哦哦色天天综合| 玖玖九九国产精品| 欧美日韩黄色一区二区| 国产一区高清在线| 亚洲国产成人porn| 欧美日精品一区视频| 一区二区三区精品视频| 欧美性一级生活| 国产精品一区二区视频| 五月婷婷综合在线| 亚洲人成网站影音先锋播放| 波多野结衣欧美| 美女看a上一区| 日韩美女精品在线| 久久久三级国产网站| 欧美三级中文字幕在线观看| 成人做爰69片免费看网站| 日本中文字幕一区二区视频 | 国产精品久久久久影视| 国产精品自在在线| 国产丝袜美腿一区二区三区| 成人午夜激情视频| 美国毛片一区二区三区| 久久久www免费人成精品| 欧美日韩综合一区| 91麻豆免费观看| 国产成人av资源| 久久aⅴ国产欧美74aaa| 视频一区二区中文字幕| 一区二区三区精品视频| 亚洲欧美怡红院| 中文一区一区三区高中清不卡| 不卡在线观看av| 国产一区二区91| 久久99精品久久久久婷婷| 国产嫩草影院久久久久| 欧美一级黄色片| 911精品国产一区二区在线| 欧美亚洲图片小说| 在线观看成人小视频| 色天天综合色天天久久| 99re热这里只有精品视频| 亚洲第一综合色| 久久众筹精品私拍模特| 日韩一级免费一区| 成人av免费观看| 午夜精彩视频在线观看不卡| 久久久久久久久97黄色工厂| 亚洲精品在线观| 欧美主播一区二区三区美女| 91免费版在线看| 久久国产欧美日韩精品| 免费欧美在线视频| 免费成人在线网站| 久久国产精品第一页| 久久电影网站中文字幕 | 最好看的中文字幕久久| 国产精品视频线看| 亚洲视频香蕉人妖| 久久婷婷久久一区二区三区| 色综合久久99| 欧美午夜影院一区| 国产传媒日韩欧美成人| 日韩中文字幕91| 精品综合免费视频观看| 国产电影一区在线| 色综合久久久网| 欧美日本视频在线| 色婷婷一区二区| 懂色中文一区二区在线播放| 成人免费视频视频在线观看免费| jlzzjlzz亚洲日本少妇| 欧美午夜宅男影院| 97精品国产露脸对白| 国产乱码字幕精品高清av| 成人白浆超碰人人人人| 亚洲天堂久久久久久久| 亚洲一级片在线观看| 欧美国产成人在线| 精品国精品国产尤物美女| 国产精品日产欧美久久久久| 亚洲男人的天堂av| 免费在线欧美视频| 青青草原综合久久大伊人精品 | 一区二区三区欧美视频| 日韩成人一区二区| 国产**成人网毛片九色| 国产一区二区主播在线| 色成年激情久久综合| 99re热视频精品| k8久久久一区二区三区| 成人一区二区三区视频| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲同性gay激情无套| 视频一区欧美日韩| av亚洲精华国产精华精华| 91精品国产入口| 欧美体内she精视频| 久久综合九色综合97_久久久| 亚洲色图一区二区| 国产精品福利av| 亚洲欧美经典视频| 狠狠v欧美v日韩v亚洲ⅴ| 91黄色免费观看| 欧美视频三区在线播放| 欧美国产成人在线| 亚洲天堂2014| 国产一区二区福利| 99久久精品国产网站| 日韩精品在线看片z| 亚洲最新视频在线观看| 亚洲电影在线播放| 成人综合在线网站| 日韩欧美的一区| 久久久久久久久久久久电影 | 日韩成人伦理电影在线观看| 99国产精品一区| 久久久噜噜噜久久中文字幕色伊伊 | 美日韩黄色大片| 欧美午夜不卡在线观看免费| 欧美精品18+| 亚洲美女免费在线| 图片区小说区区亚洲影院| eeuss鲁一区二区三区| 精品欧美一区二区三区精品久久| 久久色.com| 久久97超碰色| 欧美一级理论性理论a| 日韩高清欧美激情| 国产69精品久久777的优势| 91在线精品一区二区| 国产精品乱码妇女bbbb| 懂色av一区二区三区蜜臀| 2023国产一二三区日本精品2022| 中文字幕在线不卡国产视频| 国产河南妇女毛片精品久久久| 欧美一区二区三区免费| 中文字幕av资源一区| 亚洲成人免费电影| 国产精品亚洲专一区二区三区| 欧美岛国在线观看| 久久福利视频一区二区| 欧洲国内综合视频| 亚洲自拍与偷拍| 成人性生交大片免费看中文| 欧美色综合网站| 午夜精品久久久久久久99樱桃| 成人夜色视频网站在线观看| 国产欧美日韩不卡| 99精品视频中文字幕| 亚洲人成精品久久久久| 欧美中文字幕一区| 日本一区二区久久| 日本不卡1234视频| 色综合天天综合网天天看片| 亚洲欧美激情插| 欧美亚洲动漫制服丝袜| 午夜电影一区二区| 99riav一区二区三区| 亚洲永久免费视频| 成人午夜在线视频| 日韩免费观看高清完整版 | 中文字幕亚洲区| 国产精品久久福利| 91福利在线免费观看| 国产欧美精品国产国产专区 | 欧美性一二三区| 国产精品久久久久久久久果冻传媒|