⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 源程序.htm

📁 我的MP3 DIY 自带原代码希望各位提出宝贵意见和建议
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                IDE_DATA_H=0xFF;<br>
                IDE_DATA_L=0xFF;<br>
                IDE_DIOR=0;<br>
                IDE_Buffer_H=IDE_DATA_H;<br>
                IDE_Buffer_L=IDE_DATA_L;<br>
                IDE_DIOR=1;<br>
                IDE_Address=IDE_Bus_Not_Use;<br>
                set_IDE_address();<br>
                }*/<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                /////////////////////////////////////&nbsp;&nbsp;写IDE 16位,未用&nbsp;&nbsp;////////////////////////////////////////<br>
                /*void write_IDE_16(unsigned char address)<br>
                {<br>
                while(!IDE_IORDY);<br>
                IDE_Address=address;<br>
                set_IDE_address();<br>
                IDE_DIOW=0;<br>
                IDE_DATA_H=IDE_Buffer_H;<br>
                IDE_DATA_L=IDE_Buffer_L;<br>
                IDE_DIOW=1;<br>
                IDE_Address=IDE_Bus_Not_Use;<br>
                set_IDE_address();<br>
                }*/<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                ////////////////////////////////////////////&nbsp;&nbsp;&nbsp;&nbsp;读IDE 
                低8位&nbsp;&nbsp;&nbsp;/////////////////////////////////<br>
                unsigned char read_IDE_8(unsigned char address)<br>
                {<br>
                unsigned char temp;<br>
                while(!IDE_IORDY);<br>
                IDE_Address=address;<br>
                set_IDE_address();<br>
                IDE_DATA_H=0xFF;<br>
                IDE_DATA_L=0xFF;<br>
                IDE_DIOR=0;<br>
                temp=IDE_DATA_L;<br>
                IDE_DIOR=1;<br>
                IDE_Address=IDE_Bus_Not_Use;<br>
                set_IDE_address();<br>
                return temp;<br>
                }<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                /////////////////////////////////////////////&nbsp;&nbsp;写IDE 
                低8位&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////<br>
                void write_IDE_8(unsigned char address,unsigned char w_data)<br>
                {<br>
                while(!IDE_IORDY);<br>
                IDE_Address=address;<br>
                set_IDE_address();<br>
                IDE_DIOW=0;<br>
                IDE_DATA_L=w_data;<br>
                IDE_DIOW=1;<br>
                IDE_Address=IDE_Bus_Not_Use;<br>
                set_IDE_address();<br>
                }<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                //////////////////////////////////////////&nbsp;&nbsp;&nbsp;从IDE读一个字&nbsp;&nbsp;//////////////////////////////////<br>
                /*void read_IDE_word(void)<br>
                {<br>
                read_IDE_16(IDE_Data);<br>
                }*/<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                /////////////////////////////////////////&nbsp;&nbsp;&nbsp;往IDE写一个字&nbsp;&nbsp;///////////////////////////////////<br>
                /*void write_IDE_word(void)<br>
                {<br>
                write_IDE_16(IDE_Data);<br>
                }*/<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                ////////////////////////////////////////&nbsp;&nbsp;&nbsp;读 
                IDE 状态寄存器&nbsp;&nbsp;/////////////////////////////////<br>
                void read_IDE_status(void)<br>
                {<br>
                IDE_status=read_IDE_8(IDE_Status);&nbsp;&nbsp;//结果保存在状态寄存器中<br>
                }<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                //////////////////////////////////////&nbsp;&nbsp;&nbsp;&nbsp;读 
                IDE 错误寄存器 ///////////////////////////////////<br>
                void read_IDE_error(void)<br>
                {<br>
                IDE_error_register=read_IDE_8(IDE_Error_Register);&nbsp;&nbsp;&nbsp;//结果保存在错误寄存器中<br>
                }<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                /////////////////////////////////////&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等待IDE&nbsp;&nbsp;&nbsp;&nbsp;///////////////////////////////////////////<br>
                unsigned char wait_IDE_busy(void)<br>
                {<br>
                while(!IDE_IORDY);<br>
                do<br>
                &nbsp;&nbsp;{<br>
                &nbsp;&nbsp;&nbsp;read_IDE_status();<br>
                &nbsp;&nbsp;&nbsp;if(IDE_ERR)<br>
                &nbsp;&nbsp;&nbsp;{<br>
                &nbsp;&nbsp;&nbsp;&nbsp;read_IDE_error();<br>
                &nbsp;&nbsp;&nbsp;}<br>
                &nbsp;&nbsp;}while(IDE_BSY);<br>
                IDE_Address=IDE_Bus_Not_Use;<br>
                set_IDE_address();<br>
                return 0;<br>
                }<br>
                //////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                ////////////////////////////////////////&nbsp;&nbsp;&nbsp;&nbsp;写 
                IDE 命令&nbsp;&nbsp;/////////////////////////////////////<br>
                void write_IDE_command(unsigned char command)<br>
                {<br>
                write_IDE_8(IDE_Command,command);<br>
                wait_IDE_busy();<br>
                }<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                ////////////////////////////////////////&nbsp;&nbsp;&nbsp;IDE 
                软复位&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////////<br>
                /*(void soft_reset_IDE(void)<br>
                {<br>
                write_IDE_8(IDE_Device_Control,0xFD);<br>
                wait_IDE_busy();<br>
                }<br>
                */<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                /////////////////////////////////////////&nbsp;&nbsp;&nbsp;写IDE 
                逻辑块地址LBA&nbsp;&nbsp;//////////////////////////////<br>
                void write_IDE_LBA(unsigned long int _LBA)<br>
                {<br>
                unsigned char LBA0;<br>
                LBA0=((unsigned char *)&amp;_LBA)[0];<br>
                LBA0&amp;=0x0F;<br>
                LBA0|=0xE0;//磁盘0工作在LBA模式下<br>
                write_IDE_8(IDE_LBA_Bits_24_27,LBA0);<br>
                write_IDE_8(IDE_LBA_Bits_16_23,((unsigned char *)&amp;_LBA)[1]);<br>
                write_IDE_8(IDE_LBA_Bits_8_15,((unsigned char *)&amp;_LBA)[2]);<br>
                write_IDE_8(IDE_LBA_Bits_0_7,((unsigned char *)&amp;_LBA)[3]);<br>
                }<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                unsigned char xdata buffer[512];&nbsp;&nbsp;//扇区缓冲<br>
                <br>
                unsigned int byte_offset;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//字节偏移<br>
                unsigned char disk_error=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//磁盘错误<br>
                <br>
                <br>
                DPT xdata dpt[4];&nbsp;&nbsp;&nbsp;//磁盘分区表<br>
                DBR xdata dbr[4];&nbsp;&nbsp;&nbsp;//DOS引导记录<br>
                <br>
                <br>
                unsigned long int xdata FAT_start_sector[4];&nbsp;&nbsp;&nbsp;//FAT开始扇区<br>
                unsigned long int xdata DATA_start_sector[4];&nbsp;&nbsp;//数据开始扇区<br>
                <br>
                unsigned char mp3_file_exist=0;<br>
                <br>
                unsigned char xdata FAT_buffer[512];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//文件分配表FAT缓冲<br>
                <br>
                //////////////////////////////////////&nbsp;&nbsp;写扇区计数寄存器&nbsp;&nbsp;&nbsp;///////////////////////////////////////////<br>
                void write_IDE_sector_count(unsigned char count)<br>
                {<br>
                write_IDE_8(IDE_Sector_Count,count);<br>
                }<br>
                /////////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                /////////////////////////////////&nbsp;&nbsp;读取一个FAT扇区,512字节保存在FAT_buffer[]中&nbsp;&nbsp;///////////////////////<br>
                void read_IDE_FAT_sector(unsigned long int LBA)<br>
                {<br>
                unsigned int i;<br>
                write_IDE_LBA(LBA);<br>
                write_IDE_sector_count(1);<br>
                write_IDE_command(IDE_Read_Sectors);<br>
                IDE_Address=IDE_Data;<br>
                set_IDE_address();<br>
                IDE_DATA_H=0xFF;<br>
                IDE_DATA_L=0xFF;<br>
                for(i=0;i&lt;512;i++)<br>
                &nbsp;&nbsp;{<br>
                &nbsp;&nbsp;&nbsp;while(!IDE_IORDY);<br>
                &nbsp;&nbsp;&nbsp;IDE_DIOR=0;<br>
                &nbsp;&nbsp;&nbsp;FAT_buffer[i]=IDE_DATA_L;<br>
                &nbsp;&nbsp;&nbsp;i++;<br>
                &nbsp;&nbsp;&nbsp;FAT_buffer[i]=IDE_DATA_H;<br>
                &nbsp;&nbsp;&nbsp;IDE_DIOR=1;<br>
                &nbsp;&nbsp;}<br>
                IDE_Address=IDE_Bus_Not_Use;<br>
                set_IDE_address();<br>
                IDE_DATA_L=0xFF;<br>
                }<br>
                ///////////////////////////////////////////////////////////////////////////////////////////////<br>
                <br>
                /////////////////////////////////&nbsp;&nbsp;读取一个数据扇区,512字节保存在buffer[]中 
                //////////////////<br>
                void read_IDE_sector(unsigned long int LBA)<br>
                {<br>
                unsigned int i;<br>
                write_IDE_LBA(LBA);<br>
                write_IDE_sector_count(1);<br>
                write_IDE_command(IDE_Read_Sectors);<br>
                IDE_Address=IDE_Data;<br>
                set_IDE_address();<br>
                IDE_DATA_H=0xFF;<br>
                IDE_DATA_L=0xFF;<br>
                for(i=0;i&lt;512;i++)<br>
                &nbsp;&nbsp;{<br>
                &nbsp;&nbsp;&nbsp;while(!IDE_IORDY);<br>
                &nbsp;&nbsp;&nbsp;IDE_DIOR=0;<br>
                &nbsp;&nbsp;&nbsp;buffer[i]=IDE_DATA_L;<br>
                &nbsp;&nbsp;&nbsp;i++;<br>
                &nbsp;&nbsp;&nbsp;buffer[i]=IDE_DATA_H;<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -