2236|4

41

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求问一个简单程序~~ [复制链接]

#include
#include
#define uchar unsigned char
#define uint  unsigned int
uchar code table1[]={0x3c,0x99,0xc3,0xe7};
uchar code table2[]={0xe7,0xc3,0x99,0x3c};
uint i,j;
uchar temp;
//void delay();
void circulate_s_o();
void circulate_led1();
void circulate_led2();
void flash();
void dark();

void main()
{
        circulate_s_o();
        circulate_led1();
        circulate_led2();
        flash();
        dark();
}

/*void delay()
{
        for(i=400;i>0;i--)
                for(j=400;j>0;j--);
}*/

void circulate_s_o()
{
        for(i=0;i<3;i++)
        {
                P0=0xaa;
        //        delay();
                P0=0x55;
        //        delay();
        }
}

void circulate_led1()
{       
        for(j=0;j<3;j++)
        {       
                P0=0xfe;               
                for(i=0;i<7;i++)
                {
                        temp=P0;
                        temp=_crol_(temp,1);
                        P0=temp;
                //        delay();
                }
                P0=0x7f;
                for(i=0;i<7;i++)
                {
                        temp=P0;
                        temp=_cror_(temp,1);
                        P0=temp;
                //        delay();
                }
         }
}

void circulate_led2()
{       
        for(i=0;i<3;i++)
        {
                P0=table1[i%10];
                //delay();
        }
        for(i=0;i<4;i++)
        {
                P0=table2[i%10];
                //delay();
        }       
}

void flash()
{
        for(i=0;i<3;i++)
        {
                P1=0xff;
                //delay();
                P1=0x00;
                //delay();
        }       
}

void dark()
{
        P1=0xff;
}


我就不知道这个程序为什么运行会一直执行第一个子函数。
结果就是一直在显示第一个子函数的功能。
为什么不能运行到后面呢? 求大神!
此帖出自51单片机论坛

最新回复

少了一个循环,其余一切都正常啊! void main() {      while(1)             {                    circulate_s_o();         circulate_led1();         circulate_led2();         flash();         dark();                 } } 或者: void main() {         circulate_s_o();         circulate_led1();         circulate_led2();         flash();         dark();         while(1){} }  详情 回复 发表于 2014-3-20 12:54
点赞 关注
 

回复
举报

116

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
uint i,j;
不要定义成全局变量,换成局部变量试试!
提醒一下,
void main()
{
       while(1)
      {
        circulate_s_o();
        circulate_led1();
        circulate_led2();
        flash();
        dark();
     }
}
此帖出自51单片机论坛

点评

为什么 不能定义为全局变量呢? 不是这个子程序执行完了,就不会再执行这个子程序了吗?  详情 回复 发表于 2014-3-19 17:56
 
 
 

回复

41

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
abu315 发表于 2014-3-19 17:28
uint i,j;
不要定义成全局变量,换成局部变量试试!
提醒一下,

为什么 不能定义为全局变量呢?
不是这个子程序执行完了,就不会再执行这个子程序了吗?
此帖出自51单片机论坛

点评

全局变量的命名最好有一定的意义,便于识别,增加可读性;i,j是比较常用的变量,命名简单,一般用作局部变量。 我们在用单片机的时候,大循环的方式是比较常见的,所以用了while(1),使程序循环起来。  详情 回复 发表于 2014-3-20 11:23
 
 
 

回复

116

帖子

0

TA的资源

一粒金砂(高级)

4
 
xywust 发表于 2014-3-19 17:56
为什么 不能定义为全局变量呢?
不是这个子程序执行完了,就不会再执行这个子程序了吗?

全局变量的命名最好有一定的意义,便于识别,增加可读性;i,j是比较常用的变量,命名简单,一般用作局部变量。
我们在用单片机的时候,大循环的方式是比较常见的,所以用了while(1),使程序循环起来。
此帖出自51单片机论坛
 
 
 

回复

173

帖子

0

TA的资源

纯净的硅(初级)

5
 
少了一个循环,其余一切都正常啊!

void main()
{
     while(1)
            {       
            circulate_s_o();
        circulate_led1();
        circulate_led2();
        flash();
        dark();
                }
}


或者:
void main()
{
        circulate_s_o();
        circulate_led1();
        circulate_led2();
        flash();
        dark();
        while(1){}
}
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表