一个最简单(hello world级)的AT89C52闪灯程序为何不正常?
电路如下:低电平点亮LED。
P1^2-------|<|------|VCC
我用keil C51 9.0编译程序1 在proteus7.5的电路上模拟运行灯是常亮,看不到亮灭闪烁的效果。
但稍作修改成程序2就可以闪烁了。这是咋回事呢?
//程序1
#include <reg52.h>
#include <intrins.h>
sbit P12 =P1^2;
bit b;
main()
{
int i=0;
while(1)
{
P12 ^= 1; //亮灭LED 不能正常亮灭
for(i=20000;i>0;i--)//延时
_nop_();
}
}
//程序2
#include <reg52.h>
#include <intrins.h>
sbit P12 =P1^2;
bit b;
main()
{
int i=0;
while(1)
{
b ^=1;
P12 = b; //亮灭LED 可正常亮灭
for(i=20000;i>0;i--)//延时
_nop_();
}
} |