如圖,我用面包板搭建了一個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);
}
}
} |