久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

定時器中斷不會用

[復制鏈接]
跳轉到指定樓層
樓主
ID:295170 發表于 2018-5-19 11:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "STC15F2K60S2.h"
#include <intrins.H>
#include "DS18B20.h"

unsigned char dspcom=0;
unsigned char flag=0;
unsigned char Scanpoint=1;
unsigned char Choosetime,count;
unsigned char tem;
int b;
unsigned char i,a,Clock_Hour=0,Clock_Minute_tens=0,Clock_Minute_ones=0,Clock_Second_ones=0,Clock_Second_tens=0;
unsigned char Clock_1Ms=0,Clock_10Ms=0,Clock_100Ms=0;
unsigned char number=0;
unsigned char Tempnumber[10]=
{
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
};
unsigned char Temp[10];
unsigned char code Led_Display_Segment_Code[16]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //0,1,2,3,4,5,6,7   
0x7f,0x6f,0x40,0x00,                    //8,9,-,不亮,  
};
unsigned char dspbuf[10];
unsigned char  Display_Clock_Buffer[8]=
{
  0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
};
sbit P1_0=P1^0;
sbit P1_1=P1^1;
  
sbit S4=P3^2;
sbit S5=P3^3;
sbit S6=P3^4;
sbit S7=P3^5;
bit S5_flag=0;
bit S6_flag=0;
bit S7_flag=0;
/**********************************************************
函數名稱: Delay()      延時函數
***********************************************************/
void Delay(void)
{
unsigned char i,j;
for (i=0;i<2;i++)
  for (j=0;j<100;j++)
   _nop_();
}
/**********************************************************
函數名稱: Delay1000ms()      延時函數
***********************************************************/
void Delay1000ms()  [url=]//@11.0592MHz[/url]
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 43;
j = 6;
k = 203;
do
{
  do
  {
   while (--k);
  } while (--j);
} while (--i);
}
/**********************************************************
函數名稱: Display()      數碼管顯示
***********************************************************/
void Display(void)
{
P0=0x00;
    P0=Led_Display_Segment_Code[dspbuf[dspcom]];
  P2=_cror_(P2,1);
    Delay();
if(++dspcom==8)
      dspcom=0;
}
/**********************************************************
函數名稱: Firstshow()     采樣溫度數據的時間間隔的默認顯示
***********************************************************/
void Firstshow(void)
{
     dspbuf[0]=11;
  dspbuf[1]=11;
  dspbuf[2]=11;
     dspbuf[3]=11;
  dspbuf[4]=11;
  dspbuf[5]=10;      
  dspbuf[6]=0;
  dspbuf[7]=1;  

}
/**********************************************************
函數名稱:Secondshow()   采樣溫度數據的時間間隔的顯示
***********************************************************/
void Secondshow(void)
{
  dspbuf[7]=Choosetime%10;
  dspbuf[6]=Choosetime/10;
  dspbuf[5]=10;
  dspbuf[4]=11;
  dspbuf[3]=11;
  dspbuf[2]=11;
  dspbuf[1]=11;
  dspbuf[0]=11;
}
/**********************************************************
函數名稱:Clockshow()   顯示時鐘界面
***********************************************************/
void Clockshow(void)
{  
     dspbuf[7]=Clock_Second_ones;
  dspbuf[6]=Clock_Second_tens;
  dspbuf[5]=10;
  dspbuf[4]=Clock_Minute_ones;
  dspbuf[3]=Clock_Minute_tens;
  dspbuf[2]=10;
  dspbuf[1]=Clock_Hour%10;
  dspbuf[0]=Clock_Hour/10;
}
  
/**********************************************************
函數名稱:Tempshow()   顯示記錄的溫度
***********************************************************/
void Tempshow(void)
{
     dspbuf[7]=Temp[number]%10;
  dspbuf[6]=Temp[number]/10;
  dspbuf[5]=10;
  dspbuf[4]=11;
  dspbuf[3]=11;
     dspbuf[2]=Tempnumber[number]%10;
  dspbuf[1]=Tempnumber[number]/10;
  dspbuf[0]=10;
}
/**********************************************************
函數名稱:Timer0Init()   定時器中斷函數o
***********************************************************/   
void Timer0Init(void)  //1毫秒@12.000MHz  初始化
{
    AUXR |= 0x80;  //定時器時鐘1T模式
TMOD &= 0xF0;  //設置定時器模式
TL0 = 0xCD;  //設置定時初值
TH0 = 0xD4;  //設置定時初值
TF0 = 0;  //清除TF0標志
TR0 = 1;  //定時器0開始計時
ET0=1;     //打開定時器0
EA=1;     //  開啟總中斷
}
void Timer0_Int(void) interrupt 1  //定時器0中斷服務程序   isr_Time......
{
    TL0 = 0xA0;  //設置定時初值
TH0 = 0x15;  //設置定時初值
     if(a==0)
  {
    Display();
  }
  if(a==1)
{
     Clock_1Ms++;
     if(Clock_1Ms==10)
     {  
      Clock_10Ms++;
      if(Clock_10Ms==10)
     {
        Clock_100Ms++;
       if(Clock_100Ms==10)
       {
        Clock_Second_ones++;
       if(Clock_Second_ones==10)
       {
           Clock_Second_tens++;
          if(Clock_Second_tens==6)
         {
           Clock_Minute_ones++;
             if(Clock_Minute_ones==10)
          {
              Clock_Minute_tens++;
              if(Clock_Minute_tens==6)
              {
                    Clock_Hour++;
                if(Clock_Hour==24)
                {
                     Clock_1Ms=0;
                }
              }
          }
         }
          }
       }
    }
    }
   Clockshow();
}   
//dspbuf[0] = tem/10;
//dspbuf[1] = tem%10;
Display();
}
  /*
void Timer1Init(void)  //5000微秒@12.000MHz
{
AUXR |= 0x40;  //定時器時鐘1T模式
TMOD &= 0x0F;  //設置定時器模式
TL1 = 0xA0;  //設置定時初值
TH1 = 0x15;  //設置定時初值
TF1 = 0;  //清除TF1標志
TR1 = 1;  //定時器1開始計時
}
void timer0() interrupt 1
{
   TH1=0x4c;
   TL1=0x00;
   count++;
   if(count==200)
   {  
     count=0;  //中斷累計次數清0
   }
   }
*/
/**********************************************************
函數名稱:Key_scan()      
***********************************************************/
void Key_scan(void)
{
     if(S4==0)
   {
        Scanpoint++;
        switch(Scanpoint)
        {
           case 1: Choosetime=1;
                   break;
           case 2: Choosetime=5;
                   break;
              case 3: Choosetime=30;
                   break;
           case 4: Choosetime=60;
                   break;
           default:Scanpoint=1;
                   Choosetime=1;
       break;
        }
     Secondshow();
      while(!S4);
  }
  if(S5==0)
   {
      S5_flag=1;  
      while(!S5);
   
   }
  if(S6==0)
   {
      S6_flag=1;
      while(!S6);
   }
   if(S7==0)
   {
      S7_flag=1;
      while(!S7);
   }
}
  
/**********************************************************
函數名稱:Key_read()   
***********************************************************/
void Key_read(void)
{
   Key_scan();
    while(S5_flag==1)
   {     // P1_1=0;
      while(flag!=3)
{
     a=1;
    Timer0Init();
   Clockshow();     //時鐘顯示
   
// P1_1=0;
      
   Temp[flag]=Ds18b20_ReadData();    //存入讀取的溫度
  //  P1_1=1;
   flag++;
     Delay1000ms();
}
  S5_flag = 0;
   b = 1;
   }
   if(b == 1)
   {
             P1_1=0;
              Timer1Init();
               P1_1=1;
               Timer1Init();
   }
while(S6_flag==1)
{
     b = 0;
                       //dengmei
    for(i=0;i<10;i++)
    {
      a=0;
      Tempshow(); //顯示記錄的溫度
  // Timer0Init();
   Delay1000ms();
   number++;
    }
}

    while(S7_flag==1)
{
      Firstshow();
   // Choosetime=1;
         Temp[10]=0;
}
}
  */
void main()
{
        P2=0xfe;
      Timer0Init();
// Timer1Init();

  while(1)
  {
      
    Key_read();
  
           // tem = Ds18b20_ReadData();   
   
  }   
}

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

使用道具 舉報

沙發
ID:1 發表于 2018-5-19 16:52 | 只看該作者
請詳細說明下問題,先轉到冷門區了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 热re99久久精品国99热观看 | 在线免费观看日本视频 | 伊人激情综合网 | www成人免费 | 国产午夜精品一区二区三区嫩草 | 久久大全 | 毛片视频免费观看 | 日韩国产精品一区二区三区 | 一区二区视频在线观看 | 国产东北一级毛片 | 久久久久亚洲精品 | 久久国色 | 奇米av| 97精品一区二区 | 国产精品入口久久 | 国产乱码精品1区2区3区 | 欧美三级网站 | 一级毛片在线播放 | 亚洲在线久久 | 亚洲欧洲综合av | 黄a大片 | 免费视频一区 | 亚洲一二三区不卡 | 精品久久精品 | 噜久寡妇噜噜久久寡妇 | 91免费观看国产 | 美女精品一区 | 中文在线一区二区 | av天天看| 国产在线视频一区 | www.成人在线视频 | 中文字幕在线免费观看 | 国产1区2区在线观看 | 日韩高清三区 | 成人一区av偷拍 | 国产一区二区三区久久久久久久久 | 欧美久久久久久久久中文字幕 | av性色全交蜜桃成熟时 | 在线免费观看黄网 | 亚洲在线一区二区三区 | 嫩草懂你的影院入口 |