已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include /* harddisk control demo * power by dddlzhu* 编译环境 : 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/*/*这里为初始化硬盘的重要参数,每个硬盘的参数都不尽相同。若不正确则读不了盘中的数据。计算方法如下:先看清楚你的 硬盘表面标签中的数据,里面有三个重要参数:1。柱面数(cylinder)2。磁头数(head)3。磁道数(sector)其中 _maxhead=0xa+head _maxsector=sector例如我的130m硬盘(很老吧,哈哈),磁头数为15,十六进制为0xf,所以_maxhead=0xaf,磁道数为17,所以_maxsector=0x11*/#define _maxhead 0xaf#define _maxsector 0x11/*byte bdata status=0x00;sbit err=status0;sbit idx=status1;sbit corr=status2;sbit drq=status3;sbit dsc=status4;sbit df=status5;sbit drdy=status6;sbit bsy=status7;/* d7 d6 d5 d4 d3 d2 d1 d0 *bsy drdy dwf dsc drq corr idx err *bsy:驱动器忙; *drdy:驱动器准备好; *dwf:驱动器写失败; *dsc:寻道结束; *drq:请求服务,驱动器希望通过数据寄存器与cpu交换一字节数据;*corr:当可以纠正的读错误发生时,该位置1,数据传输将继续进行 *idx:收到综引信号; *err:命令执行出错。 */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);/*:延迟函数 */ void delay(byte ms) byte i,j;for(i=0;ims;i+) for(j=0;j=254) return(0xff);while(bsy);return(1);/*写寄存器值*/void writereg(byte addr,byte data)regaddr=addr;write=0;datal=data;write=1;/*读数据储存器中数据*/void readdata(void)datah=0xff;datal=0xff;regaddr=_data;read=0;data_bufferl=datal;data_bufferh=datah;read=1;/*写数据寄存器中数据*/void writedata(void)regaddr=_data;write=0;datal=data_bufferl;datah=data_bufferh;write=1;/*初始化硬盘 */void init(void) dowritereg(_deviceandhead,0xa0); readreg(_status_command); while(!drdy|bsy); writereg(_deviceandhead,_maxhead); writereg(_seccount,_maxsector); writereg(_status_command,0x91);waitbsy(); writereg(_status_command,0x10);waitbsy();/*读硬盘参数*/ void driverid(void) unsigned int i=512;/send_string(starting read driver idn);waitbsy();/send_string(now can read driver id n);writereg(_status_command,0xec);/send_string(waiting. );doreadreg(_status_command);while(bsy|!drq);/send_string(now sending n);while(i)readdata();send_char(data_bufferh);send_char(data_bufferl);i-=2;/*硬盘寻址*/writechs(byte head,uint cylinder,byte sector,byte read_count)waitbsy();writereg(_deviceandhead,0xa0|head);writereg(_cylinderh,(char)(cylinder8); writereg(_cylinderl,(char)(cylinder&0x00ff);writereg(_secnum,sector); writereg(_seccount,read_count);/*用途:将硬盘的返回数据读入buffer数组*/void senddata() uint i;i=512*15;doreadreg(_status_command);while(bsy|!drq);if(err)send_string(x0dx0a errorx0dx0a); while(i)readdata();send_char(data_bufferl);send_char(data_bufferh);i-=2;/ 激活硬盘(转动)void spinup()waitbsy();writereg(_status_command,0xe1);/ 让硬盘休眠(停转)/void spindown()waitbsy();writereg(_status_command,0xe0);void main(void)/initialize scon=0x50; /串口初始化tmod=0x20; /波特率为57600bpstcon=0x40;pcon=0x80;th1=0xff;tl1=0xff;tr1=1;send_string(ide control demo. power by dddlzhux0dx0a);/send welcome wordrst=0; /ide 复位delay(50);rst=1;delay(255);send_string(reset driver ok.x0dx0a);init(); /初始化硬盘send_string(initialize driver ok,now read idx0dx0a);send_string(harddisk id is .x0dx0a);driverid(); /读硬盘idsend_string(nnnow read the first sector on this harddiskx0dx0ax0dx0a);delay(244);delay(244);delay(244);delay(244);writechs(0,0,1,16); /写地址waitbsy();writereg(_status_command,0x20); /发送读命令senddata();send_string(x0dx0ax0dx0a read ok,now shut down the harddisk.x0dx0a);spindown(); /硬盘停转 while(1);/*串口子程序void send_char(unsigned char word) ti=0;sbu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络游戏开发与运营成本控制研究
- 2025海南省建设集团限公司校园招聘50人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上学期高一化学珠算文化背景试题
- 2025年小升初数学试题手册
- 十五五规划纲要:农村土地制度改革的深化与产权保护
- 企业年度工作计划与目标分解实施方案
- 公司战略部主管工作计划及企业战略规划方案
- 仓储管理员试用期工作总结
- 元数据指标分析师数据资产评估报告
- IT系统工程师敏捷开发方法论指南
- (2025年)孕产妇及三病培训前试题附答案
- JJF(津) 155-2025 注册计量师计量专业项目考核规范
- 2025杭州师范大学招聘辅导员7人考试笔试参考题库附答案解析
- 2025中国航天科工二院二十五所秋季校园招聘笔试历年常考点试题专练附带答案详解试卷2套
- 地下车位租用合同模板2025年版
- 华文慕课《刑法学》总论课后作业答案
- 慢病的防治知识
- 2025年液化天然气(LNG)行业分析报告及未来发展趋势预测
- 游戏陪玩平台入驻协议2025
- 热力设备安装调试方案
- 银行贷款项目尽职调查完整报告模板
评论
0/150
提交评论