欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3962|回復(fù): 5
收起左側(cè)

STC89C52單片機問題,單個按鍵控制燈常亮和蜂鳴器響

[復(fù)制鏈接]
ID:601503 發(fā)表于 2019-8-19 10:45 | 顯示全部樓層 |閱讀模式
請教大家一個問題,我寫了一個程序用單個按鍵控制燈常亮和蜂鳴器響(警報狀態(tài)),另外一個按鍵按下后取消警報。可是下載后發(fā)現(xiàn),燈一開始就是閃爍狀態(tài),按下按鍵后才變常亮。請大家?guī)臀铱纯茨睦锏膯栴}。以下是源碼。



#include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器

typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
typedef unsigned char u8;

sbit k1=P3^1;
sbit k2=P3^0;
sbit P20=P2^2;

sbit beep=P1^5;

u8 start=0;

/*******************************************************************************
* 函 數(shù) 名         : delay
* 函數(shù)功能                   : 延時函數(shù),i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);        
}

void sound()
{
        u8 i=100;
        while(i--)
        {
                beep=~beep;
                delay(100);        
        }
}
void keypros()
{
        if(k1==0)                         //開始
        {
                delay(1000);
                if(k1==0)
                {
                        start=1;               
                }
                while(!k1);
        }
        if(k2==0)                          //停止
        {
                delay(1000);
                if(k2==0)
                {
                        start=0;               
                }
                while(!k2);
        }
}
/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                 : 主函數(shù)
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{        
        P20=0;          //程序初始化,令二極管不發(fā)光
        while(1)
        {
               
                keypros();
                if(start==1)
//                if(k1==0)
                {        
                         delay(100);   //延時一下  

//               if(k1==0)  
                        sound();
                }
                else
                {
                        beep=1;
//                        while(k1==0);

                   delay(10000);
                 P20=~P20; //二極管轉(zhuǎn)換發(fā)光狀態(tài),返回繼續(xù)循環(huán)檢測
                }               
        }               
}


回復(fù)

使用道具 舉報

ID:96682 發(fā)表于 2019-8-19 14:05 | 顯示全部樓層
樓主應(yīng)該從主函數(shù)那里查找問題
回復(fù)

使用道具 舉報

ID:560467 發(fā)表于 2019-8-19 15:15 | 顯示全部樓層
這個可能是你外部的電路連接的問題,按下按鍵才是將引腳拉高而不是拉低,不按下就是將引腳拉低
回復(fù)

使用道具 舉報

ID:220936 發(fā)表于 2019-8-19 17:13 | 顯示全部樓層
開始u8 start=0;不按按鍵就到else了, P20=~P20; 一直在取反。
回復(fù)

使用道具 舉報

ID:588518 發(fā)表于 2019-8-19 18:06 | 顯示全部樓層
主函數(shù)分析一下,燈閃爍的觸發(fā)條件,應(yīng)該是那里沒處理好。
回復(fù)

使用道具 舉報

ID:437615 發(fā)表于 2019-8-20 09:40 | 顯示全部樓層
這個程序我也有點看不懂,感覺樓主用start控制的輸出口,如果是輸出口的話start應(yīng)該有引腳定義,
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表