找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

有人能不能幫忙看一下這個數(shù)碼管秒表為什么錯了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:435624 發(fā)表于 2018-12-26 22:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

#define PIN0 P0  //êyÂë1ü¶ÎÑ¡¶Ë
#define PIN1 P1  //êyÂë1üλѡ¶Ë

sbit start=P2^7;  //Æô¶ˉ/ÔYí£°′Å¥
sbit reset=P2^6;  //¸′λ°′Å¥

uint cnt=0;   //1sμÄ′ÎêyμļÆêyÖμ
uint num=0;     //½øèëÖD¶Ï′ÎêyμļÆêyÖ죨ò»′Î50ms£©

uchar code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f};
//2»′øD¡êyμãμÄ12òõ¼«êyÂë1ü¶ÎÂë0-9


void Display(uint a,uint b,uint c,uint d);  //éùÃ÷ÏÔê¾oˉêy
void InitTimer0();  //éùÃ÷¶¨ê±Æ÷3õê¼»ˉoˉêy
void Delayms(uint x);  //éùÃ÷Ñóê±oˉêy

void main()
{
        uint g,s,b,q=0;
        //òà′ÎêǸöê®°ùǧ
        InitTimer0();          //3õê¼»ˉ¶¨ê±Æ÷
        while(1)                        //½øèëËàÑ-»·
{       
        if(start==0)   //¼ì2aÆô¶ˉ/ÔYí£¼üêÇ·ñ°′ÏÂ
                        Delayms(20); //Ñóê±Ïû¶¶
        {
                if(start==0)  //Ïû¶¶Ö®oóÔù′μì2a
                {
                        TR0=!TR0;                //¶¨ê±Æ÷μÄ¿ØÖÆÎ»è¡·′
                        while(!start);  //μè′y°′¼üêí·Å
                }
        }
       
if(reset==0)  //¼ì2a¸′λ¼üêÇ·ñ°′ÏÂ
{
        Delayms(20);        //Ñóê±Ïû¶¶
        if(reset==0)          //Ïû¶¶Ö®oóÔù′μì2a
        {
                num=0;               
                cnt=0;                //ÃëμļÆêyÖμÇå0
                while(!reset);                 //μè′y°′¼üêí·Å
        }
}
       
        if(num>=20)  //ÅD¶Ï¼Æê±ê±¼äêÇ·ñ′ïμ½1s£¨20¸ö50ms£©
        {
                num=0;     //½øèëÖD¶Ï′ÎêyÖμÖÃ0
                cnt++;                 //ÃëμļÆêyÖμ¼ó1
                if(cnt>=9999) //ÅD¶ÏêÇ·ñ′ïμ½9999s
                {
                        TR0=!TR0;                        //′ïμ½9999sÔò1رն¨ê±Æ÷2¢ÇåáãËùóDμļÆêyÖμ
                        num=0;
                        cnt=0;
                       
                }
        }       
        g=cnt%10;          //′óÃëμļÆêyÖμàïÃæ·ÖàëÃëμĸöλ
        s=cnt/10%10;         //′óÃëμļÆêyÖμàïÃæ·ÖàëÃëμÄê®Î»
        b=cnt/100%10;        //′ó·ÖμļÆêyÖμàïÃæ·Öàë·Öμĸöλ
        q=cnt/1000%10;
       
        Display(g,s,b,q);  //ÏÔê¾Õa4¸öêy
}       
}

void InitTimer0() //¶¨ê±Æ÷3õê¼»ˉoˉêy
{
       
        TMOD=0x01; //Ñ¡Ôñ¶¨ê±Æ÷0μÄ1¤×÷·½ê½1
        TH0=(65536-45872)/256;  //×°3õÖ죨¶¨ê±50ms£©,¾§Õñ11.0592MHz
        TL0=(65536-45872)%256;
        EA=1;                //′ò¿a×üÖD¶Ï
        ET0=1;        //′ò¿a¶¨ê±Æ÷ÖD¶Ï
        TR0=0;        //Ïè2»òaÆô¶ˉ¶¨ê±Æ÷
       
}

void TIMER0()  interrupt 1  //¶¨ê±Æ÷ÖD¶Ï·tÎñoˉêy
{
        TH0=(65536-45872)/256;  //֨װ3õÖμ
        TL0=(65536-45872)%256;
        num++;                //èýøèëÖD¶Ï′ÎêyÖμ¼ó1£¬óÃóúÅD¶ÏêÇ·ñ′ïμ½1s
}

void Delayms(uint x)   //Ñóê±xms
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}

void Display(uint a,uint b,uint c,uint d) //¶¨òåÏÔê¾oˉêy
{       
        PIN0=table[a]; //ÃëμĸöλμĶÎÑ¡
        PIN1=0x0e;                 //ÃëμĸöλμÄλѡ
        Delayms(5);                       
       
        PIN0=table[b];  //ÃëμÄê®Î»μĶÎÑ¡
        PIN1=0x0d;                        //ÃëμÄê®Î»μÄλѡ
        Delayms(5);
       
        PIN0=table[c];  //·ÖμĸöλμĶÎÑ¡
        PIN1=0x0b;                         //·ÖμİùλμÄλѡ
        Delayms(5);
               
        PIN0=table[d];                //·ÖμÄê®Î»μĶÎÑ¡
        PIN1=0x07;                                //·ÖμÄǧλμÄλѡ
        Delayms(5);               
               
}

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

使用道具 舉報

沙發(fā)
ID:210139 發(fā)表于 2018-12-27 09:14 | 只看該作者
void InitTimer0() //?¨ê±?÷3?ê??ˉoˉêy
{
        
        TMOD=0x01; //?????¨ê±?÷0μ?1¤×÷·?ê?1
        TH0=(65536-45872)/256;  //×°3??죨?¨ê±50ms£?,?§??11.0592MHz
        TL0=(65536-45872)%256;
        EA=1;                //′ò?a×ü?D??
        ET0=1;        //′ò?a?¨ê±?÷?D??
        TR0=0;        //?è2?òa???ˉ?¨ê±?÷
        
}
改為void InitTimer0() interrupt 1     //沒有“interrupt ”
{        
    //    TMOD=0x01; //定時器的方式寫在主函數(shù)里面,這里可以不用再寫
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
   //     EA=1;               //總中斷也是寫在主函數(shù)里面
    //   ET0=1;        //′這些都應(yīng)該寫在主函數(shù)里面?
     //  TR0=0;        //寫在主函數(shù)里面
        
}
回復(fù)

使用道具 舉報

板凳
ID:210139 發(fā)表于 2018-12-27 09:17 | 只看該作者
void InitTimer0() //?¨ê±?÷3?ê??ˉoˉêy
{
        
        TMOD=0x01; //?????¨ê±?÷0μ?1¤×÷·?ê?1
        TH0=(65536-45872)/256;  //×°3??죨?¨ê±50ms£?,?§??11.0592MHz
        TL0=(65536-45872)%256;
        EA=1;                //′ò?a×ü?D??
        ET0=1;        //′ò?a?¨ê±?÷?D??
        TR0=0;        //?è2?òa???ˉ?¨ê±?÷
        
}
改為
void InitTimer0() interrupt 1  //“interrupt 1”是寫中斷函數(shù)必不可少的
{
        
        TMOD=0x01; //   方式應(yīng)該寫在主函數(shù)里面
        TH0=(65536-45872)/256;  //×°3??죨?¨ê±50ms£?,?§??11.0592MHz
        TL0=(65536-45872)%256;
        EA=1;                //′總中斷也應(yīng)該寫在主函數(shù)里?
        ET0=1;        //寫在主函數(shù)里面
        TR0=0;        //?寫在主函數(shù)里面
        
}
回復(fù)

使用道具 舉報

地板
ID:210139 發(fā)表于 2018-12-27 09:20 | 只看該作者
具體是什么情況
回復(fù)

使用道具 舉報

5#
ID:393699 發(fā)表于 2018-12-27 11:01 | 只看該作者
大哥,能轉(zhuǎn)換下編碼再發(fā)上來嗎?注釋全都亂碼,這樣看很辛苦……
然后描述下具體現(xiàn)象?
回復(fù)

使用道具 舉報

6#
ID:357520 發(fā)表于 2018-12-27 11:41 | 只看該作者
if(reset==0)  
                {
                Delayms(20);      
                if(reset==0)         
                {
                        num=0;               
                        cnt=0;               
                    while(!reset);               
                }
既然是重設(shè)就應(yīng)該將定時器關(guān)閉

if(start==0)   
        Delayms(20);
        {
                if(start==0)  
                {
                        TR0=!TR0;   
                        while(!start);
                }
        }
當(dāng)在到這里時候本來定時器就開著,按一下開始鍵又給定時器關(guān)了

之前我也寫過秒表的,其中延時函數(shù)也特別重要,延時不對也會造成各種困擾
回復(fù)

使用道具 舉報

7#
ID:449525 發(fā)表于 2018-12-27 12:44 | 只看該作者
把keil設(shè)置下,百度網(wǎng)上有,簡體中文的在發(fā)上來給大家解決
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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