独立按键控制LED二进制
STC89C52以及普中51的开发板
第一个问题 为什么要定义为unsigned char,int可不可以
第二个 为什么 NUM++;P2=~NUM;放在if的大括号外边就不型,在里面就可以
#include <REGX52.H>
#include<INTRINS.H>
int main()
{
// P2=0XFE;
void Delay1ms(int x);
unsigned char NUM=0;
while(1)
{
if(P3_1)
{
Delay1ms(20);
while(P3_1)
{
Delay1ms(20);
}
NUM++;
P2=~NUM;
}
}
return 0;
}
void Delay1ms(int x) //@11.0592MHz
{
while(x)
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
x--;
}
}
1.int是可以的,但是但凡玩单片机的都会注意内存管理。int太大了,而且不同的平台下,int的长度也不相同。
为什么用unsigned char?unsigned char值是0-255,16进制为0-0xff,只占用一个字节,除了bit以外的最小单位,省空间而且够用啊
2. 如果放在if外,那就在P3_1为低电平的情况下,就一直执行;放在if内,则在p3_1被拉高时,进入第二级while,并在p3_1被松开时,执行
显然,你想做个按键控制,就必须放在if内
ps.你确定要P2 = ~NUM嘛?如果我没猜错,P2应该也是一个引脚,引脚的类型一般是bit,只有1位。而NUM可是一个有8位的unsigned char啊