天天看點

流水燈--使用現成的intrins.h中_crol_(variable,number)來實作八位IO口的單個低電平循環include <reg51.h>include <intrins.h>

//flow light and beep

include <reg51.h>

//包含頭檔案,裡面有關于P1這個八個IO口的sfr定義,sfr P1=0X80;

include <intrins.h>

/這個檔案裡 有關于_crol_(x,y) 這個字元串操作函數,x是初值,y是對x這個八位二進制數字進行多少位的 移位循環操作/

unsigned char a,b,k,j;

//定義四個無符号整型,每個範圍是0-65535,用于計數。

sbit beep=P2^3;

//位定義P2.3 IO口,命名為beep.

void delay10ms()

// 編寫延遲函數。

{

for(a=100;a>0;a–) //外循環100次

for(b=225;b>0;b–);

/内循環225次,共計22500次。結合晶振頻率的指令周期,換算出具體的實際執行時間。/

}

void main() //主函數

k=0xfe; // 初值為 0X1111 1110

while(1) //大循環,死循環

delay10ms(); //先延遲10ms

beep=0; // 将P2.3電平設定低電平後,響蜂鳴器。

delay10ms(); //再延遲10ms

beep=1; // 關閉蜂鳴器

j=_crol_(k,1);

/ crol 的l 是左循環移位,每次移動1為,1111 1110 變成 1111 1101 ,再執行就變成1111 1011,再執行變成 1111 0111,再執行為 1110 1111 /

k=j;

// 變量k 的初值再被CROL處理位移動以後再賦給 k.

P1=j;

// 将k 初值被處理後的 j 數值 用于設定 P1 的八個IO端口。

繼續閱讀