我的工控
不積跬步,無(wú)以至千里,不積小流,無(wú)以成江海。
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 115 個(gè)
工控威望: 287 點(diǎn)
下載積分: 424 分
在線時(shí)間: 53(小時(shí))
注冊(cè)時(shí)間: 2010-12-20
最后登錄: 2024-09-14
查看我的工控的 主題 / 回貼
樓主  發(fā)表于: 2010-12-21 22:14
#include <reg52.h>
void delay(int t){ //時(shí)間延遲子函數(shù)
unsigned int i,j;
for(j=0;j<30;j++)
for(i=0;i<t;i++);
}
void putOne(int n,char a){ //定義變量函數(shù)
unsigned int m = n%8, k = n/8, b;
if(k==0) b=P0; if(k==1) b=P1; if(k==2) b=P2; if(k==3) b=P3;
if(a) b = b & (~(1<<m));
else b = b | (1<<m) ;
if(k==0) P0=b; if(k==1) P1=b; if(k==2) P2=b; if(k==3) P3=b;
}
void liu(int n1,int n2){ //流水燈子程序
int i;
for(i=n1; i<=n2; i++ ) {
putOne(i,1);
delay(2000);
putOne(i,0);
}
}
main() //流水燈主程序
{
unsigned int k;
while(1)
{
P0 = P1 = P2 =P3 = 0;
for(k=31;k>-1;k--)
{
liu(0, k); putOne(k,1);

}

P0 = P1 = P2 =P3 =0; delay(2000);
P0 = P1 = P2 =P3 =255; delay(2000);
P0 = P1 = P2 =P3 =0; delay(2000);
}
}


希望此帖能拋磚引玉.
[ 此帖被我的工控在2020-03-01 01:29重新編輯 ]
這無(wú)盡的雨絲,有沒(méi)有勾起你的回憶?對(duì)你來(lái)說(shuō),也許我不再重要。但只要你能記得我,我就已經(jīng)無(wú)比欣慰。知道這雨讓我想起了什么嗎?你的眼淚。一滴滴的,晶瑩如珠,包裹著過(guò)去歲月的沙粒,在我的心頭滾動(dòng)。
crgtom
人生三寶:家庭,事業(yè),健康。
級(jí)別: 網(wǎng)絡(luò)英雄

精華主題: 0
發(fā)帖數(shù)量: 1382 個(gè)
工控威望: 9661 點(diǎn)
下載積分: 96012 分
在線時(shí)間: 928(小時(shí))
注冊(cè)時(shí)間: 2009-09-21
最后登錄: 2024-11-09
查看crgtom的 主題 / 回貼
1樓  發(fā)表于: 2010-12-23 17:02
學(xué)習(xí)了
技術(shù)是有時(shí)效性的,一旦錯(cuò)過(guò)了時(shí)效性,昔日人人求之不得的技術(shù),最終會(huì)變成沒(méi)有多少作用的垃圾!
zsb2010
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 117 個(gè)
工控威望: 2362 點(diǎn)
下載積分: 4026 分
在線時(shí)間: 340(小時(shí))
注冊(cè)時(shí)間: 2009-09-02
最后登錄: 2024-01-21
查看zsb2010的 主題 / 回貼
2樓  發(fā)表于: 2010-12-24 15:50
結(jié)構(gòu)上分的不夠清晰,主函數(shù)中的LIU,和PUT ONE的子函數(shù)調(diào)用寫(xiě)的太羅嗦,可以用FOR循環(huán)來(lái)做這樣就簡(jiǎn)潔多了
zsb2010
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 117 個(gè)
工控威望: 2362 點(diǎn)
下載積分: 4026 分
在線時(shí)間: 340(小時(shí))
注冊(cè)時(shí)間: 2009-09-02
最后登錄: 2024-01-21
查看zsb2010的 主題 / 回貼
3樓  發(fā)表于: 2010-12-24 15:59
如主函數(shù)改成:
main() //流水燈主程序
{
unsigned int k;
while(1)
{
P0 = P1 = P2 =P3 = 0;
for(k=31;k>-1;k--)
{
liu(0, k); putOne(k,1);

}

P0 = P1 = P2 =P3 =0; delay(2000);
P0 = P1 = P2 =P3 =255; delay(2000);
P0 = P1 = P2 =P3 =0; delay(2000);
}
}
這樣就可以代替你的主程序了