找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2582|回复: 3
打印 上一主题 下一主题
收起左侧

求解答,这个程序在单片机上为什么不按预想的工作

[复制链接]
跳转到指定楼层
楼主
ID:72822 发表于 2015-1-30 18:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
unsigned char LED;
void delay(unsigned int z);
void main()
{
        unsigned char a;
        LED=0X01;
           while(1)
           {
                for(a=0;a<8;++a)
                {
                        P0=LED;
                        delay(500);
                        LED=LED <<1;
                        LED=LED &  0xFF;
                }       
        }
}


void delay(unsigned int z)
{  unsigned char x,y;

   for(;z>0;z--)
   {       
   for(y=1110;y>0;y++)       
   {                  for(x=11110;x>0;x++) ;

   }
                           }
}
本想做一个流水灯,结果死活做不出来,求指教,不甚感激!!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:72751 发表于 2015-1-30 19:03 | 只看该作者

#include<reg52.h>
unsigned char LED;
void delay(unsigned int z);
void main()
{
        unsigned char a;
        LED=0X01;
           while(1)
           {
                for(a=0;a<8;a++)
                {
                        P0=LED;
                        delay(500);
                        LED=LED <<1;
                        if(LED==0X00)
                          LED = 0X01;

                }        
        }
}


void delay(unsigned int z)
{  unsigned char x,y;

   for(;z>0;z--)
   {        
   for(y=1110;y>0;y++)        
   {                  for(x=11110;x>0;x++) ;

   }
                           }
}
回复

使用道具 举报

板凳
ID:72822 发表于 2015-1-30 19:25 | 只看该作者
wind02072107 发表于 2015-1-30 19:03
#include
unsigned char LED;
void delay(unsigned int z);

谢谢你,能否留下QQ,新手上路,还希望能多指教
回复

使用道具 举报

地板
ID:58502 发表于 2015-1-31 00:55 | 只看该作者
x,y,你定义的类型是unsigned char ,unsigned char 的取值范围是0-255,而你程序确是y=1110,x=11110超出范围了,所以要把unsigned char 改成unsigned int
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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