标题: 求if语句详细解释,51单片机 [打印本页]

作者: 擎天微电子    时间: 2015-11-14 21:16
标题: 求if语句详细解释,51单片机
#include<reg52.h>
unsigned char wei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选P2口 低电平有效
unsigned char duan[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90};//段选0-9 P0口低电平有效
sbit key1=P1^4;        //P1.4端口一个按键
void main()
{
        P2=0x00;        //让P2口输出低电平(位选),8个数码管 共阳极,阳极由9012PNP管驱动,所以当P2口为低电平时 才有效
        while(1)
        {                                //把P2=0x00;写到到10行时也就是while(1)下面程序会报错.没弄懂
                char a;
                if(key1==0)                //判断key1是否等于0(P1^4端口是否为低电平)
                {
                        a++;                //如果key1等于0,a就+1
                        if(a==10)   //如果a=10,超过10数码管不能显示
                        a=0;            //就让a=0
                        while(!key1);//松手程序,
                }
                else                        //否则
                P0=duan[a];                //让P0口取duan中的元素.
        }
}


以上是对照视频中写的程序,现在程序可以执行,只是没加入反复判断按键是否按下这条语句,
我想说的是,这个if语句我没弄懂.
1, if(key1==0)  //判断key1是否等于0 也是是判断按键是否按下去了,这句我懂
2, a++;            //如何按键按下去了,为低电平,那么a就+1 这句我也懂
3 if(a==10)      //由于数码管只能显示0-9 单位 超过10就显示不出,所以再次判断a是否等于10
4 a=0;             //结合上面那条语句 如果a等于10 就让a置0
5 while(!key1)   //送手程序,我似乎听懂了,就是单片机执行速度快,我按下去有可能执行了很多次了,所以数码管上会随机显示0-9
6 slse               //这条我知道是否则的意思,可与上面又什么关系呢? if不是判断吗?判断{}里面的内容是否为真,不是真就执行下面的语句
也就是我送开的时候会执行 P0=duan[a];
不管按下不按下数码管是长亮的.
那么我假设 我按下 一个按键 需要一个二极管长亮 又或者我按下一个按键,一个二极管亮,再按一下又熄灭,if应该怎么写.
谢谢!


作者: HEIZI555    时间: 2015-11-17 13:43
if后面加else来做
作者: mt1122    时间: 2015-11-17 17:22
你这问题 有点那个啥 感觉你没搞明白 这个数码管的发光工作原理
先搞清楚再来问吧
作者: luvemcu    时间: 2015-11-17 18:49
if判断的条件通常都是二值的,if选择其中一个值,else选择另一个值。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1