找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教单片机按键顺序点灯的思路

[复制链接]
跳转到指定楼层
楼主
请教各位大神,我是新手,     单片机32个IO口中设置3个按键,如先触发第一个按键后29个IO口正向顺序亮灯,间 隔为1秒,等待触发第二个按键后灯正向顺序关灯, 如先触发第二个按键时逆向亮灯,再等待触发第一个按键后逆向关灯。第三个按键为全开和顺序开的选择,请问程序的思路是如何呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332444 发表于 2019-10-11 22:12 | 只看该作者
这个简单主循环中搞定,计数29个中分别按8,16,24,29进行判断,再设3个状态变量即可。
回复

使用道具 举报

板凳
ID:332444 发表于 2019-10-11 22:20 | 只看该作者

以上16个LED例子可供思路参考。

回复

使用道具 举报

地板
ID:332444 发表于 2019-10-11 22:21 | 只看该作者

#include "reg51.h"
#include<intrins.h>       
void LedXunHuan()
{
    unsigned char i = 0, t = 0, Cnt = 0;
    while(1)
    {
        if(!i) P1 = 0xff;
        else if(i==9)P1 = 254;
        else if(i>8) P1 = _crol_(P1,1); else P1<<=1;//逐个递亮,_crol_(P1,1);单个亮,点亮16个的把其中一个P1改为P2即可.
        Cnt=89;
        while(Cnt) if(!++t) --Cnt;
        if(++i>16)i=0;//if(i++>=8)i=0;if(++i>=9)i=0;等价3式
    }
}
void main()
{
    LedXunHuan();
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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