打印

c语言 没有main()函数,什么原因啊?谢谢!

[复制链接]
4638|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyhkerry|  楼主 | 2008-7-18 14:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有高手在吗?我从网上下载一个c语言程序,控制nandflash的 没有main() 主函数 这是为什么啊?
程序里面也没有定义什么的,这段是什么一思啊  谢谢啊!小弟急求啊!

程序如下:
unsigned char ReadByte(unsigned int blockadd,unsigned char pageadd);
unsigned char ReadSpare(unsigned int blockadd,unsigned char pageadd);
unsigned char ReadStatus(void);
unsigned int ReadID(void);
void BadBlockScan(void);
void CopyBack(unsigned int blockaddh_s,blockaddh_e);
void EraseBlock(unsigned int blockadd);
void NfAddre(unsigned int blockadd,unsigned char pageadd);
void NfCommand(unsigned char Com);
void ReadPage(unsigned int blockadd,unsigned char pageadd);
void ReadPageS(unsigned int blockadd,unsigned char select,pageadd);
void WirteByte(unsigned int blockadd,unsigned char pageadd,unsigned char buf);
void WirtePage(unsigned int blockadd,unsigned char pageadd);
void WirtePageF(unsigned int blockadd);
void WirteSpare(unsigned int blockadd,unsigned char pageadd,unsigned char buf);

/*=============================================================================
//参    数: unsigned char Com
//函数功能: 向K9F5608操作命令
=============================================================================*/
void NfCommand(unsigned char Com)
{
 NF_CLE=1;
 NF_WE=0;
 P1=Com;
 _nop_();
 NF_WE=1;
 NF_CLE=0;
 P1=0xff;
}
/*=============================================================================
//参    数: unsigned int bolckadd  2nd 3th的地址 (Row地址)
      unsigned char pageadd  1st的地址   (Column地址)
//函数功能: 向K9F5608送地址
=============================================================================*/
void NfAddre(unsigned int blockadd,unsigned char pageadd)
{
 NF_ALE=1;
 NF_WE=0;
 P1=pageadd;
 _nop_();
 NF_WE=1;              

 //送地址第一个字节
 NF_WE=0;
 P1=blockadd&0xff;
 _nop_();
 NF_WE=1;              

 //送地址第二个字节
 NF_WE=0;
 P1=blockadd/256;
 _nop_();
 NF_WE=1;              

 //送地址第三个字节
 NF_ALE=0;
 P1=0xff;
}
/*=============================================================================
//参    数: unsigned int blockaddh  2nd 3th的地址 (Row地址)

//函数功能: 页读 PAGE READ OPERATION
      可连续读512个字节
=============================================================================*/

void ReadPageF(unsigned int blockadd)
{
 unsigned int i;
 NF_RE=1;NF_CE=0;NF_CLE=0;NF_ALE=0;NF_WE=1;NF_WP=1;
 NfCommand(0);             //送

读命令
 NfAddre(blockadd,0);         //送开始字节
 NF_RB=1;while(!NF_RB);        //Data Transfer from Cell to Register 

max 10us
 i=0;
 P1=0xff;
 do
 {
  NF_RE=0;
  DataArray=P1;
  NF_RE=1;
  i++;
 }
 while(i<512);             //第1

页数据传送数据完成
 NF_CE=1;
}
/*=============================================================================
//参    数: unsigned int blockaddh  2nd 3th的地址 (Row地址)
      unsigned char pageadd  1st的地址   (Column地址)
//函数功能: 页读 PAGE READ OPERATION
      可连续写256个字节
=============================================================================*/

void ReadPage(unsigned int blockadd,unsigned char pageadd)
{
 unsigned char i;
 NF_RE=1;NF_CE=0;NF_CLE=0;NF_ALE=0;NF_WE=1;NF_WP=1;
 NfCommand(0);             //送

读命令
 NfAddre(blockadd,pageadd);      //送开始字节地址
 NF_RB=1;while(!NF_RB);        //Data Transfer from Cell to Register 

max 10us
 i=0;
 P1=0xff;
 do
 {
  NF_RE=0;
  DataArray=P1;
  NF_RE=1;
  i++;
 }
 while(i);              

 //页数据传送数据完成
 NF_CE=1;
}
/*=============================================================================
//参    数: unsigned int blockaddh  2nd 3th的地址 (Row地址)
      unsigned char pageadd  1st的地址   (Column地址)
//函数功能: 页读 PAGE READ OPERATION
      可连续写512个字节
//___没有调试
=============================================================================*/

void ReadPageS(unsigned int blockadd,unsigned char pageadd,select)
{
 NF_RE=1;NF_CE=0;NF_CLE=0;NF_ALE=0;NF_WE=1;NF_WP=1;
 NfCommand(select);          //送读命令
 NfAddre(blockadd,pageadd);      //送开始字节
 NF_RB=1;while(!NF_RB);        //Data Transfer from Cell to Register 

max 10us
 DataPtr+=pageadd;
 do
 {
  NF_RE=0;
  pageadd++;
  *DataPtr=P1;
  DataPtr++;
  NF_RE=1;
 }
 while(pageadd<256);             

//页数据传送数据完成
 NF_CE=1;
}
/*=============================================================================
//参    数: unsigned int blockaddh  2nd 3th的地址 (Row地址)
      unsigned char pageadd  1st的地址   (Column地址)
//函数功能: BYTE READ OPERATION 只读取一个字节
=============================================================================*/

unsigned char ReadByte(unsigned int blockadd,unsigned char pageadd)
{
 unsigned char i;
 NF_RE=1;NF_CE=0;NF_CLE=0;NF_ALE=0;NF_WE=1;NF_WP=1;
 NfCommand(0);             //送

读命令
 NfAddre(blockadd,pageadd);      //送开始字节
 NF_RB=1;while(!NF_RB);        //Data Transfer from Cell to Register 

max 10us
 NF_RE=0;
 P1=0xff;
 i=P1;
 NF_RE=1;
 NF_CE=1;
 return(i);
}
/*=============================================================================
//参    数: unsigned int blockaddh  2nd 3th的地址 (Row地址)
      unsigned char pageadd  1st的地址   (Column地址)
//函数功能: 保留字读 Command input sequence for programming ’C’ area
      只读一个字节
=============================================================================*/

unsigned char ReadSpare(unsigned int blockadd,unsigned char pageadd)
{
 unsigned char j;
 NF_RE=1;NF_CE=0;NF_CLE=0;NF_ALE=0;NF_WE=1;NF_WP=1;
 NfCommand(0x50);           

//读C页数据512-527
 NfAddre(blockadd,pageadd);      //送开始字节
 NF_RB=1;while(!NF_RB);        //Data Transfer from Cell to Register 

max 10us
 NF_RE=0;
 P1=0xff;
 j=P1;
 NF_RE=1;
 NF_CE=1;
 return(j);
}

相关下载

相关帖子

沙发
computer00| | 2008-7-18 14:58 | 只看该作者

部分代码而已吧。自己根据需要去调用。

使用特权

评论回复
板凳
hbicecream| | 2008-7-18 15:06 | 只看该作者

谁说C语言一定要main函数,呵呵

使用特权

评论回复
地板
dld2| | 2008-7-18 15:16 | 只看该作者

举个例子

lz写C程序的时候调用的库函数,多数也是C语言写的。它们也没有main函数。只在被调用时才起作用。

楼主可以把这个程序的函数当作库函数来用。

其实这是一个模块。大的C程序是由一个个模块构成的。

使用特权

评论回复
5
wyhkerry|  楼主 | 2008-7-18 16:08 | 只看该作者

学习了

今天又有收获了 谢谢哈~!

使用特权

评论回复
6
wyhkerry|  楼主 | 2008-7-18 16:50 | 只看该作者

include "..lib_config.h"

#include "..lib_config.h"                  /*  Selection of device*/
 这个是什么一思啊!! 

使用特权

评论回复
7
computer00| | 2008-7-18 17:03 | 只看该作者

相当于把上层目录中的lib_config.h文件的内容复制近来

使用特权

评论回复
8
wyhkerry|  楼主 | 2008-7-18 17:39 | 只看该作者

那这样作有何作用呢?

那这样作有何作用呢? 谢谢,有这方面的资料吗 没有用过啊 谢谢!

使用特权

评论回复
9
wlsui| | 2008-7-18 18:31 | 只看该作者

楼主最好先将C语言的基础打扎实些,

这样对自己各方面都有好处

使用特权

评论回复
10
hbicecream| | 2008-7-19 02:00 | 只看该作者

显性包含

#include "..lib_config.h"                  /*  Selection of device*/

采用完全路径包含文件

通常工程编译、链接默认搜索以自身所在目录为根目录的目录树,这条语句则以指明完全路径的方式包含文件,比如:#include "C:keilc51lib_config.h"

使用特权

评论回复
11
wyhkerry|  楼主 | 2008-7-19 09:31 | 只看该作者

谢谢各位的热心解答

谢谢各位的热心解答,小弟会努力学习的!
一遍不行,多看几遍,直到看懂看会为止!谢谢阿!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

92

帖子

1

粉丝