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

標題: 51單片機編程,求大佬幫忙看看哪里出錯了 達到一定的值蜂鳴器發生報警 [打印本頁]

作者: chengkong    時間: 2019-5-21 22:06
標題: 51單片機編程,求大佬幫忙看看哪里出錯了 達到一定的值蜂鳴器發生報警
剛學單片機不久,自己依葫蘆畫瓢的寫了一個程序,要求達到一定的值蜂鳴器發生報警,報警聲長用數碼管顯示,一分鐘后關閉,可是仿真的時候數碼管并不顯示時間,用keil調試的時候發現不能進入定時中斷,想了很久都不知道為什么這樣,不知道如何改,求求大佬們幫助。

單片機源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar AD_val;
uchar aa,shi,ge,miao,zheng,flag;
sbit wei1=P2^6;
sbit wei2=P2^7;
sbit buzzer=P1^0;
sbit CS=P3^0;
sbit CLK=P3^6;
sbit DIO=P3^7;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char A_D();
void init();
void display(uchar shi,uchar ge);
void delay(uint z);
void alarm();
void main()
{
        while(1)
        {
               
                AD_val=A_D();
                zheng=AD_val/51;
          alarm();
                if(buzzer==0)
                {
                //        miao=60;
                        init();
                        if(aa==20)
                        {
                                aa=0;
                                miao++;
                                if(miao==60)
                                {
                                        miao=0;
                                        TR0=0;
                                        buzzer=1;
                                }
                                  shi=miao/10;
                                  ge=miao%10;
                                       
                        }
                        
                        display(shi,ge);
                }

                }
        
        }


unsigned char A_D()//模數轉換
{
        uchar i,dat;
        CS=1;
        CLK=0;
        CS=0;
        
        DIO=1;
        CLK=1;
        CLK=0;
        
        DIO=1;
        CLK=1;
        CLK=0;
        
        DIO=0;
        CLK=1;
        CLK=0;
        
        DIO=1;
        CLK=1;
        for(i=0;i<8;i++)
        {
                CLK=1;
                CLK=0;
                dat<<=1;
                dat|=(uchar)DIO;
        }
        CS=1;
        return dat;
}

void display(uchar shi,uchar ge)//顯示程序
{
    wei1=1;
          wei2=0;
          P0=table[ge];
          delay(1);
          P0=0Xff;
          wei1=0;
          wei2=1;
                P0=table[shi];
          delay(1);
          P0=0xff;  
}

void delay(uint z)//延遲
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=120;y>0;y--);
}

void alarm()//警報
{
        if(zheng>0)
        {
                buzzer=0;
        
        }
        else
        {
                buzzer=1;
        }
}

void init()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        PT0=1;
  }

void timer0() interrupt 1//定時器中斷
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        aa++;        
}



作者: zhanghyg    時間: 2019-5-22 10:34
AD轉換程序錯誤




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1