标题: 单片机模块化编程错误 C141,求纠正 [打印本页]

作者: DavidTesla    时间: 2018-1-16 23:28
标题: 单片机模块化编程错误 C141,求纠正
DS12C887.h文件
  1. //DS12C887.h
  2. #ifndef _DS12C887_H_
  3. #define _DS12C887_H_

  4. extern void C887_write(uint8 add,uint8 datum); //错误在这行
  5. extern uint8 C887_read(uint8 add); //错误在这行
  6. extern void C887_init();
  7. extern void GetTime();

  8. #endif
复制代码

DS12C887.c文件:
  1. //DS12C887.c
  2. #include"STC89C52RC.h"
  3. #include"MacroAndConst.h"
  4. #include"DS12C887.h"

  5. void C887_write(uint8 add,uint8 datum);
  6. uint8 C887_read(uint8 add);
  7. void C887_init();
  8. void GetTime();

  9. void C887_write(uint8 add,uint8 datum)
  10. {
  11.         C887CS=0;
  12.         C887AS=1;
  13.         C887DS=1;
  14.         C887RW=1;
  15.         C887BUS=add;
  16.         C887AS=0;
  17.         C887RW=0;
  18.         C887BUS=datum;
  19.         C887RW=1;
  20.         C887AS=1;
  21.         C887CS=1;
  22.         C887BUS=0xFF;
  23. }

  24. uint8 C887_read(uint8 add)
  25. {
  26.         uint8 datum;
  27.         C887AS=1;
  28.         C887DS=1;
  29.         C887RW=1;
  30.         C887CS=0;
  31.         C887BUS=add;
  32.         C887AS=0;
  33.         C887DS=0;
  34.         C887BUS=0xff;
  35.         datum=C887BUS;
  36.         C887DS=1;
  37.         C887AS=1;
  38.         C887CS=1;
  39.         C887BUS=0xFF;
  40.         return datum;
  41. }

  42. void C887_init()
  43. {
  44.         C887_write(0x0A,0x20);                //打开振荡器
  45.         C887_write(0x0B,0x22);                //启动闹钟中断,二进制格式,24小时制
  46. }

  47. void GetTime()
  48. {
  49.         year=C887_read(0x09);
  50.         month=C887_read(0x08);
  51.         day=C887_read(0x07);
  52.         week=C887_read(0x06);
  53.         hour=C887_read(0x04);
  54.         minute=C887_read(0x02);
  55.         second=C887_read(0x00);
  56. }
复制代码


KEIL编译,报错:
compiling main.c...
CODE\DS12C887.H(5): error C141: syntax error near 'add', expected ')'
CODE\DS12C887.H(6): error C129: missing ';' before 'C887_read'

但凡有#include"DS12C887.h"的文件均报上述的错误。实在不知道哪里错了,求纠正。
作者: web11234    时间: 2018-1-17 01:51
#ifndef _DS12C887_H_
#define _DS12C887_H_

#define uint8 int

extern void C887_write(uint8 add,uint8 datum);
extern uint8 C887_read(uint8 add);
extern void C887_init();
extern void GetTime();

#endif
作者: 沧海月明    时间: 2018-1-17 10:14
语法错误,uint8始不是没有宏定义,#define uint8   unsignet  int
作者: DavidTesla    时间: 2018-1-17 12:12
沧海月明 发表于 2018-1-17 10:14
语法错误,uint8始不是没有宏定义,#define uint8   unsignet  int

有的,在另一个头文件中,而且所有源文件都include了该头文件
作者: 沧海月明    时间: 2018-1-18 21:24
DavidTesla 发表于 2018-1-17 12:12
有的,在另一个头文件中,而且所有源文件都include了该头文件

我试过了,在"DS12C887.h"中写入#define unit8 unsigned  int;你的程序就不会有那两个错误了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1