Keil uVision4 兩個按鍵控制燈效果編程
在這個項目中,我們將使用Keil uVision4來編寫一個程序,通過兩個按鍵來控制LED燈的亮滅效果。我們將使用P1口連接LED照明燈,同時使用S2和S3來模擬兩個開關(guān)。 新建項目 首先,在Ke
在這個項目中,我們將使用Keil uVision4來編寫一個程序,通過兩個按鍵來控制LED燈的亮滅效果。我們將使用P1口連接LED照明燈,同時使用S2和S3來模擬兩個開關(guān)。
新建項目
首先,在Keil uVision4中新建一個項目。然后,添加頭文件#include lt;reg52.hgt;
以引入所需的庫文件。
定義變量
接下來,我們需要定義一些變量。使用sbit
關(guān)鍵字來定義LED燈的引腳為P1^3
,并分別定義s2
和s3
作為按鍵S2和S3的引腳。
sbit LED P1^3;
sbit s2 P3^0;
sbit s3 P3^1;
bit X, s2sta, s3sta;
主函數(shù)
現(xiàn)在,我們可以創(chuàng)建主函數(shù)來完成整個程序的邏輯。
void main()
{
int i;
while(1)
{
if(s2 ! s2sta || s3 ! s3sta) // 判斷是否有一個按鈕改變了狀態(tài)
{
X (s2 << 1) | s3; // 進(jìn)行狀態(tài)判斷
s2sta s2;
s3sta s3;
}
switch(X) // 根據(jù)狀態(tài)進(jìn)行相應(yīng)的操作
{
case 0: LED 0; break; // 如果狀態(tài)為0,LED燈熄滅
case 1: LED !LED; break; // 如果狀態(tài)為1,LED燈取反效果
case 2: break; // 如果狀態(tài)為2,不做任何操作
case 3: for(i0;i<5;i ) { LED 1; Delay(); LED 0; Delay(); } break; // 如果狀態(tài)為3,LED燈閃爍效果
}
}
}
循環(huán)效果
在主函數(shù)中,我們使用一個無限循環(huán)來不斷檢測按鍵狀態(tài)的變化,并根據(jù)狀態(tài)的不同進(jìn)行相應(yīng)的操作。
掃描按鍵狀態(tài)是否變化
我們使用s2sta
和s3sta
兩個變量來記錄上一次按鍵的狀態(tài)。通過比較當(dāng)前按鍵的狀態(tài)和上一次按鍵的狀態(tài),我們可以判斷是否有按鈕改變了狀態(tài)。
進(jìn)行判斷
如果有按鈕被按下,我們根據(jù)按鍵的狀態(tài)進(jìn)行判斷并執(zhí)行相應(yīng)的操作。當(dāng)狀態(tài)為0時,LED燈熄滅;當(dāng)狀態(tài)為1時,LED燈取反效果;當(dāng)狀態(tài)為2時,不做任何操作;當(dāng)狀態(tài)為3時,LED燈閃爍效果。
通過以上的邏輯和代碼,我們可以實現(xiàn)用兩個按鍵來控制LED燈的亮滅效果。