找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1745|回复: 7
打印 上一主题 下一主题
收起左侧

新手小白求大佬们帮助一下,为啥这个单片机程序报错了?

[复制链接]
跳转到指定楼层
楼主
/************延时i毫秒函数****************/
void DelayMS(uint ms)
{
        uchar i;
        while(ms--)
        {
                for(i=0;i<120;i++);
        }
}
/************向DS1302写入1字节数据*********/
sj 22.c(23): error C141: syntax error near 'ms', expected ')'
sj 22.c(26): error C202: 'ms': undefined identifier

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:748096 发表于 2020-6-5 06:55 | 只看该作者
uint 宏定义了吗?这个不能直接拿来用
回复

使用道具 举报

板凳
ID:164602 发表于 2020-6-5 07:56 | 只看该作者
141号错误,说明有单词错误,就是“ms”
202号错误,说明有变量没有定义,就是“ms”
总结一下,就是变量ms没有定义申明。看起来是两个错误,实质就是一个错误。因为程序不全,我也不知道最好在哪里加上定义。
回复

使用道具 举报

地板
ID:592807 发表于 2020-6-5 08:42 | 只看该作者
uint 没有声明  在 文件头加上#define uint uint32_t
回复

使用道具 举报

5#
ID:267719 发表于 2020-6-5 08:45 | 只看该作者
你试试 void DelayMS(unsigned int ms)
回复

使用道具 举报

6#
ID:282850 发表于 2020-6-5 09:32 | 只看该作者
void DelayMS(unsigned int ms)
{
        unsigned char i;
        while(ms--)
        {
                for(i=0;i<120;i++);
        }
}
拷贝,改了一个uint 、uchar,很正常的程序。

Total number of errors: 0
Total number of warnings: 0
回复

使用道具 举报

7#
ID:282850 发表于 2020-6-5 11:30 | 只看该作者

回复帖子时,还没有其它回复,现重新看了一下,有人也说出unsigned int这种解决,同感。
回复前也怀疑问题会出在#define uint ....,但看不到程序

对uchar、uint说几点:
1、我本人虽不反感,但不用uchar、uint,不用这个的#define
2、unsigned char 在IDE环境下是蓝色关键字显示,看着更舒服,不易出错
3、读unsigned char(蓝色)比读uchar还方便、快
4、别人的程序到我手上,uchar、u8、uint等立即替换成unsigned char,然后才改其它。
5、输出uint 比输入unsigned int方便了多少,节约了0.n秒,我认为没方便、没节约多少时间。后者一但承蓝色就OK,不用在细看,前者不一定,unit、iunt、uitn只有编译时才知。
祝uchar、uint好运,祝新手们好运!
回复

使用道具 举报

8#
ID:764088 发表于 2020-6-5 15:03 | 只看该作者
ms 是函数外部定义的引入参数,函数内部不应一直调用 外部引入的参数,除非 这个 ms 是 外部定义为static的。
这样改:
void DelayMS(unsigned int ms)
{
        unsigned char i;
       unsigned int delayms =ms;
        while(delayms --)
        {
                for(i=0;i<120;i++);
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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