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

標題: 新手,求指導,這是一個單片機倒計時程序,但是只減一下就不動了 [打印本頁]

作者: 花花世界ww    時間: 2017-6-6 18:20
標題: 新手,求指導,這是一個單片機倒計時程序,但是只減一下就不動了
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit wei=P3^0;
void delay(u16 i)
{
        while(i--);        
}
u16 icount,count;
u8 code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
               0x88,0x83,0xc6,0xa1,0x86,0x8e};
void main ()
{
      icount=0;
      count=9876;
      TMOD=0x01;
      TH0=(65536-50000)/256;
      TL0=(65536-50000)%256;
      EA=1;
      ET0=1;
      TR0=1;
      P1=0x00;

        while (1)
        {
                wei=1;
                P1=0x08;
                wei=0;
                P1=table[count%10];
                delay(1000);
                wei=1;
                P1=0x04;
                wei=0;
                P1=table[count/10%10];
                delay(1000);
                wei=1;
                P1=0x02;
                wei=0;
                P1=table[count/100%10];
                delay(1000);
                wei=1;
                P1=0x01;
                wei=0;
                P1=table[count/1000];
                delay(1000);        
        }
}
void inter0()interrupt 1           
{
         TH0=(65536-50000)/256;
      TL0=(65536-50000)%256;
      icount++;
      if(icount==10)
              {
              count--;
              if(count==0)
              {count=9999;}
              }        
}


作者: 965659478    時間: 2017-6-6 18:33
      if(icount==10)
              {
              count--;
              if(count==0)
              {count=9999;}
              }   
把這個寫到主函數 大循環中試試
作者: 花花世界ww    時間: 2017-6-6 20:58
965659478 發表于 2017-6-6 18:33
if(icount==10)
              {
              count--;

不行,我也不知道為什么
作者: wosiyabo    時間: 2017-6-7 01:04
    TH0=(65536-50000)/256;       TL0=(65536-50000)%256;       icount++;       if(icount==10)               {   icount=0;            count--;               if(count==0)               {count=9999;}               }   
作者: dzbj    時間: 2017-6-7 09:07
icount++;
      if(icount==10)

你這么寫邏輯不對 icount停不住 自加到10 然后count減 循環完了 下一個中斷進來 icount繼續加就是11 不滿足==10的條件 count就不會減了 當然只執行一次 只有一次滿足==10這個條件了
作者: ahshmj    時間: 2017-6-7 09:30
“sbit wei=P3^0;”怎么wei就一個呢?就一個數碼管?就讓他先是一位?
作者: zl2168    時間: 2017-6-7 09:41
本帖最后由 zl2168 于 2017-6-7 21:04 編輯

給你介紹一個能操作演示的案例
實例96  能預置初值的倒計時秒表
Proteus仿真一下,確認有效。
實例96 能設置初值的倒計時秒表.rar (40 KB, 下載次數: 5)

以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內有常用的單片機應用100案例,用于仿真實驗操作,書中電路和程序設計有詳細說明,電路與程序真實可靠可信可行,程序語句條條有注解。若需99.99秒,硬件電路增加一位595。軟件程序增加0.01s10ms)計數器,并修改相應計數顯示程序。仿真電路和Hex文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網上書店打折購買。

作者: jason2062    時間: 2017-6-7 09:44
所有單片機程序都必須是死循環
作者: ahshmj    時間: 2017-6-7 10:08
if(icount==10)
              {
                icount=0; //加上這一句,否則無限止往上加。
              count--;
              if(count==0)
              {count=9999;}
作者: ahshmj    時間: 2017-6-7 10:12
icount無限止往上加,就不會有icount==10,count就不會變化。
作者: 宮本無三四    時間: 2017-6-7 11:26
icount到10之后沒有歸零
作者: 宮本無三四    時間: 2017-6-7 11:27
而且你這是每40秒才減一吧?
作者: 花花世界ww    時間: 2017-6-7 17:19
dzbj 發表于 2017-6-7 09:07
icount++;
      if(icount==10)

非常感謝
作者: 花花世界ww    時間: 2017-6-7 17:20
宮本無三四 發表于 2017-6-7 11:27
而且你這是每40秒才減一吧?

我是隨便設的一個數
作者: 花花世界ww    時間: 2017-6-7 17:21
wosiyabo 發表于 2017-6-7 01:04
TH0=(65536-50000)/256;       TL0=(65536-50000)%256;       icount++;       if(icount==10)         ...

非常感謝
作者: 花花世界ww    時間: 2017-6-7 18:20
ahshmj 發表于 2017-6-7 09:30
“sbit wei=P3^0;”怎么wei就一個呢?就一個數碼管?就讓他先是一位?

有鎖存器
作者: LPX13141995    時間: 2017-6-7 20:49
是不是沒有歸零
作者: leiwei1121    時間: 2017-6-7 20:59
好難呀  555555
作者: ahshmj    時間: 2017-6-8 09:41
花花世界ww 發表于 2017-6-7 18:20
有鎖存器

有鎖存器你也要送出位選碼呀,你不能一直不變吧?
作者: 蛻變    時間: 2017-6-8 10:26
程序邏輯問題,還有最好不要出現while(i--);這樣的語句~
作者: 3760609865    時間: 2017-6-8 14:18
計數時應加上 icount=0;否定只會一直往上加。
作者: 陳益誠    時間: 2017-6-8 15:40
加油。。。。 ~~




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