成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

Keil uVision4 兩個(gè)按鍵控制燈效果編程

在這個(gè)項(xiàng)目中,我們將使用Keil uVision4來編寫一個(gè)程序,通過兩個(gè)按鍵來控制LED燈的亮滅效果。我們將使用P1口連接LED照明燈,同時(shí)使用S2和S3來模擬兩個(gè)開關(guān)。 新建項(xiàng)目 首先,在Ke

在這個(gè)項(xiàng)目中,我們將使用Keil uVision4來編寫一個(gè)程序,通過兩個(gè)按鍵來控制LED燈的亮滅效果。我們將使用P1口連接LED照明燈,同時(shí)使用S2和S3來模擬兩個(gè)開關(guān)。

新建項(xiàng)目

首先,在Keil uVision4中新建一個(gè)項(xiàng)目。然后,添加頭文件#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ù)來完成整個(gè)程序的邏輯。

void main()
{
    int i;
    while(1)
    {
        if(s2 ! s2sta || s3 ! s3sta) // 判斷是否有一個(gè)按鈕改變了狀態(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ù)中,我們使用一個(gè)無限循環(huán)來不斷檢測按鍵狀態(tài)的變化,并根據(jù)狀態(tài)的不同進(jìn)行相應(yīng)的操作。

掃描按鍵狀態(tài)是否變化

我們使用s2stas3sta兩個(gè)變量來記錄上一次按鍵的狀態(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時(shí),LED燈熄滅;當(dāng)狀態(tài)為1時(shí),LED燈取反效果;當(dāng)狀態(tài)為2時(shí),不做任何操作;當(dāng)狀態(tài)為3時(shí),LED燈閃爍效果。

通過以上的邏輯和代碼,我們可以實(shí)現(xiàn)用兩個(gè)按鍵來控制LED燈的亮滅效果。

標(biāo)簽: