打印
[51单片机]

请各位前辈帮忙!

[复制链接]
1427|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
鲫鱼汤|  楼主 | 2014-7-4 09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int

sbit relay=P1^0;        //继电器由P1.0控制

sbit add=P1^1;                 //申明按键
sbit sub=P1^2;
sbit start=P1^3;


sbit LED_shi=P2^1;        //申明数码管位选
sbit LED_ge=P2^2;

uchar code table[]={ 0x3f,0x06,0x5b,0x4f,
                     0x66,0x6d,0x7d,0x07,
                     0x7f,0x6f,0x77,0x7c,
                     0x39,0x5e,0x79,0x71 };//数码管共阴极编码
                                         
uchar n,num;//
void delay_ms(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void init()
{
        num=5;
        TMOD=0x01;
        TH0=(65536-5000)/256;
        TL0=(65536-5000)%256;
        EA=1;
        ET0=1;
}
void display(uchar number)
{
        uchar ge,shi;
        shi=number/10;
        ge=number%10;
   
        LED_shi=0;
        P0=table[shi];
        delay_ms(5);
        LED_shi=1;

        LED_ge=0;
        P0=table[ge];
        delay_ms(5);
        LED_ge=1;

}
void keyscan()
{
        if(add==1)
        {
                delay_ms(10);
                if(add==1)
                        {
                                num++;
                                if(num==60)
                                        num=0;
                                while(!add);
                         }
        }
        if(sub==1)
        {
                delay_ms(10);
                if(sub==1)
                        {
                                num--;
                                if(num==0)
                                        num=59;
                                while(!sub);
                         }
        }
        if(start==1)
        {
                delay_ms(10);
                if(start==1)
                        {
                                while(!start);
                                TR0=~TR0;
                         }
        }
}
void main()
{       
        init();
        while(1)
        {
                 keyscan();
                display(num);
                if(n==20num)
                {
                        n=0;
                        relay=0;
                        delay_ms(50);
                        relay=1;
                }
        }       
}

void time0() interrupt 1
{
        TH0=(65536-5000)/256;
        TL0=(65536-5000)%256;
        n++;               
}
各位前辈,能不能帮我看下程序出了什么问题,编译完总是说有语法错误,在主程序的的if语句那块,已经标成红色了,我是想让数码管显示一个两位数,表示设定的时间是多少秒,可以由按键加减,等到时间到了就让继电器短暂吸合,定时器是50ms中断一次,谢谢各位了!       

相关帖子

沙发
鲫鱼汤|  楼主 | 2014-7-4 09:18 | 只看该作者
才学单片机不久,在线等各位老师的解答,谢谢了!

使用特权

评论回复
板凳
原野之狼| | 2014-7-4 09:19 | 只看该作者
20num?   20*num?

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
鲫鱼汤 + 1 很给力!
地板
鲫鱼汤|  楼主 | 2014-7-4 09:22 | 只看该作者
原野之狼 发表于 2014-7-4 09:19
20num?   20*num?

我照着前辈说的改了下,变成20*num之后就没错误了,真是太感谢了!不过为什么20num就不行呢

使用特权

评论回复
5
原野之狼| | 2014-7-4 09:24 | 只看该作者
鲫鱼汤 发表于 2014-7-4 09:22
我照着前辈说的改了下,变成20*num之后就没错误了,真是太感谢了!不过为什么20num就不行呢 ...

没有为什么   语法就是这样

使用特权

评论回复
6
弥勒开怀笑| | 2014-7-4 09:31 | 只看该作者

使用特权

评论回复
7
鲫鱼汤|  楼主 | 2014-7-4 09:33 | 只看该作者
弥勒开怀笑 发表于 2014-7-4 09:31

怎么结贴呀

使用特权

评论回复
8
弥勒开怀笑| | 2014-7-4 09:35 | 只看该作者
我也不知道

使用特权

评论回复
9
鲫鱼汤|  楼主 | 2014-7-4 09:37 | 只看该作者
原野之狼 发表于 2014-7-4 09:24
没有为什么   语法就是这样

前辈怎么结贴

使用特权

评论回复
10
原野之狼| | 2014-7-4 09:40 | 只看该作者
鲫鱼汤 发表于 2014-7-4 09:37
前辈怎么结贴

左侧导航栏   我的未结主题

使用特权

评论回复
11
很忙| | 2014-7-4 11:51 | 只看该作者

使用特权

评论回复
12
lvyunhua| | 2014-7-5 19:34 | 只看该作者
:)

使用特权

评论回复
13
xg3469| | 2014-7-5 20:41 | 只看该作者
,同意12楼。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

12

帖子

0

粉丝