黎穆晨曦 2022-12-03 10:49 采纳率: 80%
浏览 16
已结题

网上查资料做了个定时闹钟的pretous,但是功能无法实现,哪位大神能帮我调试一下。

问题遇到的现象和发生背景

网上查资料做了个定时闹钟的pretous,但是功能无法实现,哪位大神能帮我调试一下。
仿真图和keil程序文件上传到了蓝奏云
(https://wwqv.lanzout.com/ik0yO0hm8fud)

keil程序如下,编译的时候有一个警告,网上搜了一下,说好像会有调用冲突(调试的时候最好把程序的功能也注释一下)
```c
#include<reg52.h>

#define uchar unsigned char 
#define uint unsigned int 
uchar code shuzi[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20};
uchar kongbai=0x20;
sbit rs=P2^5;
sbit rw=P2^6;
sbit en=P2^7;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit led_miao=P1^7;
sbit buzz=P2^3;
sbit lamp=P2^4;
uchar shi1=0x85,shi2=0x86;
uchar fen1=0x88,fen2=0x89;
uchar ns1=0xcb,ns2=0xcc;
uchar nf1=0xce,nf2=0xcf;
uchar aaak1=1,aaak2=1,aaak3=1,aaak4=1, clockon, ringoff;
uchar b,c,d,e,ch,hou=10;
uchar bn,cn,dn,chn,houn=10;
uchar tt0, tt1, tt2, tt3, tt4, change, ho=10;
int tt5, a, an;
uchar pt;
void time0();
//-----时钟说明-----//
//     ab:cd        //
//-----闹钟说明-----//
//    an bn:cn dn   //
//------------------//


void delay (uint z)    //延时程序
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110; y>0;y--);
}


void wc(uchar com)
{
    rs=0;
    P0=com;
    delay (5) ;
    en=1;
    delay(5);
    en=0;
}


void wd(uchar date)
{
    rs=1;
    P0=date;
    delay(5);
    en=1;
    delay(5);
    en=0;
}


void init()
{
    en=0;
    rs=0;
    rw=0;//写数据或指令时,的口必须为低电平
    wc(0x38);
    wc(0x0c);
    wc(0x06);//写一个字符后地址指针加
    wc(0x01);
}


void showtime(uchar fen_1,uchar fen_2,uchar f1,uchar f2)
{
    wc(fen_1);delay(1);
    wd(shuzi[f1]);delay(1);
    wc(fen_2);delay(1);
    wd(shuzi[f2]);delay(1);
}


void showmao(uchar kkkkk)
{
    if(kkkkk==0)
    {wc(0x87);delay(1);wd(0x3a);delay(1);}
    else if(kkkkk==1)
    {wc(0xcd);delay(1);wd(0x3a);delay(1);}
    else
    {wc(0xcd);delay(1);wd(kongbai);delay(1);}
}


void key()
{
    if(k1==0)//1 start
    {
        delay(100);
        if(k1==0)
        {
            wc(0x80+0x40);delay(1);
            wd(0x59);delay(1);
            delay(100);
            while(1)
            {
                if(k1==0) //1-1 start
                {
                    delay(100);
                    if(k1==0)
                    {
                        b++;
                        if(b>=hou)
                        {
                        ch++;
                        if(ch>=2)
                            hou=4;
                        else
                            hou=10;
                        if(a>=2&&b>=hou)
                        {
                            a=(-1);
                            b=0;
                            ch=0;
                            hou=10;
                        }
                        a++;
                        b=0;
                    }
                    showtime(shi1,shi2,a,b);
                    }
                }//1-1 end


                if(k2==0)//1-2 start 
                {
                    delay (100);
                    if(k2==0)
                    {
                        d++;
                        if(d>=10)
                        {
                            d=0;
                            c++;
                            if(c>=6)
                            c=0;
                        }
                        showtime (fen1, fen2,c, d);
                    }
                }//1-2 end


                if(k3==0)//1-3 start
                {
                    wc (0x80+0x40);delay(1);
                    wd(kongbai);delay(1) ; 
                    tt5=a;tt4=b;tt3=c;tt2=d;
                    EA=1;ET0=1;TR0=1;
                    break;
                }//1-3 end


                if(k4==0)//1-4 start
                {
                        //待定
                }//1-4 end
            }
        }
    }//1 end 


    if(k2==0)//2 start
    {
        delay (100) ;
        if(k2==0)
        {
            if(aaak1==1)
            {
            aaak1++;
            wc(0x80+0x41);delay(1);wd(0x59);delay(1);
            showtime (ns1,ns2,an,bn) ;
            showmao(1) ;
            showtime (nf1,nf2,cn,dn);
            }
            else
            {
            wc(0x80+0x41);delay(1);wd(kongbai);delay(1);
            showtime(ns1,ns2,10,10);
            showtime(nf1,nf2,10,10);
            showmao(2) ;
            aaak1=1;
            }
        }
    }//2 end


    if(k3==0)//3 start
    {
        delay (100);
        if(k3==0)
        {
            showtime (ns1,ns2,an,bn) ;
            showmao(1) ;
            showtime(nf1,nf2,cn,dn);
            wc(0x80+0x42);delay(1);wd(0x59);delay(1);
            delay (100) ;
            while(1)
            {

                if(k1==0)//3-1 start
                {
                    delay(100);
                    if(k1==0)
                    {
                    bn++;
                    if (bn>=houn)
                    {
                        chn++;
                        if(chn>=2)
                            houn=4;
                        else
                            houn=10;
                        if(an>=2&&bn>=houn)
                        {
                            an=(-1);
                            bn=0;
                            chn=0;
                             houn=10;
                        }
                        an++;
                        bn=0;
                    }
                    showtime(ns1, ns2, an, bn);
                    }
                }//3-1 end


                if(k2==0)//3-2 start
                {
                    delay (100);
                    if(k2==0)
                    {
                    dn++;
                    if(dn>=10)
                    {
                        dn=0;
                        cn++;
                        if(cn>6)
                            cn=0;
                    }
                    showtime(nf1, nf2, cn, dn);
                    }
                }//3-2 end 


                if(k3==0)//3-3 start
                {
                    wc(0x80+0x42);delay(1);wd(kongbai);delay(1);
                    showtime(ns1, ns2, 10, 10);
                    showtime(nf1, nf2, 10, 10);
                    showmao(2) ; 
                    break;
                }//3-3 end


                if(k4==0)//3-4start
                {
                    delay(100);
                    if(k4==0)
                    {
                        if(aaak3==1) 
                        {                    
                            aaak3++;ringoff=1;
                            wc(0x80+0x43);delay(1);wd(0x52);delay(1);
                        } 
                        else 
                        {    
                            aaak3=1;ringoff=0;
                            wc(0x80+0x43);delay(1);wd(kongbai) ;delay(1);
                        }
                    }
                }//3-4 end
            }
        }
    }//3 end


    if(k4==0)//4 start
    {
        delay (100) ;
        if(k4==0)
        {    
            if(aaak4==1)
            {
                aaak4++;
                lamp=1;
                clockon=1;
                wc(0x80+0x4a);delay(1);wd(0xef);delay(1);
                buzz=0;delay(50);buzz=1;delay(50);
                buzz=0;delay(50);buzz=1;delay(50) ;
                buzz=0;delay(50);buzz=1;
            }
            else
            {
                aaak4=1;
                lamp=0;
                clockon=0; 
                wc(0x80+0x4a);delay(1);wd(kongbai);delay(1);
                buzz=0;delay(50);buzz=1;
            }
        }
    }//4 end
}


void main()
{
    TMOD = 0x01;
    init();
    showtime(shi1,shi2,0,0);
    showtime(fen1,fen2,0,0);
    showmao(0); 
    showtime(ns1,ns2,10,10);
    showtime(nf1,nf2,10,10);
    showmao(2);
    time0();
    lamp=0;
    while(1)
    {
        key();
    }
}

void time0()
{
    TH0=(65536-50000)/256;    //50MS
    TL0=(65536-50000)%256;
}



void t0() interrupt 1
{
    time0();
    tt0++;


    if(k1==0)
    {
        delay(5);//硬件实现时,延时-10
        if(k1==0)
        {
            a=tt5;b=tt4;c=tt3;d=tt2;
            EA=0;ET0=0;TR0=0;
        }
    }


    if(k2==0)
    {
        delay (5) ;//硬件实施时,延时-10
        if(k2==0)
        { 
            if (aaak1==1)
            {
                aaak1++;
                wc(0x80+0x41);delay(1);wd(0x59);delay(1);
                showtime(ns1,ns2,an,bn) ;
                showmao(1);
                showtime(nf1,nf2,cn,dn) ;
            }
            else
            {
                wc(0x80+0x41);delay(1);wd(kongbai) ;delay(1);
                showtime(ns1,ns2,10,10);
                showtime(nf1,nf2,10,10);
                showmao(2) ;
                aaak1=1;
            }
        }
    }


    if(k4==0)
    {
        delay(5) ;
        if(k4==0)
        {
            if(aaak4==1)
            {
                aaak4++; 
                lamp=1;
                clockon=1;
                wc(0x80+0x4a);delay(1);wd(0xef);delay(1);
                buzz=0;delay(50);buzz=1;delay(50);
                buzz=0;delay(50);buzz=1;delay(50);
                buzz=0;delay(50);buzz=1;
            }
            else
            {
                aaak4=1;
                lamp=0;
                clockon=0; 
                wc(0x80+0x4a);delay(1);wd(kongbai);delay(1);
                buzz=0;delay(50);buzz=1;
            }
        }
    }


    if(tt0>=1)//20
    {
        tt0=0;
        led_miao=~led_miao;
        tt1++;
        if(tt1>=1)//判断是否 够秒
        {
            tt2++;
            if(tt2>=10) //判断分钟的个位是否满
            {
                tt2=0;
                tt3++;
                if(tt3>=6)//判断分钟的十位是否满
                {
                    tt3=0;
                    tt4++;
                    if(tt4>=hou)//判断小时的个位是否满或
                    {
                        ch++;
                        if(ch>=2)//当到了时以上时,判断条件变为
                        {
                            hou=4;
                        }
                        else
                        {
                            hou=10;
                        }

                        if(tt5>=2&&tt4>=hou) //当满小时的时候,全部清零,从头算起
                        {
                            tt5=(-1);
                            tt4=0;
                            ch=0;
                            hou=10;
                        }
                        tt5++;
                        tt4=0;
                        showtime(shi1, shi2, tt5, tt4) ;//小时十位加一
                    }
                    showtime(shi1, shi2, tt5, tt4);//小时个位加一
                }
                showtime(fen1, fen2, tt3, tt2);//分钟十位加一
            }
            showtime(fen1, fen2, tt3, tt2) ;//分钟个位加一-
            tt1=0;
        }
    }


    if(clockon==1&&tt5==an&&tt4==bn&&tt3==cn&&tt2==dn&&pt<=60)//ring for 3s
    {
        buzz=0;e=1; lamp=0;pt++;
    }
        if((k4==0&&e==1)|pt>=60)//if ring more than 3s,it will stop
        {
            buzz=1;e=0;clockon=0;wc(0x80+0x4a);delay(1);wd(kongbai);delay(1);pt=0;
        }
}










```

  • 写回答

1条回答 默认 最新

  • smobee 2022-12-03 11:24
    关注
    1. 最好只发布关键代码
    2. 这些站外文件,我们程序员不敢下载,怕有病毒,植入程序
    3. 谁也没那么多时间,专门去其他地方下载完,还帮你调试
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月3日
  • 修改了问题 12月3日
  • 修改了问题 12月3日
  • 赞助了问题酬金15元 12月3日
  • 展开全部

悬赏问题

  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。