找回密码
 立即注册

QQ登录

只需一步,快速开始

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

一上电他就不停的开关门,想实现按键后开关门执行对应次数,单片机程序问题

[复制链接]
跳转到指定楼层
楼主
ID:580835 发表于 2019-7-9 13:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit old=P1^0;//开左门
sbit cld=P1^1;//关左门
sbit ord=P1^2;//开右门
sbit crd=P1^3;//关右门
sbit k1=P2^0;//开关门3次
sbit k2=P2^1;//开关门5次
sbit k3=P2^2;//开关门8次
void delay(uint x);//延时
void test();//左门开关一次右门开关一次
int keypros();//设置开关门次数
void main()//主函数        
{
        int a,y,b=0;
        keypros();//调用按键处理函数
        a=y;//将上面函数返回值y赋予a
        do
        {        
        test();
                b++;
        }
        while(b<a);
}
int keypros()//按键处理函数
{
        int y;
        if(k1==0)                  //检测按键K1是否按下
        {        
                delay(10);   //消除抖动
                if(k1==0)         //再次判断按键是否按下
                {
                y=3;
                }
                while(!k1);         //检测按键是否松开
        }        
  if(k2==0)             //检测按键K2是否按下
        {        
                delay(10);   //消除抖动
                if(k2==0)         //再次判断按键是否按下
                {
                y=5;
                }
                while(!k2);         //检测按键是否松开
        }        
        if(k3==0)                  //检测按键K3是否按下
        {        
                delay(10);   //消除抖动
                if(k3==0)         //再次判断按键是否按下
                {
                y=8;
                }
                while(!k3);         //检测按键是否松开
        }        
        return(y);
}

void test()//左门开关一次 右门开关一次
{
        old=0;
        delay(1000);
        old=1;
        cld=0;
        delay(1000);
        cld=1;
        ord=0;
        delay(1000);
        ord=1;
        crd=0;
        delay(1000);
        crd=1;
}

void delay(uint x)//延时子函数
{        
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2019-7-9 17:12 | 只看该作者
先画出流软件程图,走通流程图你就明白了。
回复

使用道具 举报

板凳
ID:277948 发表于 2019-7-9 17:37 来自手机 | 只看该作者
while(!k3);你这个应该放在判断语句外边啊if
回复

使用道具 举报

地板
ID:332444 发表于 2019-7-9 20:07 | 只看该作者
int keypros()//按键处理函数 {         int y=0;
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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