打印

语法错误

[复制链接]
276|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangpe|  楼主 | 2017-5-25 23:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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中断一次,谢谢各位了!
沙发
langgq| | 2017-5-25 23:41 | 只看该作者

20num?   20*num?

使用特权

评论回复
板凳
wangpe|  楼主 | 2017-5-25 23:43 | 只看该作者

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

使用特权

评论回复
地板
wangzsa| | 2017-5-25 23:45 | 只看该作者
没有为什么   语法就是这样

使用特权

评论回复
5
wangpe|  楼主 | 2017-5-25 23:48 | 只看该作者
搞定了,呵呵,犯了低级错误……结贴啦,多谢各位

使用特权

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

本版积分规则

938

主题

9837

帖子

2

粉丝