由于P0口內(nèi)部沒有上拉電阻,所以P0在用作輸入、輸出時(shí)要外接上拉電阻,一般取10k左右。
程序如下:
#include //頭文件
#define uchar unsigned char
#define uint unsigned int //宏定義
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //數(shù)據(jù)表
uchar i,j,a;
void delay(uchar x) //延時(shí)子函數(shù)
{
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main() //主程序
{
while(1)
{
for(a=0;a<8;a++) //有八個(gè)燈,做八次循環(huán)
{
P0=table[a]; //P0口依次取表中的數(shù)據(jù),將對(duì)應(yīng)的燈點(diǎn)亮
delay(100); //延時(shí)大約100ms
}
}
}
程序的另一種實(shí)現(xiàn)方法:
#include
#include //調(diào)用庫函數(shù),這個(gè)里面有具有循環(huán)移動(dòng)功能的函數(shù)
#define uchar unsigned char
void delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
uchar temp;
temp=0xfe;
P0=temp;
while(1)
{
temp= _crol_(temp,1); //temp后面的1,表示左移的位數(shù)
delay(100);
P0=temp;
delay(100);
}
}
仿真結(jié)果如下圖所示: