電路圖註意:1、P0口裏應加上排阻,圖裏我沒畫出來。
2、單片機最小系統所需的晶振、復位電路我也沒畫。
臨時幫妳做的圖,寫的程序,細節就不是很完善啦,湊合著看吧!!
下面是程序,_crol_()函數是讓temp的值左移壹位的即執行壹次該函數,temp的值由11111110到11111101,再執行壹次是11111011……
_cror_()是右移。
#include<reg51.h>
#include<intrins.h>//包含對_crol_(),_cror_()函數的說明的頭文件
unsigned?char?temp,i;
void?delay(unsigned?int?z)//延時子程序,晶振11.0592M時延時大概1毫秒
{
unsigned?int?x?,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}
void?main()
{
while(1)
{
temp=0xfe;? for(i=0;i<8;i++)//流水燈從P0^0口到P0^7口 { P0=temp; temp=_crol_(temp,1); delay(5); } i=0;temp=0xfe;
for(i=0;i<8;i++)//流水燈從P1^0口到P1^7口 { P1=temp; temp=_crol_(temp,1); delay(5); } i=0;temp=0x7f;
for(i=0;i<8;i++)//流水燈從P1^7口到P1^0口 { P1=temp; temp=_cror_(temp,1); delay(5); } i=0; temp=0x7f;? for(i=0;i<8;i++)//流水燈從P0^7口到P0^0口 { P0=temp; temp=_cror_(temp,1); delay(5); } i=0; }}