/*-------------------------------------------*/ /*P0~P3一個燈循環(huán)亮且由慢變快*/ #include<stdio.h> #include<reg51.h> unsigned int tc; /*延時變量tc*/ void main() { void delay(int t); /*定義延時函數(shù)delay(int t)或delay(t)但delay()是錯的因此函數(shù)是有參數(shù)的。*/ void light(); /*void函數(shù)應(yīng)無類型int. float等 說明,定義亮燈函數(shù) light(),其是無參數(shù)的。*/ while(1) /*大循環(huán)*/ { tc=5000; while(tc>500) /*tc由5000開始到500循環(huán)*/ { light(); tc=tc-1500; } while(tc>=100) /*tc由500開始到小于100循環(huán)*/ {light(); tc=tc-80;} } } /*継續(xù)大循環(huán)*/ void light() /*亮燈子函數(shù) light()其無直接參數(shù)*/ { unsigned int c; int i; c=0x0fe; /*P0口亮*/ for(i=1;i<=9;i++) {P0=c; delay(tc); c=c<<1|1; /*等價c=c<<1;c=c+0x01*/ } /*注:若用P0=P0<<1|1;因讀P0再右移再加1,當P0某個腳外電路拉底就不對了*/ c=0x7f; for(i=1;i<=9;i++) {P2=c; delay(tc); c=c>>1|0X80; } c=0x7f; for(i=1;i<=9;i++) {P3=c; delay(tc); c=c>>1|0X80; } c=0x7f; for(i=1;i<=9;i++) {P1=c; delay(tc); c=c>>1|0X80; } }
void delay(int t) /*延時函數(shù)delay(int t)*/ {int i; for(i=1;i<=t;i++) { } }
|