找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1746|回复: 2
收起左侧

怎么写采用分支结构主程序,以状态号标识系统所处的状态 求大神前辈解答

[复制链接]
ID:160971 发表于 2017-1-10 21:52 | 显示全部楼层 |阅读模式
怎么写采用分支结构主程序,以状态号标识系统所处的状态,状态0,1,2,3分别代表实现不同功能程序。这样说吧,就是把几个独立的程序写到单片机里,按键按一下运行第一个程序,按两下显示第二个程序,如此如此。求大神解答。

回复

使用道具 举报

ID:149988 发表于 2017-1-11 08:08 | 显示全部楼层

RE: 怎么写采用分支结构主程序,以状态号标识系统所处的状态 求大神前辈解答

这是一个单键控制多种流水灯程序,aa,bb,cc,dd,ee分别是4种不同的流水方式,y就是这几种方式的控制位,把你所需要的程序分别写进y所控制的语句中就差不多了。
#include<reg51.h>             //51系列单片机头文件
#include<intrins.h>           //51系列单片机头文件
#define uint unsigned int     //宏定义
#define uchar unsigned char   //宏定义
sbit k1=P1^0;
uchar aa,bb,cc,dd,ee,y=0;                     //定义一个变量,用来给P1口赋值
void delayms(uint xms)        //延时子函数
{
  uint i,j;
  for(i=xms;i>0;i--)      //i=xms即延时约xms毫秒
  for(j=110;j>0;j--);      
}
void key()
{
  uchar x;
  if(k1==0)
  {
    delayms(50);
    if(k1==0)
    {
      while(!k1);
      x++;
      if(x==5)
      x=1;
      if(y==5)
      x=0;
      switch(x)
      {
        case 1: y=1; break;
        case 2: y=2; break;
        case 3: y=3; break;
        case 4: y=4; break;        
        default: break;  
      }
    }
  }
}
void display()
{   
    if(y==0)
    {      
      P2=aa;           
      delayms(500);                  
      aa=~aa;           
    }
    if(y==1)
    {      
      P2=bb;            
      delayms(500);                     
      bb=_crol_(bb,1);         
    }
    if(y==2)
    {
      P2=cc;            
      delayms(500);                     
      cc=_cror_(cc,1);
    }      
    if(y==3)
    {
      P2=dd;           
      delayms(500);                     
      dd=~dd;     
    }
    if(y==4)
    {
      P2=ee;           
      delayms(500);                     
      ee=~ee;     
    }
  }
void main()            
{
  aa=0xff;            
  bb=0x01;
  cc=0xfe;
  dd=0xaa;
  ee=0xff;
  while(1)            
  {  
    key();
    display();
  }
}
回复

使用道具 举报

ID:160895 发表于 2017-1-11 10:27 | 显示全部楼层
你可以用SWITCH语句来实现你的功能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表