找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

写的单片机延时程序,编译之后提示我语法错误,有没有大佬帮忙解答下

查看数: 2830 | 评论数: 12 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-11 14:34

正文摘要:

单片机程序如下,用keil编译之后就说语法错误,可是本人实在看不出来为什么,希望大佬帮我解答,谢谢! #include<reg52.h> sbit led1=P1^0; sbit wei=P2^7; sbit duan=P2^6; #define uint unsigned int; # ...

回复

ID:890771 发表于 2021-3-11 17:44
man1234567 发表于 2021-3-11 17:26
#define uint unsigned int;
#define uchar unsigned char;
这两句的最后都不可以有分号,去掉后编译正常 ...

哇,我太傻了,谢谢大佬,解决了,我注意力一直在延时程序上,没看到这两个定义后面也加了分号,但是我如果把延时去掉,带不带分号都可以运行,而且在板子上运行也是没问题的,这是什么原理?
ID:584814 发表于 2021-3-11 17:26
#define uint unsigned int;
#define uchar unsigned char;
这两句的最后都不可以有分号,去掉后编译正常,其他都是忽悠
ID:890771 发表于 2021-3-11 17:09
lovezjf234 发表于 2021-3-11 16:54
void delayms(uint); 里面少了一个x

不行改了还是出错,我给你上图片
ID:739545 发表于 2021-3-11 16:54
void delayms(uint); 里面少了一个x
ID:739545 发表于 2021-3-11 16:53
哪行,提示的错误内容是什么,提问要有针对性,你这个太难让人回答了
ID:890771 发表于 2021-3-11 16:53
村标露娜 发表于 2021-3-11 16:08
个人认为你可以把定时器分开写,可以创个函数写,看的轻松点

#include<reg52.h>
#define uint unsigned int;
#define uchar unsigned char;
sbit led1=P1^0;
sbit wei=P2^7;
sbit duan=P2^6;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num,n;
void delayms(uint);
void openZD();
void main()
{
        openZD();//开定时器1中断
        while(1)
        {
                wei=1;
                P0=0xfe;
                wei=0;
                P0=0x00;               

                duan=1;
                P0=table[n/10];//让第一个数码管显示十位
                duan=0;
                P0=0xff;
                delayms(1);

                wei=1;
                P0=0xfd;
                wei=0;
                P0=0x00;

                duan=1;
                P0=table[n%10];//让第二个数码管显示个位
                duan=0;
                P0=0xff;
                delayms(1);

        }
}
void T1_time() interrupt 3//定时器1中断
{
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        num++;
        if(num==20)
        {       
                num=0;       
                n++;
                if(n==59)
                        n=0;
        }
}
void openZD()//打开中断子程序
{
        TMOD=0x10;
        EA=1;
        ET1=1;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        TR1=1;
}
void delayms(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}
ID:890771 发表于 2021-3-11 16:52
本帖最后由 小周单片机 于 2021-3-11 17:13 编辑

改了一下,这个程序的具体功能是让单片机数码管做59s循环计时
ID:890771 发表于 2021-3-11 16:47
#include<reg52.h>
#define uint unsigned int;
#define uchar unsigned char;
sbit led1=P1^0;
sbit wei=P2^7;
sbit duan=P2^6;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num,n;
void delayms(uint);
void openZD();
void main()
{
        openZD();//开定时器1中断
        while(1)
        {
                wei=1;
                P0=0xfe;
                wei=0;
                P0=0x00;               

                duan=1;
                P0=table[n/10];//让第一个数码管显示十位
                duan=0;
                P0=0xff;
                delayms(1);

                wei=1;
                P0=0xfd;
                wei=0;
                P0=0x00;

                duan=1;
                P0=table[n%10];//让第二个数码管显示个位
                duan=0;
                P0=0xff;
                delayms(1);

        }
}
void T1_time() interrupt 3//定时器1中断
{
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        num++;
        if(num==20)
        {       
                num=0;       
                n++;
                if(n==59)
                        n=0;
        }
}
void openZD()//打开中断子程序
{
        TMOD=0x10;
        EA=1;
        ET1=1;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        TR1=1;
}
void delayms(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}
这是简化后的程序,我把led闪烁删除了,改成了定时器1中断,加了注释,加了中断子程序,但还是提示语法错误。
ID:890771 发表于 2021-3-11 16:32
村标露娜 发表于 2021-3-11 16:08
个人认为你可以把定时器分开写,可以创个函数写,看的轻松点

好的,大佬,我等会改下再上传,但是延时函数最后还是会出错,说我语法错误,但是我也看不出来哪里出错了。
ID:889832 发表于 2021-3-11 16:08
个人认为你可以把定时器分开写,可以创个函数写,看的轻松点

评分

参与人数 1黑币 +20 收起 理由
51hei跑堂 + 20 回帖助人的奖励!

查看全部评分

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

Powered by 单片机教程网

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