历史上的今天
今天是:2025年01月14日(星期二)
2018年01月14日 | 51单片机控制硬盘的程序
2018-01-14 来源:eefocus
/*******************************************************************
* 硬盘控制源程序 *
* 编译环境 : KEIL C51 V7.07 支持器件 : AT89C51 *
* COPYRIGHT (C) 2004 *
/*******************************************************************/
///////////////////预处理/////////////////////////////////////
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define KEYPORT P1
#define LCDCOM XBYTE[0x0008]//LCD命令寄存器
#define LCDDATA XBYTE[0x0009]//LCD数据寄存器
#define CDPA XBYTE[0x0004]//8255 PORT A, harddisk D0-D7
#define CDPB XBYTE[0x0005]//8255 PORT B, harddisk D8-D15
#define CDPC XBYTE[0x0006]//8255 PORT C,harddisk address
#define CDCOM XBYTE[0x0007]//8255 命令寄存器
#define FILE0 0x00//硬盘数据寄存器
#define FILE1 0x01//错误/特征寄存器
#define FILE2 0x02//扇区数寄存器
#define FILE3 0x03//扇区号寄存器
#define FILE4 0x04//柱面号寄存器L
#define FILE5 0x05//柱面号寄存器H
#define FILE6 0x06//驱动器/磁头寄存器
#define FILE7 0x07//状态/命令寄存器
statIC uchar code LCD1[16]= "TOPLOW DESIGN ";
static uchar code LCD2[16]= "Copyright(C)2004";
static uchar code ERROR[16]="ERROR ";
static uchar code PASS[16]= "PASS ";
uchar buffer0,buffer1;
uchar buffer[16];
uchar STATUS;
///////////////////位设置///////////////////////////
sbit BFLAG=ACC^7;
sbit BSY=ACC^7;
sbit DRDY=ACC^6;
sbit DRQ=ACC^3;
sbit ERR=ACC^0;
sbit RESET=P3^5;
sbit READ=P3^0;
sbit WRITE=P3^1;
sbit ILT=ACC^0;
sbit INTRQ=P3^3;
/************************************************************
* 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:命令执行出错。 *
*************************************************************/
/*******************************************************
*函数名称:void delay(uint time) *
*函数用途:延迟函数 *
********************************************************/
void delay(uint time)
{
uint i,j;
for(i=0;i
上一篇:单片机自动拨号原理与实践
下一篇:51单片机8*8点阵LED程序
史海拾趣
|
最近用SDK写界面,用图片将窗口全Bitblt一边,却闪得历害,以下是我的代码,请高手指点. 1.画背景 case WM_ERASEBKGND: BeginPaint(hDlg,&ps); &n ...… 查看全部问答> |
|
哪位大哥帮帮忙!关于信号量的问题!如果一个信号量仅声明不初始化直接Take,会造成调用这个信号量的任务出现不可预期的长期PEND吗? 补充:多任务系统,调用该信号量的任务优先级最低(这个信号量只在一个地方调用,实际上没用),另外该信号量的等待时间是WAIT_FOREVER!哪位好心人的大哥大姐叔叔阿姨大爷大娘帮帮忙啊!小弟这里趴求了!… 查看全部问答> |
|
我使用BIOS的周期函数执行SCI通讯的主函数,发现无法实现正常的通讯功能,检查了一下程序,我认为问题可能出在寄存器配置上,请各位帮我看一下问题在哪? 我的SCI初始化如下: void InitSciPort(void) { /******/ ...… 查看全部问答> |
|
win 7 64位旗舰版不识别cc2430仿真器,无法驱动,有没有64位的驱动? RT,在网上都找不到解决方案,要么就是说已经解决了又不说怎么解决的,受不了了,被个驱动拆腾得,有没有人告诉我一下是怎么解决的。已经解决了,下了一个IAR EW8051 V8.1,装驱动的时候就会有X64的选项,把那个上传一下,不过不知道这样有没有用, ...… 查看全部问答> |
|
Capacitive Touch BoosterPack (430BOOST-SENSE1) for the LaunchPad User\'s Guide (Rev. B) slau337b 第15页 The User Experience application starts in sleep mode, sampling the proximity sensor approximately every 8.3 ms (VLO / 100 = ...… 查看全部问答> |




