卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

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,并分別定義s2s3作為按鍵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)是否變化

我們使用s2stas3sta兩個變量來記錄上一次按鍵的狀態(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燈的亮滅效果。

標(biāo)簽: