找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

求学霸帮忙修改 (程序有问题)

查看数: 2429 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-6-14 18:13

正文摘要:

#include<reg51.h>#define uchar unsigned charuchar duanma [10]={0xc0,0xf9,0xa4,0xb0,0x99,                  0x92,0x82,0xf8,0x80,0x90};ucha ...

回复

ID:164602 发表于 2018-6-16 07:17
zhanghming 发表于 2018-6-15 12:34
您能用51的讲解   52不熟    谢谢您

就这个程序而言,是一样的。没有一点特殊的地方。
ID:351226 发表于 2018-6-15 12:34
您能用51的讲解   52不熟    谢谢您
ID:351226 发表于 2018-6-15 12:19
那怎样改 开始时是暂停  并且初始值是00:00
ID:164602 发表于 2018-6-15 09:33
你的程序,很有问题!
第一:开始显示不可能为零,因为你一开始就计时了。
第二:由于有定时器中断,所以,你的按键几乎是没有用的——按键没反应。
给你一个我的例子:
按键是用外部中断,k1为外部中断0,按第一次,开始计时,按第二次,显示最终计时,按第三次,清零。k2是外部中断1,按奇次,如1、3、5、7等,显示当前的计时,但计时继续,按偶数次,如2、4、6、8等,显示继续计时。
与你的作业要求有点不同,但秒表功能非常完整。你可能根据自己的要求修改。
看别人的程序,也是学习过程。
我的程序适用电路如图所示。




#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
unsigned char DisplayData[4];
unsigned char MMMM=0,MM=0,TTTT=0,TT=0,i=0;
bit A=0;  

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void waibuzhongduan()
{
        EA=1;
        EX0=1;        
        IT0=1;
        EX1=1;        
        IT1=1;
}

void dingshiqizhongduan()
{
        TMOD=0X01;
        TH0=0xD8;
        TL0=0xF0;
        EA=1;
        TR0=0;
        ET0=1;
        PT0=1;//为1时,定时器0中断为高级优先级,为0时,为低级优先级。

}

void delay10ms(unsigned int c)
{
        unsigned char a,b;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}
void Display()
{
        unsigned char i,j;
        for(i=0;i<4;i++)
        {
                switch(i)
                {
                        case (0):LSA=0;LSB=0;LSC=0;break;
                        case (1):LSA=1;LSB=0;LSC=0;break;
                        case (2):LSA=0;LSB=1;LSC=0;break;
                        case (3):LSA=1;LSB=1;LSC=0;break;
                }
                P0=DisplayData;
        j=10;
        while(j--);
        P0=0x00;        
        }
}
void XS()
{
        if(A==0)
        {
                DisplayData[3]=smgduan[TT/10];
                DisplayData[2]=smgduan[TT%10]+0x80;
                DisplayData[1]=smgduan[MM/10];
                DisplayData[0]=smgduan[MM%10];
        }
        else
        {
                DisplayData[3]=smgduan[TTTT/10];
                DisplayData[2]=smgduan[TTTT%10]+0x80;
                DisplayData[1]=smgduan[MMMM/10];
                DisplayData[0]=smgduan[MMMM%10];        
        }
}

void main()
{
        waibuzhongduan();
        dingshiqizhongduan();
        while(1)
        {
                XS();
                Display();
        }
}
void Int0() interrupt 0//k3
{

                delay10ms(100);
                A=0;
                switch(i)
                {
                        case 0:TR0=1;break;//按第一次计时
                        case 1:TR0=0;break;//按第二次停止计时
                        case 2:TT=0,MM=0;break;//按第三次清零
                }
                i++;
                if(i>2)
                {
                        i=0;
                }
                delay10ms(10);
                IE0=0;//外部发生中断时其值为1               
}

void Time0() interrupt 1
{

        TH0=0xD8;
        TL0=0xF0;
        MM++;
        if(MM==100)
        {
                MM=0;
                TT++;
                                if (TT==100)
                                {
                                        TT=0;
                                }
        }
        TF0=0;//为1时表示定时器T0计数溢出
}
void Int1() interrupt 2//k4
{

                delay10ms(100);
                TTTT=TT;
                MMMM=MM;
                A=~A;
                delay10ms(10);
                TF1=0;//外部发生中断时其值为1
}

评分

参与人数 1黑币 +8 收起 理由
songfengyi + 8 回帖助人的奖励!

查看全部评分

ID:330198 发表于 2018-6-15 08:49

如图改两处就可以了,逻辑问题多实验就好了

评分

参与人数 1黑币 +8 收起 理由
songfengyi + 8 回帖助人的奖励!

查看全部评分

ID:351226 发表于 2018-6-14 22:23
有问题
显示结果  初始值不是00:00

评分

参与人数 1黑币 +8 收起 理由
songfengyi + 8

查看全部评分

ID:351226 发表于 2018-6-14 22:21
有问题
显示结果  初始值不是00:00

ID:342822 发表于 2018-6-14 19:02
没问题~~~~~~~~~~~~~~~~

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表