单片机主程序流程图的作用

单片机主程序流程图的作用,第1张

控制系统各部件的初始化和实现各功能子程序的调用。根据道客巴巴官网查询。单片机程序不是从零开始,而是先对已有的相关程序进行阅读分析。分析程序是设计、修改、优化、维护的重要步骤。因此,掌握单片机程序的分析方法是非常必要的。头文件,变量声明,函数声明,子函数,主函数这几部分组成,头文件其实就是一种声明,将单片机中的一些常用的符号变量进行定义声明,对一些特殊功能寄存器进行声明,对一些关健字进行定义,比如我们常用的P0口,在写程序的时候你就不用在去定义这个符号,不用把它的字节地址给这个符号了。

C语言只有一个入口函数 一般情况下是 main函数,程序是从 main 函数的第一行开始执行的,其他的都是子函数,main函数是由编译器提供的启动初始化库调用的,其他子函数是由main函数直接或者间接调用的。

还有一种比较特殊的函数, T0_TNT() 你可能注意到 后边的 interrupt 1, 这个函数是中断处理函数,顾名思义,这个函数可以打断其他函数的执行,等待自己执行完成之后再去执行被中断的函数。这类函数不会被 main 函数直接或者间接调用。一般是交给系统,满足特定条件才会触发的(你要配置启用中断功能)。

程序就不逐句讲解了,看起来没有什么难度,除了几个 *** 作寄存器的语句,大多数都是 C 语言的基础语句,还是自己分析一下收获才会更多。

51内核的单片机,找对应的 芯片参考手册 边查边看,一共就二十来个寄存器,看多了就熟了。

画主程序流程图,看懂主函数的程序,按照main()函数中的具体书写过程来画,例如:程序开始、定义变量、初始化变量、使用选择或者循环或者顺序结构、调用某一个子函数、(可以没有)程序结束。

计数count=0 char c=要统计的字符

循环遍历字符串数组的每一位

if(当前遍历到的字符==c)

{

count++;

}

//执行下次循环

else

{

cotinue;

}

没有工具不好画图 这个自己画一下把 很好画的

你好!

Keil5本身并不提供直接生成流程图的功能,但可以使用一些工具来生成流程图。

下面介绍一些生成Keil5程序流程图和子程序流程图的方法:

使用Doxygen工具

Doxygen是一种自动化文档生成工具,它可以自动分析源代码并生成各种文档,包括流程图。在Keil5中,可以将程序文件导出为一个文件夹,然后使用Doxygen对该文件夹进行分析,生成程序流程图和子程序流程图。具体使用方法可以参考Doxygen的官方文档。

使用GraphViz工具

GraphViz是一种开源的图形可视化工具,它可以生成各种流程图、状态图等。在Keil5中,可以将程序文件导出为一个dot文件,然后使用GraphViz将该文件转换成流程图。具体使用方法可以参考GraphViz的官方文档。

使用Cscope工具

Cscope是一种代码浏览器,它可以方便地查找函数、变量、宏等。在Keil5中,可以使用Cscope查找程序中的函数和调用关系,然后手动绘制流程图和子程序流程图。

另一个函数就用方框表示,里面写上函数功能描述,在主流程走到调用的地方用箭头指向这个方框。然后根据函数的返回值,再分出多个箭头指向下一个流程(比如函数返回1执行下一步,返回0执行异常处理。那么就分两个箭头分别标注1和0,然后分别指向下一个流程和异常处理的函数)。

#include <stdioh>

#include<stdlibh>

int max(int a[], int n)

{

int tmp = a[0];

for (int i = 0; i!=n; ++i)

if (tmp < a[i])

tmp = a[i];

return tmp;

}

int min(int a[], int n)

{

int tmp = a[0];

for (int i = 0; i!=n; ++i)

if (tmp > a[i])

tmp = a[i];

return tmp;

}

int main()

{

int num = 0, len=0;

printf("请输入数的个数:");

scanf("%d",&len);

num = (int )malloc(sizeof(int)len);

printf("请输入所有的数:");

for (int i = 0; i!=len; ++i)

scanf("%d",&num[i]);

printf("最大值为%d\n",max(num, len));

printf("最小值为%d\n",min(num, len));

return 0;

}

扩展资料

写两个函数,分别求两个整数的最大公约数和最小公倍数。用主函数调用这两个函数,并输出结果。两个整数由键盘输入。

请输入45 ,25验证结果

#include<stdioh>

int max(intx,int y);

int min(intx,int y);

int main()

{

inta,b,imax,imin,t;

printf("请输入两个整数:\n");

scanf("%d,%d",&a,&b);

if(a<b)

{

t=a;

a=b;

b=t;

}

imax=max(a,b);

imin=min(a,b);

printf("最大公约数为:%d,最小公倍数为:%d",imax,imin);

return 0;

}

int max(intx,int y)

{

intm,k,p;

k=x;

p=y;

while(y!=0)

{

m=x%y;

x=y;

y=m;

}

return x;

}

int min(intx,int y)

{

int max(intx,int y);

int w;

w=max(x,y);

return ((xy)/w);

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12183788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存