标题: 有程序,但怎么写程序流程图?求方法 [打印本页]
作者: yanyyh 时间: 2019-5-12 22:42
标题: 有程序,但怎么写程序流程图?求方法
#include "reg51.h"
#include "intrins.h"
unsigned char code SMG_CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”
sbit AnJan_1=P1^0;
sbit AnJan_2=P1^1;
sbit AnJan_3=P1^2;
sbit AnJan_4=P1^3;
sbit AnJan_5=P1^4;
sbit AnJan_6=P1^5;
sbit AnJan_7=P1^6;
sbit AnJan_8=P1^7;
sbit start=P3^1; //开始键
sbit reset=P3^2; //复位键
sbit BZ=P3^0; //蜂鸣器
char i,a,state=0;
void Yanshi10ms(unsigned int m) //误差0us
{
unsigned char j,h;
for(;m>0;m--)
for(h=38;h>0;h--)
for(j=130;j>0;j--);
}
void main()
{
BZ=1;
TMOD=0x01; //定时器0方式1
TH1=(65536-50000)/256; //恢复定时器1初值
TL1=(65536-50000)%256;
EA=1;
P0=0x00;
while (1)
{
while(state==0)
{
if(start==0)
{
Yanshi10ms(1);
if(start==0)
{
P0 = 0x40;
BZ=0;
ET1=1;TR1=1;
a=0;
state=1;
while(start==0);
}
}
}
while(state==1)
{
if(AnJan_1==0)
{
P0 = SMG_CODE[1];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_2==0)
{
P0 = SMG_CODE[2];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_3==0)
{
P0 = SMG_CODE[3];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_4==0)
{
P0 = SMG_CODE[4];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_5==0)
{
P0 = SMG_CODE[5];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_6==0)
{
P0 = SMG_CODE[6];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_7==0)
{
P0 = SMG_CODE[7];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(AnJan_8==0)
{
P0 = SMG_CODE[8];
BZ=0;
ET1=1;TR1=1;
state=2;
}
if(reset==0)
{
state=0;
P0=SMG_CODE[17];
BZ=1;
break;
}
}
while(state==2)
{
if(reset==0)
{
state=0;
BZ=1;
P0=SMG_CODE[17];
break;
}
}
}
}
void Dingshiqi1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
a++;
if(a>=20)
{
ET1=0;TR1=0;
a=0;
BZ=1;
}
}
作者: yzwzfyz 时间: 2019-5-13 08:11
这是个逆向工程,考你的程序阅读能力和理解能力,通常必须配合硬件资料!
作者: 17722827926 时间: 2019-5-13 09:07
先理清代码背后的数学逻辑关系,然后看每段功能代码之间的关系,分清先后顺序,就可以写出来了
作者: 蓝廊坊市 时间: 2019-5-13 09:52
理清程序怎么运行的照着画就行
作者: zhujian1234 时间: 2019-5-13 20:33
有自动生成流程图的软件,AutoFlowchart,了解一下。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |