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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數碼管時鐘電路為什么秒表不動,而是分鐘在計秒!

[復制鏈接]
跳轉到指定樓層
樓主
ID:596322 發表于 2019-9-7 17:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極數碼管

uchar StrTab[6];
uchar hour=12,minute=21,second=22;         //初始設定時間
void display ();
main()
{
  EA=1;
  TMOD|=0X01;
  TH0=(65536-20000)/256;                 //定時10MS
  TL0=(65536-20000)%256;                //初始設定時間為12:21:22
  ET0=1;                                                //在數碼管上也顯示為12:21:22
  TR0=1;                                                 //但是秒表馬上變成00,而是分鐘在讀秒。                                         
  TMOD|=0X10;                                         //P1為位碼,p2位段碼。                                                 //
  TH1=(65536-20000)/256;                  //求大佬指正。
  TL1=(65536-20000)%256;
  TR1=1;
  ET1=1;
  while(1)
  {

  }

}
void display ()
{
  StrTab[0]=table[hour/10];
   StrTab[1]=table[hour%10];
     StrTab[2]=table[minute/10];
          StrTab[3]=table[minute%10];
        StrTab[4]=table[second/10];
                 StrTab[5]=table[second%10];
                 }
void time1() interrupt 3
{
  static uchar num;
        TH1=0XD8;
        TL1=0XF0;
        switch(num)
        {
         case 0:P1=0X04;P2=StrTab[num];break;// 小時
         case 1:P1=0X08;P2=StrTab[num];break;
           case 2:P1=0X10;P2=StrTab[num];break;//分鐘
                case 3:P1=0X20;P2=StrTab[num];break;
                 case 4:P1=0X40;P2=StrTab[num];break;//秒
                  case 5:P1=0X80;P2=StrTab[num];break;
                   default:break;
                }
           num++;
           if(num==6)
             num=0;
}
void time0() interrupt 1
{
   static uchar count;
        TH0=0XD8;
        TL0=0XF0;
        count++;
        switch(count)
        {
          case 60:display();break;
          default:break;

        }
  if(count==100)
        {
          count=0;
           second++;
           if(second==60);
           {
             second=0;
                 minute++;

                 if(minute==60)
                 {
                   minute=0;
                   hour++;
                   if(hour==24)
                      hour=0;
                 }
           
           }
        
        
        }


}

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

使用道具 舉報

沙發
ID:596322 發表于 2019-9-7 17:57 | 只看該作者
"   if(second==60);  "它竟然不報錯!  
  此貼終結!

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:275826 發表于 2019-9-7 20:35 | 只看該作者
要根據硬件電路如何連接來分析
回復

使用道具 舉報

地板
ID:235200 發表于 2019-9-7 21:30 | 只看該作者
程序邏輯有錯誤,特別是if(count==100)這一句,這樣計時也不準,請把計時邏輯搞清楚再去調試
回復

使用道具 舉報

5#
ID:524818 發表于 2019-9-8 09:21 | 只看該作者
多了分號kile 是不會報錯的,我也犯過同樣錯誤,“差之毫厘、謬之千里” 啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表