由于CEPARK网站在修改圈圈提供的原理图是,不小心将IDE硬盘原本连接的P1、P2口移至了P0、P1口, 另外还将P1口与573之间的8条数据线连反,因此在做USB转IDE实验时,需要对程序作响应的修改。 只有新版的PCB(使用贴片的89C52单片机的)才需要作此修改。在EDN购买的学习板使用光盘配套程序即可。
有几个地方要改,首先就是数据口,由原来的P1、P2改成P0、P1。
将原来在IDE.h文件中的
#define IDE_DATA_L P1 #define IDE_DATA_H P2
修改成
#define IDE_DATA_L P0 #define IDE_DATA_H P1
另外,连接到P1口的573的8根数据线全部被接反,所以相应的地址需要修改,
将原来在IDE.c文件中的
#define IDE_BUS_NOT_USE 0x98 #define IDE_ALTERNATE_STATUS 0x8E #define IDE_DEVICE_CONTROL 0x8E #define IDE_DRIVER_ADDRESS 0x8F
#define IDE_DATA 0x90 #define IDE_ERROR_REGISTER 0x91 #define IDE_FEATURES 0x91 #define IDE_SECTOR_COUNT 0x92 #define IDE_SECTOR_NUMBER 0x93 #define IDE_LBA_BITS_0_7 0x93 #define IDE_CYLINDER_LOW 0x94 #define IDE_LBA_BITS_8_15 0x94 #define IDE_CYLINDER_HIGH 0x95 #define IDE_LBA_BITS_16_23 0x95 #define IDE_DRIVE_HEAD 0x96 #define IDE_LBA_BITS_24_27 0x96 #define IDE_STATUS 0x97 #define IDE_COMMAND 0x97
#define IDE_RESET 0x18
修改成
#define IDE_BUS_NOT_USE 0x19 #define IDE_ALTERNATE_STATUS 0x71 #define IDE_DEVICE_CONTROL 0x71 #define IDE_DRIVER_ADDRESS 0xF1
#define IDE_DATA 0x09 #define IDE_ERROR_REGISTER 0x89 #define IDE_FEATURES 0x89 #define IDE_SECTOR_COUNT 0x49 #define IDE_SECTOR_NUMBER 0xC9 #define IDE_LBA_BITS_0_7 0xC9 #define IDE_CYLINDER_LOW 0x29 #define IDE_LBA_BITS_8_15 0x29 #define IDE_CYLINDER_HIGH 0xA9 #define IDE_LBA_BITS_16_23 0xA9 #define IDE_DRIVE_HEAD 0x69 #define IDE_LBA_BITS_24_27 0x69 #define IDE_STATUS 0xE9 #define IDE_COMMAND 0xE9
#define IDE_RESET 0x18
上述修改仅针对于CEPAR的板子(书中赠送的PCB也是)。EDN的板子不用修改,直接使用光盘中的程序。
附件是修改好的IDE.h文件,通过选择宏定义
#define EDN_BOARD #define CEPARK_BOARD
来决定使用EDN还是CEPARK的板子。另外压缩包中还有已经编译好的适合CEPARK板子的HEX文件,可以直接下载使用。
https://bbs.21ic.com/upfiles/img/20093/200933003637671.rar |