找回密码
 立即注册

QQ登录

只需一步,快速开始

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

菜鸟求助51单片机C语言

[复制链接]
跳转到指定楼层
楼主
ID:90307 发表于 2015-9-17 00:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正在学习51单片机,想实现按K1开关,led灯向右移动,按K2,led灯向左移动,当长按某K1或K2时,led灯延迟500ms的向指定方向移动,现在的问题是按住K1或K2时,led灯并没有延迟移动,程序哪里有问题,求解答。
#include<reg51.h>
#include<intrins.h>
#include"delay10ms.h"

#define GPIO_LED P2
sbit K1=P0^0;
sbit K2=P0^1;

void main()
{
    unsigned int i,j;
    j=0x01;
    while(1)
    {
        GPIO_LED=j;
        if((K1==0)||(K2==0))
        {
            delay10ms();
            if(K1==0) j=_cror_(GPIO_LED,1);
            else if(K2==0)        j=_crol_(GPIO_LED,1);
        }
                          while((i<50)&&((K1==0)));
            {
                delay10ms();
                i++;
            }
            i=0;
    }
}

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

使用道具 举报

沙发
ID:79544 发表于 2015-9-17 15:28 | 只看该作者
               if((i<50)&&((K1==0)));
            {
          这样改试试
     j=_crol_(GPIO_LED,1);
                delay10ms();
                i++;
               if(i==50)
               i=0;
            }
            i=0;
回复

使用道具 举报

板凳
ID:79908 发表于 2015-9-17 16:11 | 只看该作者
本帖最后由 电子爱好者life 于 2015-9-17 16:34 编辑

没有看明白你的题目,你是按下K1连续移动还是按一次移动一次
回复

使用道具 举报

地板
ID:66287 发表于 2015-9-17 17:03 | 只看该作者
改成:
while((i<50)&&((K1==0)));
             {
                 delay10ms();
                 i++;
             }
if(i==49) j=_cror_(GPIO_LED,1);
i=0;
while((i<50)&&((K2==0)));
             {
                 delay10ms();
                 i++;
             }
if(i==49)  j=_crol_(GPIO_LED,1);
i=0;
回复

使用道具 举报

5#
ID:66287 发表于 2015-9-17 17:28 | 只看该作者
c:\1.jpg
if(i==50)这句永远不成立
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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