本帖最后由 meetof4 于 2012-12-23 21:11 编辑
fp123123 发表于 2012-12-23 12:46
运行下面2个程序,看哪一个可以在按键后把灯灭掉,就知道LED的接法,根据接线修改PIN位
程序1:LED正极接P ...
出现了 理解之外的情况!
程序1:LED正极接PIN
#include <reg52.h>
void main()
{
// LED亮
P2 = 0xFF;
// 等待按键
for(;;)
{
if( (P2 & 0x02)==0x02 ) break;
}
// LED灭
P2 = 0;
for(;;){}
}
LED 一开始发亮, 但按P2^1 后, LED没有变化
程序2:LED负极接PIN
#include <reg52.h>
void delay_us(unsigned int x)
{
unsigned int i=0;
for(i=0;i<x;i++)
{;}
}
void main()
{
// 等待按键
for(;;)
{
// LED亮
P2 = 0;
delay_us(100);
// 检测按键
P2 = 0xFF;
if( (P2 & 0x02)==0x02 ) break;
}
// LED灭
P2 = 0xFF;
for(;;){}
}
LED 一开始闪了一闪就没有发亮, 按P2^1 后, LED没有变化
#include <reg52.h>
void main()
{
// LED亮
P2 = 0xFF;
// 等待按?
for(;;)
{
if( (P2 & 0x02)==0 ) break; <---乱改成这个了
}
// LED?
P2 = 0;
for(;;){}
}
竟然成了一开始无LED亮,按P1^2后,LED就亮了, 但没法做到亮--->灭
|