• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機單按鍵控制LED發(fā)光的程序

    單片機單按鍵控制LED發(fā)光的程序

    作者: 時間:2012-12-01 來源:網(wǎng)絡 收藏
    51的程序,就是用一個與P3_0引腳連接的按鍵控制P2_0相連LED的亮和滅兩種狀態(tài)。按一次按鍵燈亮,再按一次按鍵燈滅。再按一次又亮,再按一次燈又滅,本程序出自網(wǎng):http://www.51hei.com,經(jīng)過測試已經(jīng)可以成功運行。
    #include "AT89X51.H"
    void main(void) // 主程序
    {
    bit mark; //定義位變量
    unsigned int n; //定義循環(huán)變量
    while(1) //無限循環(huán)
    {
    if (P3_0==0) //如果按鍵按下
    {
    for(n=0;n1000;n++); //延時一段時間,等待按鍵完全按下
    mark=~mark; //翻轉(zhuǎn)標記
    while(!P3_0) //等待按鍵彈起
    for(n=0;n1000;n++); //等待按鍵完全彈起
    }
    P2_0=mark; //點亮或是關(guān)滅LED燈
    }}
    while(1) //無限循環(huán)
    {
    if(ldelay==1 ) //若是時間溢出標記為1,處理如下語句
    {
    ldelay=0; //清除時間溢出標記
    P2=ledp[ledi]; //讀出一個表格值送到P2口
    ledi++; //指向下一個表格值
    if(ledi==4)
    {
    ledi=0; //到了最后一個燈就換到第一個
    sp--; //速度級別減1
    if (sp==3) //如果速度級別減到3
    sp=23; // 恢復速度最慢的級別23
    }}}}
    timer0() interrupt 1 //定時器0中斷服務程序
    {
    static unsigned int kk; //定義靜態(tài)局部變量
    kk++; //每次中斷服務,kk加1
    if(kk==(100*sp)) //最少次數(shù)為100*sp=300,時間為300次*0.25ms
    //最多次數(shù)為2300次,時間為2300次*0.25ms
    //如果kk=(100*sp),執(zhí)行如下語句
    {
    kk=0;
    ldelay=1; //當kk值與100*sp值相等,將ldelay標記置1,則處理燈亮與顯示速度
    } }


    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 锡林郭勒盟| 潞西市| 资源县| 黄大仙区| 色达县| 师宗县| 芜湖县| 三亚市| 大洼县| 任丘市| 长海县| 高清| 武山县| 绥芬河市| 响水县| 太原市| 中山市| 宁强县| 岑溪市| 堆龙德庆县| 安西县| 连城县| 商水县| 久治县| 墨脱县| 中超| 石景山区| 长阳| 苍溪县| 林州市| 阳高县| 巩留县| 隆子县| 滨海县| 小金县| 林甸县| 阜新| 江安县| 沁源县| 东辽县| 安康市|