找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5661|回復(fù): 21
打印 上一主題 下一主題
收起左側(cè)

新手,求指導(dǎo),這是一個(gè)單片機(jī)倒計(jì)時(shí)程序,但是只減一下就不動(dòng)了

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#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;}
              }        
}

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

使用道具 舉報(bào)

沙發(fā)
ID:208510 發(fā)表于 2017-6-6 18:33 | 只看該作者
      if(icount==10)
              {
              count--;
              if(count==0)
              {count=9999;}
              }   
把這個(gè)寫到主函數(shù) 大循環(huán)中試試
回復(fù)

使用道具 舉報(bào)

板凳
ID:208500 發(fā)表于 2017-6-6 20:58 | 只看該作者
965659478 發(fā)表于 2017-6-6 18:33
if(icount==10)
              {
              count--;

不行,我也不知道為什么
回復(fù)

使用道具 舉報(bào)

地板
ID:146949 發(fā)表于 2017-6-7 01:04 來自手機(jī) | 只看該作者
    TH0=(65536-50000)/256;       TL0=(65536-50000)%256;       icount++;       if(icount==10)               {   icount=0;            count--;               if(count==0)               {count=9999;}               }   
回復(fù)

使用道具 舉報(bào)

5#
ID:47286 發(fā)表于 2017-6-7 09:07 | 只看該作者
icount++;
      if(icount==10)

你這么寫邏輯不對(duì) icount停不住 自加到10 然后count減 循環(huán)完了 下一個(gè)中斷進(jìn)來 icount繼續(xù)加就是11 不滿足==10的條件 count就不會(huì)減了 當(dāng)然只執(zhí)行一次 只有一次滿足==10這個(gè)條件了
回復(fù)

使用道具 舉報(bào)

6#
ID:7485 發(fā)表于 2017-6-7 09:30 | 只看該作者
“sbit wei=P3^0;”怎么wei就一個(gè)呢?就一個(gè)數(shù)碼管?就讓他先是一位?
回復(fù)

使用道具 舉報(bào)

7#
ID:111634 發(fā)表于 2017-6-7 09:41 | 只看該作者
本帖最后由 zl2168 于 2017-6-7 21:04 編輯

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

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

使用道具 舉報(bào)

8#
ID:208689 發(fā)表于 2017-6-7 09:44 | 只看該作者
所有單片機(jī)程序都必須是死循環(huán)
回復(fù)

使用道具 舉報(bào)

9#
ID:7485 發(fā)表于 2017-6-7 10:08 | 只看該作者
if(icount==10)
              {
                icount=0; //加上這一句,否則無限止往上加。
              count--;
              if(count==0)
              {count=9999;}
回復(fù)

使用道具 舉報(bào)

10#
ID:7485 發(fā)表于 2017-6-7 10:12 | 只看該作者
icount無限止往上加,就不會(huì)有icount==10,count就不會(huì)變化。
回復(fù)

使用道具 舉報(bào)

11#
ID:154074 發(fā)表于 2017-6-7 11:26 | 只看該作者
icount到10之后沒有歸零
回復(fù)

使用道具 舉報(bào)

12#
ID:154074 發(fā)表于 2017-6-7 11:27 | 只看該作者
而且你這是每40秒才減一吧?
回復(fù)

使用道具 舉報(bào)

13#
ID:208500 發(fā)表于 2017-6-7 17:19 | 只看該作者
dzbj 發(fā)表于 2017-6-7 09:07
icount++;
      if(icount==10)

非常感謝
回復(fù)

使用道具 舉報(bào)

14#
ID:208500 發(fā)表于 2017-6-7 17:20 | 只看該作者
宮本無三四 發(fā)表于 2017-6-7 11:27
而且你這是每40秒才減一吧?

我是隨便設(shè)的一個(gè)數(shù)
回復(fù)

使用道具 舉報(bào)

15#
ID:208500 發(fā)表于 2017-6-7 17:21 | 只看該作者
wosiyabo 發(fā)表于 2017-6-7 01:04
TH0=(65536-50000)/256;       TL0=(65536-50000)%256;       icount++;       if(icount==10)         ...

非常感謝
回復(fù)

使用道具 舉報(bào)

16#
ID:208500 發(fā)表于 2017-6-7 18:20 | 只看該作者
ahshmj 發(fā)表于 2017-6-7 09:30
“sbit wei=P3^0;”怎么wei就一個(gè)呢?就一個(gè)數(shù)碼管?就讓他先是一位?

有鎖存器
回復(fù)

使用道具 舉報(bào)

17#
ID:208962 發(fā)表于 2017-6-7 20:49 | 只看該作者
是不是沒有歸零
回復(fù)

使用道具 舉報(bào)

18#
ID:208970 發(fā)表于 2017-6-7 20:59 | 只看該作者
好難呀  555555
回復(fù)

使用道具 舉報(bào)

19#
ID:7485 發(fā)表于 2017-6-8 09:41 | 只看該作者

有鎖存器你也要送出位選碼呀,你不能一直不變吧?
回復(fù)

使用道具 舉報(bào)

20#
ID:182522 發(fā)表于 2017-6-8 10:26 | 只看該作者
程序邏輯問題,還有最好不要出現(xiàn)while(i--);這樣的語句~
回復(fù)

使用道具 舉報(bào)

21#
ID:159139 發(fā)表于 2017-6-8 14:18 來自手機(jī) | 只看該作者
計(jì)數(shù)時(shí)應(yīng)加上 icount=0;否定只會(huì)一直往上加。
回復(fù)

使用道具 舉報(bào)

22#
ID:209236 發(fā)表于 2017-6-8 15:40 | 只看該作者
加油。。。!·~~~
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表