znFAT.docx
《znFAT.docx》由会员分享,可在线阅读,更多相关《znFAT.docx(85页珍藏版)》请在冰豆网上搜索。
znFAT
#ifndef__UART_H__
#define__UART_H__
//UART相关函数------------------------
voidUART_Init();
voidUART_Send_Byte(unsignedcharmydata);
voidUART_Send_Str(char*s);
voidUART_Send_Enter();
voidu32tostr(unsignedlongdat,char*str);
unsignedlongstrtou32(char*str);
voidUART_Put_Num(unsignedlongdat);
voidUART_Put_Inf(char*inf,unsignedlongdat);
voidbinary(unsignedchardat);
//UART----END-------------------------------
#endif
#ifndef_MYFUN_H_
#define_MYFUN_H_
原创程序模块公共函数部分|
voiddelay(unsignedinttime);//延时函数
voidu32tostr(unsignedlongdat,char*str);//将一个32位的变量dat转为字符串
unsignedlongstrtou32(char*str);//将一个字符串转为32位的变量
#endif
#include
#include
#include"uart.h"
#include"myfun.h"
/**
|振南电子原创程序模块STC51串口操作|
**************************/
/**************************************************************************
-功能描述:
51单片机的串口初始化
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
无
-返回说明:
无
-注:
振南的很多产品均采用串口来进行操作,所以正确的初始化串口十分重要
**************************************************************************/
voidUART_Init()
{
PCON|=0x80;//PCON的最高位SMOD=1时波特率加倍
TMOD=0x20;//时器1为方式2初值自动装入产生波特率
TH1=0xfd;//定时器初始为0XFd,晶振为22.1184MHz,本函数实际产生的波特率为38400bps
TL1=0xfd;//同上
SCON=0x50;//串口设置为方式1,REN=1,允许接收
TR1=1;//启动定时器1
ES=1;//使能串口接收中断,
EA=1;//打开所有中断
}
/**************************************************************************
-功能描述:
51单片机的串口中断处理函数
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用(在此中断函数中常用来处理从串口收到的数据)
-参数说明:
无
-返回说明:
无
-注:
振南的很多产品,都是配合“超级终端”来进行演示的,在“超级终端”中
敲入的命令就是从计算机的串口发出,由单片机从串口接收,接收到的串口
数据就在此中断函数中进行处理,完成命令接收及处理、命令解析等工作。
**************************************************************************/
voidsio_int()interrupt4using3//串口中断函数
{
ES=0;
//串口中断处理
/*
if(RI)
{
if(SBUF!
=0x08)//如果接收到的是退格(ASCII码为0x08)
cmd_buf[counter++]=SBUF;
else
counter--;
RI=0;
}
if(SBUF==0x0d)
{
cmd_buf[counter-1]=0;
counter=0;
flag=1;
}
*/
ES=1;
}
/**************************************************************************
-功能描述:
51单片机的串口发送字节的函数
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
mydata:
要发送的一个字节
-返回说明:
无
-注:
发送一个字节,是串口发送的基础操作
**************************************************************************/
voidUART_Send_Byte(unsignedcharmydata)
{
ES=0;
TI=0;
SBUF=mydata;
while(!
TI);
TI=0;
ES=1;
}
/**************************************************************************
-功能描述:
51单片机的串口发送0d0a,即回车换行
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
无
-返回说明:
无
-注:
此函数就是发送0d0a这两个字节,在“超级终端”上会有回车换行的效果
**************************************************************************/
voidUART_Send_Enter()
{
UART_Send_Byte(0x0d);
UART_Send_Byte(0x0a);
}
/**************************************************************************
-功能描述:
51单片机的串口发送字符串
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
s:
指向字符串的指针
-返回说明:
无
-注:
如果在字符串中有'\n',则会发送一个回车换行
**************************************************************************/
voidUART_Send_Str(char*s)
{
intlen=strlen(s)-1;
inti;
for(i=0;iUART_Send_Byte(s[i]);
if(s[i]=='\n')
{
UART_Send_Enter();
}
else
{
UART_Send_Byte(s[i]);
}
}
/**************************************************************************
-功能描述:
51单片机的串口发送数值
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
dat:
要发送的数值
-返回说明:
无
-注:
函数中会将数值转为相应的字符串,发送出去。
比如4567转为"4567"
**************************************************************************/
voidUART_Put_Num(unsignedlongdat)
{
chartemp[20];
u32tostr(dat,temp);
UART_Send_Str(temp);
}
/**************************************************************************
-功能描述:
51单片机的串口发送调试信息
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
inf:
指向提示信息字符串的指针
dat:
一个数值,前面的提示信息就是在说明这个数值的意义
-返回说明:
无
-注:
此函数在振南的工程中会经常看到,是方便调试用的
**************************************************************************/
voidUART_Put_Inf(char*inf,unsignedlongdat)
{
UART_Send_Str(inf);
UART_Put_Num(dat);
UART_Send_Str("\n");
}
/*
voidbinary(unsignedchardat)
{
unsignedchari;
unsignedchara[17];
for(i=0;i<8;i++)
{
a[i]=((dat<
'o':
'';
}
a[i]=0;
for(i=0;i{
UART_Send_Byte(a[i]);
UART_Send_Byte('');
}
}
*/
UART.c
#include
#include
#include"uart.h"
#include"myfun.h"
/*******************************************************
+-----------------------------------------+
|振南电子原创程序模块STC51串口操作|
+-----------------------------------------+
此源码版权属振南全权享有,如欲引用,敬请署名并告知
严禁随意用于商业目的,违者必究,后果自负
振南电子
->产品网站
->产品论坛
->产品网店
->产品咨询QQ:
987582714MSN:
yzn07@
WW:
yzn07
********************************************************/
/**************************************************************************
-功能描述:
51单片机的串口初始化
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
无
-返回说明:
无
-注:
振南的很多产品均采用串口来进行操作,所以正确的初始化串口十分重要
**************************************************************************/
voidUART_Init()
{
PCON|=0x80;//PCON的最高位SMOD=1时波特率加倍
TMOD=0x20;//时器1为方式2初值自动装入产生波特率
TH1=0xfd;//定时器初始为0XFd,晶振为22.1184MHz,本函数实际产生的波特率为38400bps
TL1=0xfd;//同上
SCON=0x50;//串口设置为方式1,REN=1,允许接收
TR1=1;//启动定时器1
ES=1;//使能串口接收中断,
EA=1;//打开所有中断
}
/**************************************************************************
-功能描述:
51单片机的串口中断处理函数
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用(在此中断函数中常用来处理从串口收到的数据)
-参数说明:
无
-返回说明:
无
-注:
振南的很多产品,都是配合“超级终端”来进行演示的,在“超级终端”中
敲入的命令就是从计算机的串口发出,由单片机从串口接收,接收到的串口
数据就在此中断函数中进行处理,完成命令接收及处理、命令解析等工作。
**************************************************************************/
voidsio_int()interrupt4using3//串口中断函数
{
ES=0;
//串口中断处理
/*
if(RI)
{
if(SBUF!
=0x08)//如果接收到的是退格(ASCII码为0x08)
cmd_buf[counter++]=SBUF;
else
counter--;
RI=0;
}
if(SBUF==0x0d)
{
cmd_buf[counter-1]=0;
counter=0;
flag=1;
}
*/
ES=1;
}
/**************************************************************************
-功能描述:
51单片机的串口发送字节的函数
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
mydata:
要发送的一个字节
-返回说明:
无
-注:
发送一个字节,是串口发送的基础操作
**************************************************************************/
voidUART_Send_Byte(unsignedcharmydata)
{
ES=0;
TI=0;
SBUF=mydata;
while(!
TI);
TI=0;
ES=1;
}
/**************************************************************************
-功能描述:
51单片机的串口发送0d0a,即回车换行
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
无
-返回说明:
无
-注:
此函数就是发送0d0a这两个字节,在“超级终端”上会有回车换行的效果
**************************************************************************/
voidUART_Send_Enter()
{
UART_Send_Byte(0x0d);
UART_Send_Byte(0x0a);
}
/**************************************************************************
-功能描述:
51单片机的串口发送字符串
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
s:
指向字符串的指针
-返回说明:
无
-注:
如果在字符串中有'\n',则会发送一个回车换行
**************************************************************************/
voidUART_Send_Str(char*s)
{
intlen=strlen(s)-1;
inti;
for(i=0;iUART_Send_Byte(s[i]);
if(s[i]=='\n')
{
UART_Send_Enter();
}
else
{
UART_Send_Byte(s[i]);
}
}
/**************************************************************************
-功能描述:
51单片机的串口发送数值
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
dat:
要发送的数值
-返回说明:
无
-注:
函数中会将数值转为相应的字符串,发送出去。
比如4567转为"4567"
**************************************************************************/
voidUART_Put_Num(unsignedlongdat)
{
chartemp[20];
u32tostr(dat,temp);
UART_Send_Str(temp);
}
/**************************************************************************
-功能描述:
51单片机的串口发送调试信息
-隶属模块:
STC51串口操作
-函数属性:
外部,使用户使用
-参数说明:
inf:
指向提示信息字符串的指针
dat:
一个数值,前面的提示信息就是在说明这个数值的意义
-返回说明:
无
-注:
此函数在振南的工程中会经常看到,是方便调试用的
**************************************************************************/
voidUART_Put_Inf(char*inf,unsignedlongdat)
{
UART_Send_Str(inf);
UART_Put_Num(dat);
UART_Send_Str("\n");
}
/*
voidbinary(unsignedchardat)
{
unsignedchari;
unsignedchara[17];
for(i=0;i<8;i++)
{
a[i]=((dat<
'o':
'';
}
a[i]=0;
for(i=0;i{
UART_Send_Byte(a[i]);
UART_Send_Byte('');
}
}
*/
#ifndef_MYTYPE_H_
#define_MYTYPE_H_
#defineUINT8Xunsignedcharxdata
#defineUINT8unsignedchar
#defineUINT16Xunsignedintxdata
#defineUINT16unsignedint
#defineUINT32Xunsginedlongxdata
#defineUINT32unsignedlong
#defineINT8Xcharxdata
#defineINT8char
#defineINT16Xintxdata
#defineINT16int
#defineINT32Xlongxdata
#defineINT32long
#endif
#ifndef__ZNFAT_H__
#define__ZNFAT_H__
#include"mytype.h"//类型重定义
/*******************************************************
+-----------------------------------------+
|振南电子原创程序模块znFAT文件系统5.18|
+-----------------------------------------+
********************************************************/
//znFAT的裁减宏---------------------------------------------------------
//#defineZNFAT_ENTER_DIR//有此宏,函数znFAT_Enter_Dir()参与编译
//#defineZNFAT_OPEN_FILE//有此宏,函数znFAT_Open_File()参与编译
//#defineZNFAT_SEEK_FILE//有此宏,函数znFAT_Seek_File()参与编译
//#defineZNFAT_READ_FILE//有此宏,函数znFAT_Read_File()参与编译
//#defineZNFAT_READ_FILEX//有此宏,函数znFAT_Read_FileX()参与编译
//#defineZNFAT_ADD_DAT//有此宏,函数znFAT_Add_Dat()参与编译
//#defineZNFAT_CREATE_DIR//有此宏,函数znFAT_Create_Dir()参与编译
//#defineZNFAT_CREATE_FILE//有此宏,函数znFAT_Create_File()参与编译
//#defineZNFAT_DEL_FILE//有此宏,函数znFAT_Del_File()参与编译
//#defineZNFAT_XCOPY_FILE//有此宏,函数znFAT_XCopy_File()参与编译
//#defineZNFAT_RENAME_FILE//有此宏,函数znFAT_Rename_File()参与编译
//#defineZNFAT_GET_TOTAL_SIZE//有此宏,函数znFAT_Get_Total_Size()参与编译
//#defineznFAT_GET_REMAIN_CAP//有此宏,函数znFAT_Get_Remain_Cap()参与编译
#include"cj.h"
#include"cj.h"
//----------------------------------------------------------------------
#def