#include <reg51.h>
#define LED P1
sbit KEY = P1^6;
void delay (unsigned int d){ //延时功能函数,由d决定延时长度
unsigned char i;
while( --d != 0)(第1,我想问这条指令意思是先把d减1后再使用d值,但!=0的意思是不是如果把d减1后要看看是否不等于0在作为条件啊?)
{
for(i = 0; i < 2; i++);
}
}
void main (){
unsigned char a,b;(第2,a在主函数里面代入delay函数里面,但这里把a定义为无符号字符型,那么在上面delay后面的d是定义为无符号整型,这样会有冲突有问题吗?)
while (1){
LED = 0xff;
a = 0x00;(第3,这里的a赋值是0x00,那么后面a++的话到底会是变成一个怎样的数?)
for (b=250; b>0; b--)
{
a++;
delay (a); //延时长度随a而改变
LED = 0x00;
a = ~a; //a值取反,决定灯灭时的占空比
delay (a);
LED = 0xff;
a = ~a; //a值取反 使a回到原值继续循环
}
LED = 0x00;(第4,这个a的赋值能用其他数字代替吗?) //亮起LED
a = 0x00;
for (b=250; b>0; b--){
a++;
delay (a);
LED = 0xff;
a = ~a;
delay (a);
LED = 0x00;
a = ~a;
}
LED = 0xff;
}
}
还有一个问题,如果while( --d != 0)中的--d减1后赋值与0比较,那么省略!=0可以吗? 因为我见过有一些语句whlie(d--)的意识就是d减1后再看看d是否等于0。