51單片機應用從零開始(七)·循環語句(if語句,swtich語句)-CSDN博客
目錄
1.? 用for 語句控制蜂鳴器鳴笛次數
2.? 用while 語句控制 LED
3.??用 do‐while 語句控制 P0 口 8 位 LED 流水點亮
1.? 用for 語句控制蜂鳴器鳴笛次數
????????C語言中的for語句是一種循環語句,通常用于執行特定的操作一定數量的次數。
for語句的語法如下:
for (initialization; condition; increment/decrement) {statement(s);
}
????????其中,initialization用于初始化循環計數器,通常是一個賦值語句;condition是循環條件,當條件為真時,循環繼續執行,當條件為假時,循環停止;increment/decrement是循環計數器的增量或減量,通常是一個自增或自減語句;statement(s)是循環體,即要重復執行的語句塊。
下面是一個計算1到10的累加和的示例:
#include <stdio.h>int main() {int sum = 0;int i;for (i = 1; i <= 10; i++) {sum += i;}printf("1到10的累加和為:%d\n", sum);return 0;
}
輸出結果為:
1到10的累加和為:55
????????在51單片機中,用for 語句控制蜂鳴器鳴笛次數:
#include<reg51.h> //包含單片機寄存器的頭文件
sbit sound=P3^7; //將 sound 位定義為 P3.7
/****************************************
函數功能:延時形成 1600Hz 音頻
****************************************/
void delay1600(void)
{ unsigned char n; for(n=0;n<100;n++) ;
}
/****************************************
函數功能:延時形成 800Hz 音頻
****************************************/
void delay800(void)
{ unsigned char n; for(n=0;n<200;n++) ;
}
/****************************************
函數功能:主函數
****************************************/
void main(void)
{ unsigned int i; while(1) { for(i=0;i<830;i++) { sound=0; //P3.7 輸出低電平delay1600(); sound=1; //P3.7 輸出高電平delay1600(); } for(i=0;i<200;i++) { sound=0; //P3.7 輸出低電平delay800(); sound=1; //P3.7 輸出高電平delay800(); } }
}
2.? 用while 語句控制 LED
????????while語句是C語言中的迭代語句,用于在滿足條件的情況下重復執行一組語句或語句塊。while語句的語法如下:
while (condition)
{statement(s);
}
????????條件(condition)是一個表達式,當它的值為真(true)時,循環體中的語句會被執行。而當條件的值為假(false)時,循環會停止,程序將跳轉到while語句之后的第一條語句繼續執行。
例如,以下代碼將不斷地打印數字1到10,直到計數器變成11時退出循環:
#include <stdio.h>int main()
{int i = 1;while (i <= 10){printf("%d\n", i);i++;}return 0;
}
?????????在51單片機中,用while 語句控制 LED:
#include<reg51.h> //包含單片機寄存器的頭文件
/****************************************
函數功能:延時約 60ms (3*100*200=60000μs)
****************************************/
void delay60ms(void)
{ unsigned char m,n; for(m=0;m<100;m++) for(n=0;n<200;n++) ;
}
/****************************************
函數功能:主函數
****************************************/
void main(void)
{ unsigned char i; while(1) //無限循環{ i=0; //將 i 初始化為 0 while(i<0xff) //當 i 小于 0xff(255)時執行循環體{ P0=i; //將 i 送 P0 口顯示delay60ms(); //延時i++; //i 自增 1 } }
}
3.??用 do‐while 語句控制 P0 口 8 位 LED 流水點亮
????????do-while語句是C語言中的一種循環語句,它先執行一次循環體,再根據循環條件判斷是否繼續循環。其基本語法如下:
do{// 循環體語句
} while(循環條件);
????????當執行do-while語句時,先執行一次循環體語句,隨后判斷循環條件是否成立,成立則繼續執行循環體語句,否則退出循環。
????????與while語句不同的是,do-while語句保證循環體至少會被執行一次,即使循環條件一開始就不成立。
????????do-while語句的應用場景通常是需要至少執行一次循環體的情況,比如輸入數據校驗、菜單選擇等。
????????在51單片機中,用 do‐while 語句控制 P0 口 8 位 LED 流水點亮:
#include<reg51.h> //包含單片機寄存器的頭文件
/****************************************
函數功能:延時約 60ms (3*100*200=60000μs)
****************************************/
void delay60ms(void)
{ unsigned char m,n; for(m=0;m<100;m++) for(n=0;n<200;n++) ;
}
/****************************************
函數功能:主函數
****************************************/
void main(void)
{ do { P0=0xfe; //第一個 LED 亮delay60ms(); P0=0xfd; //第二個 LED 亮delay60ms(); P0=0xfb; //第三個 LED 亮delay60ms(); P0=0xf7; //第四個 LED 亮delay60ms(); P0=0xef; //第五個 LED 亮delay60ms(); P0=0xdf; //第六個 LED 亮delay60ms(); delay60ms(); P0=0xbf; //第七個 LED 亮delay60ms(); P0=0x7f; //第八個 LED 亮delay60ms(); }while(1); //無限循環,使 8 位 LED 循環流水點亮
}
更多推薦:
時光の塵_千題千解·Java面試寶典,Linux學習,嵌入式學習-CSDN博客