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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

撿了一個倒計時單片機板子沒事仿了一下他的程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:288865 發表于 2019-5-12 22:35 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
撿了一個單片機電路板,雙倒計時可設置的,帶存儲,一看stc的單片機,沒事仿一個,不是很專業,具體功能是有了,按鍵這一塊處理感覺有點難,感覺挺復雜的,掛上給初學者看看。高手可以略過了。或者指點一下也行
#include "STC8fxx.H"                         //此文件中定義了單片機的一些特殊功能寄存器
#include "intrins.H"
#include "delay.H"
#include "DigDisplay.H"
#include "EEPROM.H"
#include "key.H"
#include "Timer0.H"

#define uint unsigned int               //對數據類型進行聲明定義
#define uchar unsigned char           //對數據類型進行聲明定義

/*****************************************
* 定義全局變量
**************************************/

uchar code smgduan[12]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f,0x77,0x7c};
uchar temp1,temp2,temp3,temp4;
uchar DisplayData[4];
uchar a,b;
uint hs;
bit s=0,k=0;        

/*******************************************************************************
* 函 數 名       : main
* 函數功能                 : 主函數
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{
uchar q;
out=1;

Delay_ms(500);
temp1=IapRead(0x0400);//讀取eeprom數據
Delay_ms(5);
temp2=IapRead(0x0401);
Delay_ms(5);
temp3=IapRead(0x0500);
Delay_ms(5);                           
temp4=IapRead(0x0501);
Delay_ms(5);                           

while(k5==0&&k==0)        //模式1
  {
   a=temp1;          //將讀取的數據賦值
   b=temp2;
   s=1;
   Timer0();

   while(s)
   {
    DigDisplay();
    datapros();

    if(k1==0)
      {
           DigDisplay();
           DigDisplay();
           if(k1==0)
            {
             k=1;
             TR0=0;
             break;
            }
      }
          if(k5==1)break;
    }
  }
while(k5==1&&k==0)
  {
   a=temp3;
   b=temp4;
   s=1;
   Timer0();

   while(s)
   {
    DigDisplay();
    datapros();

    if(k1==0)
     {
      Delay_ms(2000);
          if(k1==0)
           {
            k=1;
            TR0=0;
            break;
           }
     }
         if(k5==0)break;
    }
  }
  
while(k==1)
  {
    uchar keya=KeyScan();
        out=1;

        DigDisplay();

    if(k1==0)
         {
          Delay_ms(20);
          if(k1==0)
           {
           while(!k1)DigDisplay();
                q=q+1;
                if(q>4)q=0;
           }
         }
   switch(q)
          {                        
            case 0:    break;
            case 1:
                                           DisplayData[0]=0x77;
                       DisplayData[1]=smgduan[1];
                           DisplayData[2]=smgduan[temp1/10];
                           DisplayData[3]=smgduan[temp1%10];
                      switch(keya)
                      {         
                           //case 1:  keynum++;if(keynum==100)keynum=0; break;
                             case 2:  if(temp1>0)temp1--; break;
                             case 3:  if(temp1<99)temp1++;else if(temp1>=99)temp1=99; break;
                            // case 0:   break;
                      }        
                                       break;
            case 2:
                                           DisplayData[0]=0x77;
                       DisplayData[1]=smgduan[2];
                           DisplayData[2]=smgduan[temp2/10];
                           DisplayData[3]=smgduan[temp2%10];
                      switch(keya)
                      {
                           //case 1:  keynum++;if(keynum==100)keynum=0; break;
                             case 2:  if(temp2>0)temp2--; break;
                             case 3:  if(temp2<99)temp2++;else if(temp2>=99)temp2=99; break;
                           //case 4:   break;
                      }        
                                   break;

            case 3:
                                           DisplayData[0]=0x7c;
                       DisplayData[1]=smgduan[1];
                           DisplayData[2]=smgduan[temp3/10];
                           DisplayData[3]=smgduan[temp3%10];
                      switch(keya)
                      {
                           //case 1:  keynum++;if(keynum==100)keynum=0; break;
                             case 2:  if(temp3>0)temp3--; break;
                             case 3:  if(temp3<99)temp3++;else if(temp3>=99)temp3=99; break;
                           //case 4:   break;
                      }
                                           break;
            case 4:
                                           DisplayData[0]=0x7c;
                       DisplayData[1]=smgduan[2];
                           DisplayData[2]=smgduan[temp4/10];
                           DisplayData[3]=smgduan[temp4%10];
                      switch(keya)
                      {
                           //case 1:  keynum++;if(keynum==100)keynum=0; break;
                             case 2:  if(temp4>0)temp4--; break;
                             case 3:  if(temp4<99)temp4++;else if(temp4>=99)temp4=99; break;
                           //case 4:   break;
                      }        
                                           break;
                 }
                if(k4==0)
                {
                Delay_ms(20);
                 if(k4==0)
                 {
                  while(!k4);
                  IapErase(0x400);
                  Delay_ms(50);
                  IapErase(0x500);
                  Delay_ms(50);
                  IapProgram(0x400, temp1);
                  Delay_ms(50);
                  IapProgram(0x401, temp2);
                  Delay_ms(50);
                  IapProgram(0x500, temp3);
                  Delay_ms(50);
                  IapProgram(0x501, temp4);
                  Delay_ms(50);
                  k=0;

                 }
                 }

  }
  }
/*******************************************************************************
* 函 數 名         : 定時器0中斷函數
* 函數功能                   :
***********************************************************************************************************
* 函 數 名         : 定時器0中斷函數
* 函數功能                   :
*******************************************************************************/
void Timer0Init() interrupt 1
{        
        TH0=0X0FE;        //給定時器賦初值,定時1ms
        TL0=0X0C;
        hs++;
    if(hs==1000)
          {
           if(out==1)
                 {
              a--;
                  hs=0;
                  if(a==0)out=0;
                 }
                else if(out==0)
                  {
                   b--;
                   hs=0;
               if(b==0)
                 {
                  out=1;
                  s=0;
                  TR0=0;
                 }
                   }
      }
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:288865 發表于 2019-5-12 22:36 來自手機 | 只看該作者
不會發附件啊
回復

使用道具 舉報

板凳
ID:328014 發表于 2019-5-15 01:58 | 只看該作者
點高級模式里面有個附件上傳的圖標
回復

使用道具 舉報

地板
ID:66287 發表于 2019-5-16 14:57 | 只看該作者
挺好的,希望程序適當的寫點注釋!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区视频播放 | 国产极品车模吞精高潮呻吟 | 亚洲国产精品一区 | 国产精品久久久久久久久久久新郎 | 五月天综合网 | 久久久久一区二区三区 | 久久91精品国产 | 久久久久久综合 | 亚洲啊v在线 | 日韩在线观看一区二区三区 | 日韩成人高清在线 | av激情在线 | 美女三区 | 毛片免费观看 | 亚洲高清在线 | 自拍偷拍在线视频 | 日韩成人av在线 | 九九九久久国产免费 | 日韩在线中文 | 久久国产精品视频 | 一区二区三区在线免费观看 | www.色.com | 色香婷婷 | 亚洲www啪成人一区二区 | 亚洲精品一区二区在线观看 | 久久久精品视 | 一区中文字幕 | 亚洲美女一区 | 在线观看的av | 91免费小视频 | 国产精品日韩欧美一区二区三区 | 殴美黄色录像 | www.9191| 国内自拍偷拍视频 | 久在线| 久久久网| 在线观看成人小视频 | 亚洲视频www| 欧美日韩不卡合集视频 | 国产欧美日韩久久久 | 一级视频在线免费观看 |