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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3171|回復: 1
打印 上一主題 下一主題
收起左側

倒計時結束后蜂鳴器為什么不響?是單片機程序還是電路問題?

[復制鏈接]
跳轉到指定樓層
樓主
求大佬指點


#include<reg52.h>           //庫文件
#define ucharunsigned char//宏定義無符號字符型
#define uintunsigned int  //宏定義無符號整型
/********************************************************************
                            初始定義
*********************************************************************/
code ucharseg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數碼管字跟
ucharwei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端
uint sec; //定義計數值,每過1 秒,sec 減一
uchar keycnt=0;//按下次數值
uint tcnt; //鍵值判斷
sbit P3_0=P3^0;
sbit P1_0=P1^0;
/********************************************************************
                            延時函數
*********************************************************************/
void delay(uchart)
{
  uchar i,j;
   for(i=0;i<t;i++)
   {
        for(j=13;j>0;j--);
    { ;
    }
   }
}

/********************************************************************
                            顯示函數
*********************************************************************/        
void Led(intdate) //顯示函數
{
/*****************數據轉換*****************************/
uint z,x,c,v;
  z=date/1000;          //求千位
  x=date%1000/100;       //求百位
  c=date%100/10;      //求十位
  v=date%10;         //求個位

      P2=0XFF;
    P0=seg7code[z];
    P2=wei[0];
    delay(80);
    P2=0XFF;  
      P0=seg7code[x];
    P2=wei[1];
    delay(80);
    P2=0XFF;  
         P0=seg7code[c];
    P2=wei[2];
    delay(80);
    P2=0XFF;  
      P0=seg7code[v];
    P2=wei[3];
    delay(80);
    P2=0XFF;
}
/********************************************************************
                            按鍵掃描函數
*********************************************************************/
void KEY() //按鍵掃描程序
{

if(P3_0==0)
   {
   delay(20);
   if(P3_0==0)
       {
          keycnt++;
/********************************************************************
                            按下次數判斷函數
*********************************************************************/
switch(keycnt)//按下次數判斷
   {
   case 1: //第一次按下
   TH0=0x06; //對TH0 TL0 賦值
   TL0=0x06;
   TR0=1; //開始定時
   break;
   case 2: //第二次按下
   TR0=0; //定時結束
   break;
   case 3: //第三次按下
   keycnt=0; //重新開始判斷鍵值
   sec=60; //計數重新從零開始
   P1_0=1;
   break;
   }
   while(P3_0==0);
       }
   }
}
/********************************************************************
                            定時中斷服務函數
*********************************************************************/
void t0(void)interrupt 1 using 0 //定時中斷服務函數
{
   tcnt++; //每過250ust tcnt 加一
   if(tcnt==4000) //計滿4000次(1 秒)時
   {
       tcnt=0; //重新再計
       sec--;
       if(sec==0)
       {
          TR0=0; //定時結束
          P1_0=0 ;
           delay(20);
          P1_0=1;
       }
   }
}

/********************************************************************
                            主函數
*********************************************************************/
void main()
{
   TMOD=0x02; //定時器工作在方式2
   ET0=1;
   EA=1;
   sec=60;
   while(1)
   {
       KEY();
       Led(sec);
   }
}      


/********************************************************************
                              結束
*********************************************************************/

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:379730 發表于 2018-11-20 17:49 | 只看該作者
延時時間太短了,中斷里不要有延時,用定時器做延時就好了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表