找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

此程序總有一個(gè)錯(cuò)誤,求助大神解決,我的單片機(jī)芯片是stc89c52rc系列的

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:87568 發(fā)表于 2016-3-27 21:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
/*-------------------------------------------------------
要求:利用數(shù)碼管,定時(shí)器等模塊,做出一個(gè)秒表,樣式00:00.0

------------------------------------------------*/

  #include<reg52.h>
  #define uchar unsigned char
  #define uint unsigned int
  uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  uchar a,n,num1,num2,f_shi,f_ge,m_shi,m_ge,msec;
  char  f_num,m_num;
  void init();
  void delay(uint xms)
  {
    uint i,j;
    for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
  }
  void init()
  {
     TMOD=0x11;
  TH0=(65536-45872)/256;
  TL0=(65536-45872)%256;
  TH1=(65536-45872)/256;
  TL1=(65536-45872)%256;
  EA=1;
  ET0=1;
  TR0=1;
  ET1=1;
  TR1=1;
  }
  void display(uchar f_shi,f_ge,m_shi,m_ge)
  {   
  P1=0x00;
  P2=table[f_shi];
  delay(5);
  P1=0x01;
  P2=table[f_ge];
  delay(5);
  P1=0x02;
  P2=0x40;
  delay(5);
     P1=0x03;
  P2=table[m_shi];
  delay(5);
  P1=0x04;
  P2=table[m_ge]|0x80;
  delay(5);
  P1=0x05;
  P2=table[msec];
  delay(5);
  }
  void main()
  {
    init();
f_num=00;
m_num=00;
while(1)
{
   if(num1==20)
   {
      num1=0;
      if(m_num==59)
      {
            m_num=-1;
            if(f_num==59)
            {                  
               f_num=-1;
            }
            f_num++;
         }
         m_num++;                  
       }
  m_shi=m_num/10;     
  m_ge =m_num%10;
  f_shi=f_num/10;     
  f_ge =f_num%10;
   display(uchar f_shi,f_ge,m_shi,m_ge);
}
  }
  void T0_time() interrupt 1
  {
     TH0=(65536-45872)/256;
  TL0=(65536-45872)%256;  
  num1++;      
  }
void T1_time() interrupt 3
  {
     TH1=(65536-45872)/256;
  TL1=(65536-45872)%256;
  num2++;
  if(num2==12)
  {
      num2=0;
   n++;
   if(n==60)
   {
     n=0;
   }
   msec=n%10;
  }
   }

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:72781 發(fā)表于 2016-3-27 23:58 | 只看該作者
本帖最后由 暗光 于 2016-3-28 00:07 編輯

不知道是不是這個(gè)地方錯(cuò)啊,
看了一下感覺是變量重復(fù)定義了,首先你在前面定義了f_shi,f_ge,m_shi,m_ge為全局變量,然后你在寫顯示子函數(shù)時(shí)是這樣寫的void display(uchar f_shi,f_ge,m_shi,m_ge),這個(gè)語句相當(dāng)于重新定義了一個(gè)局部的只能在這個(gè)子函數(shù)使用的局部變量,多嘴一下這個(gè)變量叫形參是用來接收傳遞進(jìn)來的參數(shù)供子函數(shù)使用,故沖突了,而且定義錯(cuò)了,每一個(gè)變量前面都要加uchar不能一次加(印象中是的)。

解決辦法:1、那么既然是全局變量,display就可以直接引用,直接定義為void display(){}就可以了。
2、定義這個(gè)子函數(shù)時(shí)把里面的局部變量改一下,比如加一個(gè)字母貨這數(shù)字區(qū)分開即可,void display(uchar f_shi1,uchar f_ge1,uchar m_shi1,uchar m_ge1),里面的也要改。

還有一個(gè)錯(cuò)誤,調(diào)用的時(shí)候錯(cuò)誤,你在mian的while(1)中是這樣調(diào)用的display(uchar f_shi,f_ge,m_shi,m_ge);是直接復(fù)制的吧?!,調(diào)用的時(shí)候只需要把要傳遞的參數(shù)傳遞進(jìn)去就可以了,所以應(yīng)該是display(f_shi,f_ge,m_shi,m_ge);
這里面的四個(gè)變量,因?yàn)樵谡{(diào)用的時(shí)候傳遞了參數(shù),所以是實(shí)參。


最后在說一句,如果編程遇到報(bào)錯(cuò),把報(bào)錯(cuò)的內(nèi)容復(fù)制下來,百度一下,就可以找到錯(cuò)誤原因(PS:英語好的省略這一步。。。。。。。。。。)
回復(fù)

使用道具 舉報(bào)

板凳
ID:85702 發(fā)表于 2016-3-28 10:49 | 只看該作者
uchar a,n,num1,num2,f_shi,f_ge,m_shi,m_ge,msec;
char  f_num,m_num;

感覺是變量定義類型不對吧。CHAR是字符型的。f_num++字符自加。這不對吧。  應(yīng)該定義成INT吧
int a,n,num1,num2,f_shi,f_ge,m_shi,m_ge,msec;
int   f_num,m_num;然后試試
回復(fù)

使用道具 舉報(bào)

地板
ID:97438 發(fā)表于 2016-3-28 10:54 來自手機(jī) | 只看該作者
樓上的都錯(cuò)了。。。我這沒網(wǎng),有網(wǎng)電腦再說
回復(fù)

使用道具 舉報(bào)

5#
ID:87568 發(fā)表于 2016-3-28 19:26 | 只看該作者
暗光 發(fā)表于 2016-3-27 23:58
不知道是不是這個(gè)地方錯(cuò)啊,
看了一下感覺是變量重復(fù)定義了,首先你在前面定義了f_shi,f_ge,m_shi,m_ge為 ...

十分感謝你的回復(fù),你的方法給我提供了很大的幫助!!
回復(fù)

使用道具 舉報(bào)

6#
ID:111182 發(fā)表于 2016-3-28 19:37 | 只看該作者
來晚了
回復(fù)

使用道具 舉報(bào)

7#
ID:97438 發(fā)表于 2016-3-28 21:53 | 只看該作者
我錯(cuò)了,應(yīng)該是變量的問題
回復(fù)

使用道具 舉報(bào)

8#
ID:72781 發(fā)表于 2016-3-28 23:36 | 只看該作者
七彩繽紛 發(fā)表于 2016-3-28 10:49
uchar a,n,num1,num2,f_shi,f_ge,m_shi,m_ge,msec;
char  f_num,m_num;

不是,char型雖然是字符型,但是并不是代表儲存的必須是字符,而意思是,一個(gè)字符是由8bit組成,char型就8bit,在任意編譯器都一樣,都是8bit,而int型在不同的編譯器,不同位數(shù)的單片機(jī)是不一樣的
回復(fù)

使用道具 舉報(bào)

9#
ID:7485 發(fā)表于 2016-3-29 14:41 | 只看該作者
兩個(gè)中斷幾乎是同時(shí)發(fā)生,容易出錯(cuò)。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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