|
如图,我用面包板搭建了一个89c52单片机,单片机运行正常,烧录资料也是正常的,我在P2口弄了8颗发光二极管,经测试,P2^0—P2^7口,全部正常,都可以输出低电平让8个发光二极管全发光,也可以闪烁,用亮,延迟,灭,延迟亮,延迟,灭,延迟,反复循环的方法也可以实现流水灯,但是,当我用_crol_左移函数实现流水灯时,为什么P2口灯全部都不亮,全是熄灭状态,插上电,就P2^0的灯亮了一下,就没反应了,我想请教一下各位,这是哪里出了问题,是因为缺少什么元器件吗?我实在是不解,为什么这个程序在开发板上面能够正常执行,到了面包板就执行不了了,求解!
程序(复制过程中可能有缺漏,但原程序已经在开发板运行ok过了)
#include "reg52.h"
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
#define led P2
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 i;
led=0xfe;
delay(50000); //大约延时450ms
while(1)
{
for(i=0;i<8;i++)
{
P2=~(0x01<<i);
delay(50000);
}
for(i=0;i<7;i++) //将led左移一位
{
led=_crol_(led,1);
delay(50000); //大约延时450ms
}
for(i=0;i<7;i++) //将led右移一位
{
led=_cror_(led,1);
delay(50000);
}
}
} |
|