MCU_EXAMPLES.rar

  • changshi_110
    了解作者
  • C/C++
    开发工具
  • 648KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 26
    下载次数
  • 2009-07-23 15:37
    上传日期
全部单片机C51程序,虽然都不超过400行(对天发誓全是学单片机以来自己写的)还请站长开恩了,呵呵
MCU_EXAMPLES.rar
  • MCU EXAMPLES
  • 串口通讯
  • COM
    427B
  • COM.ASM
    394B
  • COM.hex
    126B
  • COM.lnp
    38B
  • COM.OBJ
    412B
  • COM.LST
    2.2KB
  • COM.Opt
    1.2KB
  • COM.Uv2
    2.1KB
  • COM.M51
    2.1KB
  • COM.plg
    325B
  • 单口输出60计数(定时)
  • dandeng.hex
    75B
  • yan.lst
    1KB
  • dandeng.M51
    1.1KB
  • dandeng.obj
    216B
  • yan.lnp
    40B
  • dandeng.lnp
    48B
  • dandeng.LIB
    286B
  • yan.hex
    36B
  • dandeng.lst
    1.7KB
  • dm.lst
    1.4KB
  • ITF.obj
    699B
  • yan.plg
    152B
  • ITF.lnp
    39B
  • ITF.M51
    1.6KB
  • ITF.Opt
    1.1KB
  • Last Loaded ff.DBK
    74KB
  • ITF.Uv2
    2KB
  • ITF
    338B
  • ITF.plg
    1.5KB
  • yan.M51
    1.3KB
  • ITF.lst
    4.2KB
  • ITF.hex
    113B
  • ITF.ASM
    1.1KB
  • ff.DSN
    74KB
  • dm.obj
    319B
  • dandeng.plg
    169B
  • testpu
  • send.asm
    2KB
  • send.LST
    8KB
  • test.Uv2
    2.1KB
  • test.Opt
    1.5KB
  • test
    1019B
  • send.OBJ
    1.1KB
  • receive.asm
    3.1KB
  • test.lnp
    40B
  • test.M51
    4.9KB
  • test.plg
    156B
  • display.asm
    5.9KB
  • INT
  • TONGBU.plg
    159B
  • test20512
  • more
    325B
  • more.M51
    1.7KB
  • more.hex
    81B
  • more.lnp
    25B
  • more.OBJ
    306B
  • more.Opt
    1.3KB
  • more.Uv2
    2.1KB
  • more.LST
    1.4KB
  • more.plg
    672B
  • more.asm
    224B
  • 简单的汇编和C结合
  • ADTLC0832
  • AD_CONVETER.Uv2
    2KB
  • AD_CONVETER.C
    1.9KB
  • AD_CONVETER.OBJ
    6.2KB
  • AD_CONVETER.M51
    8.6KB
  • AD_CONVETER.LST
    5.1KB
  • AD_CONVETER
    5.6KB
  • AD_CONVETER.Opt
    1.6KB
  • AD_CONVETER.plg
    166B
  • AD_CONVETER.lnp
    54B
  • AD_CONVETER.hex
    765B
  • AD_CONVETER.ASM
    844B
  • ADC0832 和串口结合
  • testmore
    7.1KB
  • testmore.plg
    354B
  • testmore.c
    2.6KB
  • testmore.Uv2
    2.1KB
  • testmore.Opt
    1.2KB
  • testmore.LST
    6.4KB
  • testmore.hex
    976B
  • testmore.lnp
    48B
  • testmore.OBJ
    7.9KB
  • testmore.M51
    10.6KB
  • INT0
  • INT
    572B
  • ONT.hex
    204B
  • LEEDD.obj
    396B
  • TONGBU.plg
    327B
  • ONT.Uv2
    2.1KB
  • TONGBU.lnp
    41B
  • ONT.M51
    3KB
  • INT.lnp
    38B
  • TONGBU
    583B
  • INT.ASM
    633B
  • ONT.plg
    708B
内容介绍
//程序出错 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int /***********SD卡错误命令*********/ #define reset_error 0x01 #define initial_error 0x02 #define writes_error 0x03 #define reads_error 0x04 /***********SPI定义**************/ sbit sclk= P1^0; sbit si=P1^3; sbit so=P1^2; sbit cs=P1^1; uchar flag; uchar pbuf[80]; //unsigned long Gaddress;//当前扇区搜索地址 //unsigned long cluster; //unsigned long size; void sdelay(time) { while(time--); } /*void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }*/ /*********写一个字节,由单片机向SD卡,对于SD卡来说输入数据,必须要八个时钟的上升沿************/ void spi_write(uchar temp) { uchar i; for(i=0;i<8;i++) { temp=temp<<1; si=CY; sclk=0; // delay(1); if(flag) sdelay(8); sclk=1; if(flag) sdelay(8); } } /*********读回一个字节,由SD卡向单片机,对于SD卡来说输出数据,必须要8个时钟的下降沿*********/ uchar spi_read() { uchar temp=0,i; sclk=1;//一般默认为1; so=1; //总线空闲时保持为1; for(i=0;i<8;i++) { sclk=0; temp=temp<<1; temp=temp|so; if(flag) sdelay(8); sclk=1; if(flag) sdelay(8); } return (temp); } /**********写命令********************/ void sd_writecmd(uchar *command) { uchar temp=0,times,i; for(i=0;i<6;i++) { spi_write(command[i]); } do { temp=spi_read(); times++; }while((temp==0xff)&& times<100); //等待响应,如果不是0xff,表明写命令成功,如果超时也退出写命令状态 // return(temp); } /*********************SD卡复位命令**********************/ uchar sd_reset() { uchar resetcmd[]={0x40,0x00,0x00,0x00,0x00,0x95}; //复位命令 uchar temp,i,time; flag=1; cs=1; //一般状态,片选无效 for( i=0;i<15;i++) //复位之前先要写入74个以上的时钟脉冲 { spi_write(0xff); } cs=0;//片选信号有效 do { sd_writecmd(resetcmd); temp=spi_read(); time++; if(time==100) return(reset_error); //其实没有任何意义,返回也不知道 ,但是还是会继续写命令,一直等到成功 } while(temp!=0x01); cs=1;//片选无效 spi_write(0xff);//按通信要求,补足八个时钟 return 0; } /******************SD卡初始化************************/ uchar sd_initial() { uchar temp,i,time; uchar initialcmd[]={0x41,0x00,0x00,0x00,0x00,0xff}; //复位命令,数据的初始化一定得放在前面,就像定义一个变量一样,否则会出现未定义的情况,如下第三行 flag=1; cs=1; //一般状态,片选无效 /********uchar initialcmd[]={0x41,0x00,0x00,0x00,0x00,0xff};********/ for( i=0;i<15;i++) //复位之前先要写入74个以上的时钟脉冲 { spi_write(0xff); } cs=0;//片选信号有效 do { sd_writecmd(initialcmd); temp=spi_read(); time++; if(time==100) return(initial_error); //其实没有任何意义,返回也不知道 ,但是还是会继续写命令,一直等到成功 } while(temp!=0x00); cs=1;//片选无效 spi_write(0xff);//按照通信要求,补足8个时钟 flag=0;//初始化完毕,标志清零,以提高通信速率 return (0); } /*****************写扇区**********************/ uchar sd_writesector(unsigned long address,uchar *digbuf) //定义digbuf为指向数据缓冲区的指针,address为32位的扇区地址 { uchar temp,i,result1; uchar sdwritesector[]={0x58,0x00,0x00,0x00,0x00,0xff};// 写扇区的字节序列命令 address=address<<9;//将扇区地址转换为字节地址,原每一扇区为512字节//不用担心溢出,不会超出 sdwritesector[1]=(address>>24)&0xff;//高字节地址 sdwritesector[2]=(address>>16)&0xff; sdwritesector[3]=(address>>8)&0xff; //sdwritesector[4]=address&0xff; //低字节地址 flag=0; cs=0; sdelay(20); do { sd_writecmd(sd_writesector); temp=spi_read(); }while(temp!=0x00); for(i=0;i<10;i++) { spi_read();//同时插入时钟信号,这里采用的是spi_read()函数,原因是在写状态下,避免在SI线上的误操作 } spi_write(0xfe);//起始字节,开始写入512字节的数据 for(i=0;i<512;i++) { spi_write(digbuf[i]); } spi_write(0xff); spi_write(0xff); //两字节校验码,不忙关心 result1=spi_read()&0x1f; if(result1!=0x05) { return( writes_error );//返回写错误 } while( spi_read!=0xff); //等待忙完成 cs=1;//关闭片选 spi_write(0xff);//补8个时钟 return(0);//写扇区成功 } /**************读扇区*********************/ sd_readsector(unsigned long address,uchar *digbuf) //定义digbuf为指向数据缓冲区的指针 { uchar m,j,result3,result4; uchar sdreadsector[]={0x51,0x00,0x00,0x00,0x00,0xff};// 读扇区的字节序列命令 address=address<<9;//将扇区地址转换为字节地址,原每一扇区为512字节//不用担心溢出,不会超出 sdreadsector[1]=(address>>24)&0xff;//高字节地址 sdreadsector[2]=(address>>16)&0xff; sdreadsector[3]=(address>>8)&0xff; //sdwritesector[4]=address&0xff; //低字节地址 flag=0; cs=0; sdelay(20); //之前进行相应的延时 // sd_writecmd(sdreadsector); // while(spi_read!=0x00); do { sd_writecmd(sdreadsector); result3=spi_read(); }while(result3!=0x00); for(j=0;j<10;j++) { spi_write(0xff); //插入若干个时序 } while(spi_read()!=0xfe); //读扇区开始 for(m=0;m<512;m++) { digbuf[m]=spi_read(); } result4=spi_read(); result4=spi_read(); cs=1;//片选无效 spi_write(0xff);//补尝8个时钟 return(0); } /***********************目标文件搜索***********************/ //搜索的结果为所在的簇号和文件总字节 /*unsigned long searchbyte_address() { unsigned long temp,temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8; uchar databuf[512]; sd_readsector(3928,databuf); for(p=8;p<512;p+32) { if((databuf[p]=0x4d)&&(databuf[p+1]=0x50)&&(databuf[p+2]=0x33))//MP3类型文件 { temp1=databuf[p+13];//以下四行为簇地址 temp2=databuf[p+12]; temp3=databuf[p+19]; temp4=databuf[p+18]; temp5=databuf[p+23];//以下四行为总字节数 temp6=databuf[p+22]; temp7=databuf[p+21]; temp8=databuf[p+20]; cluster=((temp1<<24)+(temp2<<16)+(temp3<<8)+temp4)-2;//获得所在簇间隔 G_address=cluster<<8+3928;//文件所在扇区 size=((temp5<<24)+(temp6<<16)+(temp7<<8)+temp4)>>9;//获得文件总扇区 for(temp=0;temp<size;temp++) { sd } } } }*/ void main() { uchar i; sd_reset(); sd_initial(); for(i=0;i<80;i++) { pbuf[i]=i; } sd_writesector(100,pbuf); while(1); }
评论
    相关推荐
    • 数据库课程设计
      数据库课程设计使用,使用MFC编写的界面,连接ODBC数据源,方便移植。
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...