标题:
各位师傅给小弟看看这个程序,什么用Keil uVision4软件不能通过,到底那一部岀问题
[打印本页]
作者:
ll13536121668
时间:
2017-11-24 15:21
标题:
各位师傅给小弟看看这个程序,什么用Keil uVision4软件不能通过,到底那一部岀问题
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^6; //按键1定义
sbit key2=P3^5; //按键2定义
sbit key3=P3^4; //按键3定义
sbit key4=P3^3; //按键4定义
sbit led1=P1^3; //led1端口
sbit led2=P1^2; //led2端口
sbit led3=P1^1; //led3端口
sbit led4=P1^0; //led4端口
/********按键扫描程序*************/
void key_scan()
{
static bit key1_sign,key2_sign,key3_sign,key4_sign;//静态位变量按键自锁标志
static uint count1,count2,count3,count4;//静态计数变量
uint bzw1=1,bzw2=1,bzw3=1,bzw4=1;//设置标志位。
if(key1==0) //检测按键1按下
{
if(key1_sign==0)
{
count1++; //消抖计数1自+1
if(count1>=1000) //按主循环周期100~2000调整
{
key1_sign=1; //按键1自锁标志置1
if(bzw1==1)
led1=0;led2=led3=led4=1; //led1取反
else
led1=led2=led3=led4=1;
}
}
bzw1++;
if(bzw1>3)
bzw1=1;
}
else //按键1抬起
{
key1_sign=0; //按键1自锁标志清0
count1=0; //消抖计数1清0
}
if(key2==0) //检测按键1按下
{
if(key2_sign==0)
{
count2++; //消抖计数2自+1
if(count2>=1000) //按主循环周期100~2000调整
{
key2_sign=1; //按键2自锁标志置1
if(bzw2==1)
led2=0;led1=led3=led4=1; //led2取反
else
led1=led2=led3=led4=1;
}
}
bzw2++;
if(bzw2>3)
bzw2=1;
}
else //按键2抬起
{
key2_sign=0; //按键2自锁标志清0
count2=0; //消抖计数2清0
}
if(key3==0) //检测按键1按下
{
if(key3_sign==0)
{
count3++; //消抖计数1自+1
if(count3>=1000) //按主循环周期100~2000调整
{
key3_sign=1; //按键3自锁标志置1
if(bzw3==1)
led3=0;led1=led2=led4=1; //led3取反
else
led1=led2=led3=led4=1;
}
}
bzw3++;
if(bzw3>3)
bzw3=1;
}
else //按键3抬起
{
key3_sign=0; //按键3自锁标志清0
count3=0; //消抖计数3清0
}
if(key4==0) //检测按键1按下
{
if(key4_sign==0)
{
count4++; //消抖计数4自+1
if(count4>=1000) //按主循环周期100~2000调整
{
key4_sign=1; //按键4自锁标志置1
if(bzw4==1)
led4=0;led1=led2=led3=1; //led4取反
else
led1=led2=led3=led4=1;
}
}
bzw4++;
if(bzw4>3)
bzw4=1;
}
else //按键4抬起
{
key4_sign=0; //按键4自锁标志清0
count4=0; //消抖计数4清0
}
}
/************主程序************/
void main()
{
while(1)
{
key_scan(); //按键扫描程序
}
}
复制代码
作者:
hange_v
时间:
2017-11-24 19:23
if(bzw1==1)
led1=0;led2=led3=led4=1; //led1取反
else
led1=led2=led3=led4=1;
这根本就不对,这要包括在大括号里面的,你好好学学C语言行吗???
作者:
gzfsjk
时间:
2017-11-24 19:55
你的程序写得很乱,而且排版不易观察
作者:
ll13536121668
时间:
2017-11-24 23:59
hange_v 发表于 2017-11-24 19:23
if(bzw1==1)
led1=0;led2=led3=led4=1 ...
师博你好:修改粘贴上传看看好吗?谢谢
作者:
angmall
时间:
2017-11-25 08:46
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^6; //按键1定义
sbit key2=P3^5; //按键2定义
sbit key3=P3^4; //按键3定义
sbit key4=P3^3; //按键4定义
sbit led1=P1^3; //led1端口
sbit led2=P1^2; //led2端口
sbit led3=P1^1; //led3端口
sbit led4=P1^0; //led4端口
/********按键扫描程序*************/
void key_scan()
{
static bit key1_sign,key2_sign,key3_sign,key4_sign; //静态位变量按键自锁标志
static uint count1,count2,count3,count4; //静态计数变量
uint bzw1=1,bzw2=1,bzw3=1,bzw4=1; //设置标志位。
if(key1==0) //检测按键1按下
{
if(key1_sign==0)
{
count1++; //消抖计数1自+1
if(count1>=1000) //按主循环周期100~2000调整
{
key1_sign=1; //按键1自锁标志置1
if(bzw1==1)
{
led1=0;led2=led3=led4=1; //led1取反
}
else
{
led1=led2=led3=led4=1;
}
}
}
bzw1++;
if(bzw1>3)
bzw1=1;
}
else //按键1抬起
{
key1_sign=0; //按键1自锁标志清0
count1=0; //消抖计数1清0
}
if(key2==0) //检测按键1按下
{
if(key2_sign==0)
{
count2++; //消抖计数2自+1
if(count2>=1000) //按主循环周期100~2000调整
{
key2_sign=1; //按键2自锁标志置1
if(bzw2==1)
{
led2=0;led1=led3=led4=1;
}
//led2取反
else
{
led1=led2=led3=led4=1;
}
}
}
bzw2++;
if(bzw2>3)
bzw2=1;
}
else //按键2抬起
{
key2_sign=0; //按键2自锁标志清0
count2=0; //消抖计数2清0
}
if(key3==0) //检测按键1按下
{
if(key3_sign==0)
{
count3++; //消抖计数1自+1
if(count3>=1000) //按主循环周期100~2000调整
{
key3_sign=1; //按键3自锁标志置1
if(bzw3==1)
{
led3=0;led1=led2=led4=1;
}
//led3取反
else
{
led1=led2=led3=led4=1;
}
}
}
bzw3++;
if(bzw3>3)
bzw3=1;
}
else //按键3抬起
{
key3_sign=0; //按键3自锁标志清0
count3=0; //消抖计数3清0
}
if(key4==0) //检测按键1按下
{
if(key4_sign==0)
{
count4++; //消抖计数4自+1
if(count4>=1000) //按主循环周期100~2000调整
{
key4_sign=1; //按键4自锁标志置1
if(bzw4==1)
{
led4=0;led1=led2=led3=1; //led4取反
}
else
{
led1=led2=led3=led4=1;
}
}
}
bzw4++;
if(bzw4>3)
bzw4=1;
}
else //按键4抬起
{
key4_sign=0; //按键4自锁标志清0
count4=0; //消抖计数4清0
}
}
/************主程序************/
void main()
{
while(1)
{
key_scan(); //按键扫描程序
}
}
复制代码
作者:
hange_v
时间:
2017-11-25 13:22
angmall 发表于 2017-11-25 08:46
可以,如果if下面只有一条语句可以不用大括号,否则就得用
作者:
ll13536121668
时间:
2017-11-25 20:15
angmall 发表于 2017-11-25 08:46
这程能能通过Keil uVision4软件 我以为这语句加入就是在这键按两下就能够 关led 原来也是不能关led的 师傅你好能修改成按两下就能够 关led吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1