音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網
技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe

AT89S52,這個程序是不是錯誤百出啊?

作者:jerry_21cn 欄目:單片機
AT89S52,這個程序是不是錯誤百出?
我要在四位數碼管上顯示分鐘和秒鐘,高手們幫我看看,這個程序不長啊!
#include <reg52.h>
sbit LED=P2^5;
sbit BELL=P2^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
code  const unsigned CHAR disp[]=
    {
    0x3F,0x06,0x5b,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
    0x6F,0x77,0x7C,0x39,0X5E,0x79,0x71,0x76,0x74,
    0x38,0x73,0x6E,0x3E,0x1E,0x78,0,0x40,
    };
bit sec_flag;
unsigned CHAR min,sec;
unsigned CHAR dis[4];
unsigned int time_down;

void init()
{
    TMOD=0x01;
    TH0=0xff;
    TL0=0x9b;
    EA=1;
    ET0=1;
    TR0=1;
}

void Timer0_ISR(void) interrupt 1 using 3    
{    
    if(!time_down)                //過去一秒鐘
    {    
        time_down=9999;
        sec_flag=1;              //過去一秒鐘,取出秒信號
    }
    else time_down--;
}


void dlms(unsigned int x)
{
    unsigned int y;
    for(y=x;y>0;y--);
}


void clock()
{
    if(sec_flag)
    {
        sec_flag=0;
        LED=!LED;
        if(sec==59&&min==59)
        {
            LED=0;
            BELL=0;
            min=0;
            sec=0;
        }
        else if(sec==59)
        {
            sec=0;
            LED=0;
            BELL=0;
            dlms(6000);
            min++;
        }
        else sec++;
    }
}


void DISPLAY()
{
    dis[0]=min/10;
    dis[1]=min%10;
    dis[2]=sec/10;
    dis[3]=sec%10;
    TR0=0;
    if(sec_flag)
    {
        if(min/10==5&&min%10==9&&sec/10==5&&sec%10==9)        //分、秒都到59時,都顯示0
        {
            P2_0=P2_1=P2_2=P2_3=1;
            P0=disp[0];    
            dlms(6000);
        }
        else if(min%10==9&&sec/10==5&&sec%10==9)                //分鐘的個位到9,秒鐘到59時
        {
            P2_0=1;
            P2_1=P2_2=P2_3=0;
            P0=disp[dis[0]];                                //分鐘的十位即第一塊顯示
            P2_0=0;
            P2_1=P2_2=P2_3=1;
            P0=disp[0];
            dlms(6000);
        }
        else if(sec/10==5&&sec%10==9)                        //秒鐘到59時
        {
            P2_1=1;
            P2_0=P2_2=P2_3=0;
            P0=disp[dis[1]];                                //分鐘的個位即第二塊顯示
            P2_2=P2_3=1;
            P2_1=P2_0=0;
            P0=disp[0];                                        //第一塊不變,其余兩塊顯示0
            dlms(6000);
        }
        else if(sec%10==9)                                    //秒鐘個位到9時
        {
            P2_2=1;
            P2_0=P2_1=P2_3=0;
            P0=disp[dis[2]];                                //秒鐘的十位顯示
            P2_3=1;
            P2_1=P2_2=P2_0=0;                        
            P0=disp[0];                          &
2樓: >>參與討論
chaly
幫你看過了
幫你看過了,編譯的話沒有出錯的呀


3樓: >>參與討論
chaly
原理圖畫得不完整
原理圖少好多東西的,好多標簽都沒有對應起來

4樓: >>參與討論
jerry_21cn
原理圖沒有錯啊,主要是程序DISPLAY部分我覺得有錯啊
我試其它的程序可以運行啊,主要是這個程序,我覺得肯定有錯啊,特別是顯示部分DISPLAY()

5樓: >>參與討論
shazi2666
是呀!電路圖不全的!!!
 
6樓: >>參與討論
jerry_21cn
怎么不全啊?不用管電路圖細節(jié)啊!
 
7樓: >>參與討論
jerry_21cn
求救啊!顯示不正確!
燒進去以后,四位數碼管都顯示“8.”(即abcdefgdp 全部都顯示)不變。哪里錯了啊???高手們,幫幫忙啊!

參與討論
昵稱:
討論內容:
 
 
相關帖子
有誰知道串行接口的RAM芯片???????
急求:程序編不來,大哥們幫幫忙
問一個小問題,請解答,謝謝!
新手求教!還是P0口。
哪位幫忙畫個流程圖
免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號