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

標題: 單片機時分秒的暫停和加 [打印本頁]

作者: eidjkfgnf    時間: 2019-2-16 20:44
標題: 單片機時分秒的暫停和加
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit S1=P2^2;
sbit S2=P2^3;
sbit S3=P2^4;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c};
void delayms(uint);
uchar num,num1,num2,num3,shi,ge,shi1,ge1,shi2,ge2;                  
void delayms(uint xms)
{
        uint i,j;
                for(i=xms;i>0;i--)
                   for(j=110;j>0;j--);
}

void display(uchar num1s,uchar num2s,uchar num3s )
{           shi2=num3s/10;
           ge2=num3s%10;
           shi1=num2s/10;
           ge1=num2s%10;
           shi=num1s/10;
           ge=num1s%10;

      S1=0;                  
          S2=0;
          S3=0;
          P0=table[ge];
          delayms(2);
          P0=0;
           
          S1=1;
          S2=0;
          S3=0;
          P0=table[shi];
          delayms(2);
          P0=0;

          S1=0;
          S2=1;
          S3=0;
          P0=0x40;
          delayms(2);
          P0=0;

          S1=1;
          S2=1;
          S3=0;
          P0=table[ge1];
          delayms(2);
          P0=0;

      S1=0;
          S2=0;
          S3=1;
          P0=table[shi1];
          delayms(2);
          P0=0;

          S1=1;
          S2=0;
          S3=1;
          P0=0x40;
          delayms(2);
          P0=0;

          S1=0;
          S2=1;
          S3=1;
          P0=table[ge2];
          delayms(2);
          P0=0;

          S1=1;
          S2=1;
          S3=1;
          P0=table[shi2];
          delayms(2);
          P0=0;
}
void init()
{
  TMOD=0x11;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)/256;
        TH1=(65536-45872)/256;
        TH1=(65536-45872)/256;
    EA=1;
        ET0=1;
        TR0=1;
}
void keyscan()
{
      if(key1==0)
          {
          delayms(2);
          if(key1==0)
          {
          num1++;
          if(num1==60)
          {
          num1=0;
          }
          while(!key1);
          }
          }
          if(key2==0)
          {
          delayms(2);
          if(key2==0)
          {
          num2++;
          if(num2==60)
          {
          num2=0;
          }
          while(!key2);
          }
          }
          if(key3==0)
          {
          delayms(2);
          if(key3==0)
          {
          num3++;
          if(num3==24)
          {
          num3=0;
          }
          while(!key3);
          }
          }        
          if(key4==0)
          {
           delayms(2);
           if(key4==0)
           {
           while(!key4);
           TR0=~TR0;
           }
           }
          }
void main()
{
           init();
        while(1)
        {
           
                 keyscan();
            display(num1,num2,num3);
        }
}
void T0_time()interrupt 1
{
    TH0=(65536-45872)/256;
        TL0=(65536-45872)/256;
        num++;
        if(num==20)
        {
           num=0;
           num1++;
           if(num1==60)
           {
              num1=0;
                  num2++;
                  if(num2==60)
                  {
                     num2=0;
                         num3++;
                         if(num3==24)
                         {
                         num3=0;        
                 }
           }
           }
           }
         
}
作者: 小貓貓愛吃魚    時間: 2019-2-17 09:23
嘖嘖嘖,莫名其妙的發這么些代碼?
莫名其妙的問法,不知道要做什么
作者: HC6800-ES-V2.0    時間: 2019-2-17 14:55
應該不是有問題,而是成功的一個例子。呵呵
K1——秒加,K2——分加,K3——時加,K4——暫停和啟動
不過嘛,我倒是有點問題:
1、不暫停也是可以加的,暫停有什么用呢?
2、按鍵消抖——我一直按著,就沒顯示啦——需要容錯
3、定時器中斷中的語句太多,定時不太準——這個有點“吹毛求疵”
作者: 笨笨兔    時間: 2019-2-18 09:14
起碼,樓主還不知道軟件的結構。
作者: iofree    時間: 2019-2-18 11:43
HC6800-ES-V2.0 發表于 2019-2-17 14:55
應該不是有問題,而是成功的一個例子。呵呵
K1——秒加,K2——分加,K3——時加,K4——暫停和啟動
不過 ...

我覺得他這個應該是準備做定時器應用的,而不是做時鐘用,否則秒加是沒有多大意義的,K4暫停啟動是為停止和啟動定時器而準備,這段代碼還屬于初級功能驗證階段




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