以前记录的一些单片机编程心得

来源:本站
导读:目前正在解读《以前记录的一些单片机编程心得》的相关信息,《以前记录的一些单片机编程心得》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《以前记录的一些单片机编程心得》的详细说明。
简介:文章内容为延时程序的处理、for循环的处理、对外设的操作、标准库函数的使用的讲解。

一、延时程序的处理:

1、对于可以设置系统时钟的单片机,延时程序统一先把系统时钟设频率置为最低,然后按这个最低时钟频率写延时函数,这样的好处:第一,统一了不同系统时钟下的延时;第二,降低功耗

2、对于单片机系统,不同的外部时钟,延时程序对应的时间不同,为了方便使用,加入预编译指令#ifdef/#else/#endif 这样如果预定义了一个系统时钟,则选择相应的延时参数进行编译,而延时程序主体不变,只是里面有一个延时参数,根据预定义选择相应参数。

二、for循环的处理:

用for(i=XX,i>0,i--) 而不用for(i=0;i<XX,i++) 速度快

对于两层或多层for循环,频繁的循环放在内层,减少循环间跳转花费的时间

三、对外设的操作:可以把外设作为一个文件来操作,比如液晶,就可以把液晶看作一个文件,往液晶打印字符串或者数据,就可以用fprintf()来做,(51的C标准库不支持,但是可以自己写一个文件操作的库)。只要是输入输出设备,都试着用文件操作的方法去操作。

四、标准库函数的使用:

1、标准输入输出库(stdio.h):

字符串夹杂变量数字(比如:发送完nihao字符串,然后发送变量i的值)往液晶显示或往串口发送的时候,往串口发送可以使用格式输出函数printf("nihao%d",i);但是往LCD显示就不好做了,通常是写一个数字转字符串的函数,然后先送原来的字符串,再送数字转换后的字符串,太麻烦,可以使用标准输入输出库里的sprintf()函数来完成,它的原型为:sprintf(char *buffer, const char *format, …),*buffer是要把字符串和变量写入的缓冲区,可以使用数组或者指针,后面的格式和printf()函数一样; 与之对应的还有sscanf()函数,从缓冲区读一个字符串把它转成相应的类型后赋给指定的变量。

比如:

#include

void PrintToLcd(unsigned char *str)

{

...

}

void main()

{

unsigned char *p;

unsigned char i = 50;

sprintf(p,"nihao%d",i);

PrintToLcd(p);

}

2、字符串库(string.h)

字符串连接(相加) char *strcat(char *dest,const char *stc)

把src连接到dest字符串后面,返回指向dest的指针

字符串比较 int strcmp(char *str1,char *str2)

返回值:小于0: str1<str2,等于0: str1=str2,大于0: str1>str2

字符串拷贝1 char *strcpy(char *dest,const char *src)

结果把src的内容拷进dest,两个字符串内容相同,返回指向dest的指针

字符串拷贝2 char *strdup(const char *src)

src:待拷贝的源字符串,返回值:指向拷贝后的字符串的指针

字符串倒序 char *strrev(char *s);

返回指向倒序后字符串的指针

3、类型转换(math.h; stdlib.h)

字符串转双精度(类似C++Builder里的StrToDouble) double atof(char *str)

字符串转整数(类似StrToInt) int atoi(char *str)

字符串转长整型 long atol(char *str)

浮点数转字符串 char *ecvt(double value,int ndigit,int*dec,int *sign)

char *fcvt(double value,int ndigit,int*dec,int *sign)

输入参数:value: 待转换浮点数,ndigit: 转换后的字符串长度

输出参数:dec: 小数点位置,sign: 符号

返回转换后的字符串指针

整型转字符串 char *itoa(int value,char *string,int radix)

输入参数:value: 要转换的数,radix: 转换的进制

输出参数:string: 转换后的字符串

返回指向string的指针

长整型转字符串 char *ltoa(long value,char *string,int radix)

提醒:《以前记录的一些单片机编程心得》最后刷新时间 2024-03-14 01:02:26,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《以前记录的一些单片机编程心得》该内容的真实性请自行鉴别。