當(dāng)前位置:首頁(yè) > 技術(shù)學(xué)院 > 熱搜器件
[導(dǎo)讀]DS1302實(shí)時(shí)時(shí)鐘---液晶顯示

/*名稱(chēng):DS1302實(shí)時(shí)時(shí)鐘---液晶顯示
  說(shuō)明:向DS1302中寫(xiě)入初始時(shí)間,再?gòu)腄S1302中讀取時(shí)鐘數(shù)據(jù),時(shí)間可以調(diào)節(jié) ,并 在LCD上顯示出來(lái)。
*/
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
#define datport P0


sbit IO = P1^1;    //DS1302數(shù)據(jù)線
sbit SCLK = P1^0;    //DS1302時(shí)鐘線
sbit RST = P1^2;    //DS1302復(fù)位線
sbit RS = P2^2;     //LCD寄存器選擇
sbit RW = P2^3;     //LCD讀寫(xiě)控制
sbit EN = P2^4;      //LCD啟用


sbit f1 = P3^0;
sbit f2 = P3^1;
sbit f3 = P3^2;
sbit f4 = P3^3;
uchar temp1,temp2;
uchar key();
uchar hour_flag,min_flag,second_flag,flag_key=0;
uchar year_flag,month_flag,day_flag,day_up,day_down;
uchar week_flag;
uchar timecount = 0;
uchar month_table[] = {0,32,29,32,31,32,31,32,32,31,32,31,32};
bit flag;

//1、2、3、4、5、6、7分別對(duì)應(yīng)周一至周日
uchar *WEEK[]=
{
  "***","MON","TUS","WEN","THU","FRI","SAT","SUN"
};
//LCD顯示緩沖
uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00    "};
uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00    "};
//存放日期和時(shí)間
uchar DateTime[7];


//延時(shí)函數(shù)
void DelayMS(uint ms)
{
  uchar i;
 while(ms--)
 {
   for(i = 0;i < 120;i ++);
 }
}


//向DS1302寫(xiě)入一字節(jié),根據(jù)時(shí)序圖寫(xiě)函數(shù)
//上升沿鎖存數(shù)據(jù),先發(fā)送最低位
void Write_A_Byte_TO_DS1302(uchar x)
{
  uchar i;
 for(i = 0;i < 8;i ++)
 {
   IO = x & 0x01;SCLK = 1;SCLK = 0;x >>= 1;
 }
}


//從DS1302讀取一字節(jié),看時(shí)序圖寫(xiě)函數(shù)
//下降沿鎖存數(shù)據(jù),先發(fā)送最低位
///DS1302中的數(shù)據(jù)是BCD碼存放的,所以將寄存器中的數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制返回

uchar Get_A_Byte_FROM_DS1302()
{
  uchar i,b = 0x00; 
 for(i = 0;i < 8;i ++)
 {
   b |= _crol_((uchar)IO,i);//先將最低位存放在b的最低位
                           //再將下一位左移一位存放在b的第二位
         //同樣的道理可以將要讀取的數(shù)據(jù)存放在b中
  SCLK = 1;SCLK = 0;     //下降沿鎖存數(shù)據(jù)
 }
 return b / 16 * 10 + b % 16;   //將BCD碼轉(zhuǎn)換成十六進(jìn)制返回
}

 

//從指定地址讀取一個(gè)數(shù)據(jù)
uchar Read_Data(uchar addr)
{
  uchar dat;
 RST = 0;SCLK = 0;RST = 1;
    Write_A_Byte_TO_DS1302(addr);  //寫(xiě)入地址
 dat = Get_A_Byte_FROM_DS1302();//讀取數(shù)據(jù)
    SCLK = 1;RST = 0;
 return dat;
}


//向指定地址寫(xiě)入數(shù)據(jù)
void Write_DS1302(uchar addr,uchar dat)
{
 SCLK = 0;RST = 1;      //高電平使能,SCLK信號(hào)線在閑置時(shí)為0
    Write_A_Byte_TO_DS1302(addr);
 Write_A_Byte_TO_DS1302(dat);
    SCLK = 0;RST = 0;      //低電平關(guān)使能
}

//設(shè)置初始時(shí)間
void Set_InitTime()
{
 Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
 Write_DS1302(0x80,0x58);   //設(shè)置秒
 Write_DS1302(0x82,0x59);   //設(shè)置分
 Write_DS1302(0x84,0x23);   //設(shè)置時(shí)
 Write_DS1302(0x86,0x31);   //設(shè)置日
 Write_DS1302(0x88,0x12); //設(shè)置月
 Write_DS1302(0x8a,0x07);   //設(shè)置星期
 Write_DS1302(0x8c,0x05);   //設(shè)置年
 Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)
}

//獲取當(dāng)前時(shí)間
void GetTime()
{
  uchar i,addr = 0x81;
 for(i = 0;i<7;i++)
 {
   DateTime[i] = Read_Data(addr);addr += 2;
 }
}


/*
//液晶模塊的忙碌狀態(tài)
uchar Read_LCD_State()
{
  uchar state;
 RS = 0;RW = 1;EN = 1;DelayMS(1); //根據(jù)規(guī)定,RS為低電平
                           //RW為高電平時(shí),可以讀狀態(tài)
         //EN使能后,才能進(jìn)行讀寫(xiě)
         //延時(shí)一會(huì),給硬件反應(yīng)時(shí)間
 state = datport;      //讀P0口的值
 EN = 0;DelayMS(1);
 return state;      //返回狀態(tài)值
}
*/
//LCD忙檢測(cè)
void LCD_Busy_Wait()
{
// // while((Read_LCD_State()&0x80) == 0x80); //忙,則等待
                                       //當(dāng)P0口最高位為1則說(shuō)明忙
 DelayMS(5);
}

//向LCD寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)
void Write_LCD_Data(uchar dat)
{
  LCD_Busy_Wait();
 RS = 1;RW = 0;EN = 0;datport = dat;EN = 1;DelayMS(1);EN = 0;
}


//向LCD寫(xiě)入一個(gè)字節(jié)命令
void Write_LCD_Command(uchar cmd)
{
  LCD_Busy_Wait();
 RS = 0;RW = 0;EN = 0;datport = cmd;EN = 1;DelayMS(1);EN = 0;
}

 

//初始化LCD
void Init_LCD()
{
  Write_LCD_Command(0x38);
 DelayMS(1);
 Write_LCD_Command(0x01);
 DelayMS(1);
 Write_LCD_Command(0x06);
 DelayMS(1);
 Write_LCD_Command(0x0c);
 DelayMS(1);
}


//設(shè)置顯示位置
void Set_LCD_POS(uchar p)
{
  Write_LCD_Command(p|0x80);
}


//在指定位置顯示字符串
void Display_LCD_String(uchar p,uchar *s)
{
  uchar i;
 Set_LCD_POS(p);
 for(i = 0;i < 16;i ++)
 {
  Write_LCD_Data(s[i]);
  DelayMS(1); 
 }
}


//日期與時(shí)間值轉(zhuǎn)換成數(shù)字字符
void Format_DateTime(uchar d,uchar *a)
{
  a[0] = d / 10 + '0';
 a[1] = d % 10 + '0';
}

//將獲取的時(shí)間轉(zhuǎn)換成數(shù)字后存放在緩沖區(qū)
void Format_Changer()
{
 //Format_DateTime(DateTime[6],LCD_DSY_BUFFER1 + 5);//將年轉(zhuǎn)換成數(shù)字字符

 if(1 == year_flag)
  if(flag == 1)
  {
    LCD_DSY_BUFFER1[5] = ' ';
    LCD_DSY_BUFFER1[6] = 0x20;
  }
  else
  {  
   Format_DateTime(DateTime[6],LCD_DSY_BUFFER1 + 5); //將時(shí)轉(zhuǎn)換成數(shù)字字符   
  }
 else
 {
   Format_DateTime(DateTime[6],LCD_DSY_BUFFER1 + 5); //將時(shí)轉(zhuǎn)換成數(shù)字字符 
 }

 //Format_DateTime(DateTime[4],LCD_DSY_BUFFER1 + 8);//將月轉(zhuǎn)換成數(shù)字字符

 if(1 == month_flag)
  if(flag == 1)
  {
    LCD_DSY_BUFFER1[8] = 0x20;
    LCD_DSY_BUFFER1[9] = 0x20;
  }
  else
  {  
   Format_DateTime(DateTime[4],LCD_DSY_BUFFER1 + 8); //將時(shí)轉(zhuǎn)換成數(shù)字字符   
  }
 else
 {
   Format_DateTime(DateTime[4],LCD_DSY_BUFFER1 + 8); //將時(shí)轉(zhuǎn)換成數(shù)字字符 
 }
 //Format_DateTime(DateTime[3],LCD_DSY_BUFFER1 + 11); //將日轉(zhuǎn)換成數(shù)字字符

 if(1 == day_flag)
  if(flag == 1)
  {
    LCD_DSY_BUFFER1[11] = 0x20;
    LCD_DSY_BUFFER1[12] = 0x20;
  }
  else
  {  
   Format_DateTime(DateTime[3],LCD_DSY_BUFFER1 + 11); //將時(shí)轉(zhuǎn)換成數(shù)字字符   
  }
 else
 {
   Format_DateTime(DateTime[3],LCD_DSY_BUFFER1 + 11); //將時(shí)轉(zhuǎn)換成數(shù)字字符 
 }

// strcpy(LCD_DSY_BUFFER1 + 13,WEEK[DateTime[5]]); //將星期轉(zhuǎn)換成數(shù)字字符
 if(1 == week_flag)
  if(flag == 1)
  {
    LCD_DSY_BUFFER1[13] = 0x20;
    LCD_DSY_BUFFER1[14] = 0x20;
    LCD_DSY_BUFFER1[15] = 0x20;
  }
  else
  {  
   strcpy(LCD_DSY_BUFFER1 + 13,WEEK[DateTime[5]]); //將星期轉(zhuǎn)換成數(shù)字字符  
  }
 else
 {
   strcpy(LCD_DSY_BUFFER1 + 13,WEEK[DateTime[5]]); //將星期轉(zhuǎn)換成數(shù)字字符
 }


 if(1 == hour_flag)
  if(flag == 1)
  {
    LCD_DSY_BUFFER2[5] = ' ';
    LCD_DSY_BUFFER2[6] = 0x20;
  }
  else
  {  
   Format_DateTime(DateTime[2],LCD_DSY_BUFFER2 + 5); //將時(shí)轉(zhuǎn)換成數(shù)字字符   
  }
 else
 {
   Format_DateTime(DateTime[2],LCD_DSY_BUFFER2 + 5); //將時(shí)轉(zhuǎn)換成數(shù)字字符 
 }


 if(1 == min_flag)
  if(flag == 1)
  {
    LCD_DSY_BUFFER2[8] = 0x20;
    LCD_DSY_BUFFER2[9] = 0x20;
  }
  else
  {  
   Format_DateTime(DateTime[1],LCD_DSY_BUFFER2 + 8); //將時(shí)轉(zhuǎn)換成數(shù)字字符   
  }
 else
 {
   Format_DateTime(DateTime[1],LCD_DSY_BUFFER2 + 8); //將時(shí)轉(zhuǎn)換成數(shù)字字符 
 }


 if(1 == second_flag)
  if(flag == 1)
  {
    LCD_DSY_BUFFER2[11] = 0x20;
    LCD_DSY_BUFFER2[12] = 0x20;
  }
  else
  {  
   Format_DateTime(DateTime[0],LCD_DSY_BUFFER2 + 11); //將時(shí)轉(zhuǎn)換成數(shù)字字符   
  }
 else
 {
   Format_DateTime(DateTime[0],LCD_DSY_BUFFER2 + 11); //將時(shí)轉(zhuǎn)換成數(shù)字字符 
 }
 
 
  
//    LCD_DSY_BUFFER2[15] = '0' + flag_key;
// Format_DateTime(DateTime[1],LCD_DSY_BUFFER2 + 8);  //將分鐘轉(zhuǎn)換成數(shù)字字符
// Format_DateTime(DateTime[0],LCD_DSY_BUFFER2 + 11); //將秒轉(zhuǎn)換成數(shù)字字符
}

//主函數(shù)
void main()
{
 
 
 Init_LCD(); //初始化LCD
 Set_InitTime();//設(shè)置初始時(shí)間
 TMOD=0x01;
   TH0=(65535-50000)/256;
  TL0=(65535-50000)%256;
   EA=1;
   TR0=1;
 ET0=1;
 while(1)
 {
  //GetTime(); //獲取當(dāng)前時(shí)間
  //Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)

  //Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
  //Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒
  temp2 = key();
  switch(temp1)
  {
  case 0: //day_flag = 0;
    week_flag = 0;
   // second_flag = 0;
     flag_key = 0;
 
    GetTime(); //獲取當(dāng)前時(shí)間
    Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)
    Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
    Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒
   break;
  case 1: hour_flag = 1;    flag_key = 1;
    GetTime();       //hour    
    if(10 == temp2)
    {
     DateTime[2]++;
     if(24 == DateTime[2]) DateTime[2] = 0;

     DateTime[2] = DateTime[2] / 10 * 16 + DateTime[2] % 10;

     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x84,DateTime[2]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
    if(20 == temp2)
    { 
     if(0 == DateTime[2])
     DateTime[2] = 24;   
     DateTime[2]--;
     DateTime[2] = DateTime[2] / 10 * 16 + DateTime[2] % 10;
     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x84,DateTime[2]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
    GetTime(); //獲取當(dāng)前時(shí)間
    Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)
    Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
    Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒
/*{
  uchar i,addr = 0x81;
 for(i = 0;i<7;i++)
 {
   DateTime[i] = Read_Data(addr);addr += 2;
 }
   Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
 Write_DS1302(0x80,0x58);   //設(shè)置秒
 Write_DS1302(0x82,0x59);   //設(shè)置分
 Write_DS1302(0x84,0x23);   //設(shè)置時(shí)
 Write_DS1302(0x86,0x31);   //設(shè)置日
 Write_DS1302(0x88,0x12); //設(shè)置月
 Write_DS1302(0x8a,0x07);   //設(shè)置星期
 Write_DS1302(0x8c,0x05);   //設(shè)置年
 Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
   break;
  case 2:hour_flag = 0; min_flag = 1;    flag_key = 2;
   
    GetTime();       //min
    if(10 == temp2)
    {
     DateTime[1]++;
     if(60 == DateTime[1]) DateTime[1] = 0;

     DateTime[1] = DateTime[1] / 10 * 16 + DateTime[1] % 10;

     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x82,DateTime[1]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
    if(20 == temp2)
    { 
     if(0 == DateTime[1])
     DateTime[1] = 60;   
     DateTime[1]--;
     DateTime[1] = DateTime[1] / 10 * 16 + DateTime[1] % 10;
     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x82,DateTime[1]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
      GetTime(); //獲取當(dāng)前時(shí)間
    Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)
    Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
    Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒  
 
   break;
  case 3: min_flag = 0;second_flag = 1;      flag_key = 3;
 
    GetTime();       //second
    if((10 == temp2) || (20 == temp2))
    {
     DateTime[0] = 0;

     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x80,DateTime[0]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
   
     GetTime(); //獲取當(dāng)前時(shí)間
    Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)
    Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
    Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒  
   break;
  case 4:  second_flag = 0;year_flag = 1;

    GetTime();       //min
    if(10 == temp2)
    {
     DateTime[6]++;
     if(100 == DateTime[6]) DateTime[6] = 0;

     DateTime[6] = DateTime[6] / 10 * 16 + DateTime[6] % 10;

     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x8c,DateTime[6]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)   
    }
    if(20 == temp2)
    { 
     if(0 == DateTime[6])
     DateTime[6] = 100;   
     DateTime[6]--;
     DateTime[6] = DateTime[6] / 10 * 16 + DateTime[6] % 10;
     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x8c,DateTime[6]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
     GetTime(); //獲取當(dāng)前時(shí)間
    Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)
    Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
    Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒  
   break;
       
  case 5:  year_flag = 0;month_flag = 1;

    GetTime();       //min
    if(10 == temp2)
    {
     DateTime[4]++;
     if(13 == DateTime[4]) DateTime[4] = 1;

     DateTime[4] = DateTime[4] / 10 * 16 + DateTime[4] % 10;

     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x88,DateTime[4]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)   
    }
    if(20 == temp2)
    { 
     if(1 == DateTime[4])
     DateTime[4] = 13;   
     DateTime[4]--;
     DateTime[4] = DateTime[4] / 10 * 16 + DateTime[4] % 10;
     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x88,DateTime[4]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
     GetTime(); //獲取當(dāng)前時(shí)間
    Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)
    Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
    Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒  
   break;
  case 6:  month_flag = 0;day_flag = 1;

    GetTime();       //min
    day_up = month_table[DateTime[4]];
    if((DateTime[4] == 2)&& (DateTime[6] % 4 == 0))
    day_up = 30;  
    day_down = 1;
    if(10 == temp2)
    {
     DateTime[3]++;
     if(day_up == DateTime[3]) DateTime[3] = day_down;

     DateTime[3] = DateTime[3] / 10 * 16 + DateTime[3] % 10;

     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x86,DateTime[3]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)   
    }
    if(20 == temp2)
    {    
     if(day_down == DateTime[3])
     DateTime[3] = day_up;   
     DateTime[3]--;
     DateTime[3] = DateTime[3] / 10 * 16 + DateTime[3] % 10;
     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x86,DateTime[3]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
     GetTime(); //獲取當(dāng)前時(shí)間
    Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)
    Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
    Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒  
   break;
  case 7:  day_flag = 0;week_flag = 1;

    GetTime();       //min
    if(10 == temp2)
    {
     DateTime[5]++;
     if(8 == DateTime[5]) DateTime[5] = 1;

     DateTime[5] = DateTime[5] / 10 * 16 + DateTime[5] % 10;

     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x8a,DateTime[5]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)   
    }
    if(20 == temp2)
    { 
     if(1 == DateTime[5])
     DateTime[5] = 8;   
     DateTime[5]--;
     DateTime[5] = DateTime[5] / 10 * 16 + DateTime[5] % 10;
     Write_DS1302(0x8e,0x00);   //關(guān)閉寫(xiě)保護(hù)
        Write_DS1302(0x8a,DateTime[5]);   //設(shè)置時(shí)
     Write_DS1302(0x8e,0x80);   //開(kāi)啟寫(xiě)保護(hù)    */
    }
     GetTime(); //獲取當(dāng)前時(shí)間
    Format_Changer(); //轉(zhuǎn)換后送給緩沖區(qū)
    Display_LCD_String(0x00,LCD_DSY_BUFFER1); //顯示年月日和星期
    Display_LCD_String(0x40,LCD_DSY_BUFFER2); //顯示時(shí)分秒  
   break;
       
 
  }
 


 }
}

uchar key()
  {
   if(!f1)
   {
    DelayMS(5);
    if(!f1)
    {
     temp1++;
     temp1 = temp1 % 8;
     while(!f1);
    }
   }


   if(!f2)
   {
    DelayMS(5);
    if(!f2)
    {
     return  10;//+
    }
   }

   if(!f3)
   {
    DelayMS(5);
    if(!f3)
    {
     return 20; //-
    }
   }
   return temp1;
  }
void t0(void) interrupt 1 using 0
{
  TH0=(65535-50000)/256; //50ms定時(shí)
  TL0=(65535-50000)%256; 
  timecount++;
  if(timecount>9)
   {
    timecount=0;   
    flag=~flag;        
   } 
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉