使用KEIL加入自己的头文件出错,求助啊

2019-03-24 19:20发布

学习单片机C语言,现在尝试模块化编程的学习,把一个简单的LED灯的程序中的DELAY函数抽出来当作一个独立模块,出错N次,尝试了N+1次后仍然不得其解,看来教学视频也没看出来哪有差别,求助高手指点迷津啊 #include <reg51.h>
#include <intrins.h> sbit LS138A=P2^2; 
sbit LS138B=P2^3;
sbit LS138C=P2^4;
sbit LED8_1=P1^1; void delay(unsigned int i);      //函数声名 char DelayCNT;
char LED;
 
main()

   unsigned int i, LedOut[10];
  
   LED = 0x01; 
   DelayCNT=0;   while(1)
  { 
     if(++DelayCNT>=10)   //点亮动静LED灯速度控制
  {
   DelayCNT=0;
  LED = LED << 1;     // 左移
  if(LED==0) LED = 1; // 移位后,后面的位为高电平
  }   LedOut[8]=LED;   for( i=0; i<9; i++)
  { 
   P0 = LedOut;
   switch(i)      
      {    
   case 0:LS138A=0; LS138B=0; LS138C=0; LED8_1=1; break;        
         case 1:LS138A=1; LS138B=0; LS138C=0; LED8_1=1; break;              
         case 2:LS138A=0; LS138B=1; LS138C=0; LED8_1=1; break;
         case 3:LS138A=1; LS138B=1; LS138C=0; LED8_1=1; break;
   case 4:LS138A=0; LS138B=0; LS138C=1; LED8_1=1; break;
   case 5:LS138A=1; LS138B=0; LS138C=1; LED8_1=1; break;
   case 6:LS138A=0; LS138B=1; LS138C=1; LED8_1=1; break;
   case 7:LS138A=1; LS138B=1; LS138C=1; LED8_1=1; break;
      case 8:LS138B=1; LS138B=1; LS138C=1; LED8_1=0; break; 
      } 
     delay(150);
   }
  }  
}  void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}
上面这个是编译通过的正常程序,我把结尾处的void delay(unsigned int i)函数独立做了一个DELAY.C和一个DELAY.H,然后删除这个程序里的DELAY函数, DELAY.C里写的是 void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
} DELAY.H里面写的是: #ifndef __DELAY12_H__
#define __DELAY12_H__
void delay(unsigned int i)
#endif   然后工程里添加两个.C源文件  LED.C和DELAY.C 在LED.C中增加了一个包含#include "delay.h" #include <reg51.h>
#include <intrins.h> #include "delay.h" sbit LS138A=P2^2; 
sbit LS138B=P2^3;
sbit LS138C=P2^4;
sbit LED8_1=P1^1;   …………… …… 编译,然后噩梦就开始了     Build target 'Target 1'
compiling led.c...
LED.C(4): error C141: syntax error near 'sbit'
compiling delay12.c...
Target not created   注释掉#include "delay.h"后,程序正常,DELAY.H是添加不到程序中去的 然后尝试了以下办法 在C51里添加Include文件路径---继续失败 将delay.h复制到INC文件夹中---问题依旧 ……  我一直都是坐车让座,捡钱交公从不欺负花花草草的啊,难道KEIL对人品的要求更高吗? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
ddllxxrr
1楼-- · 2019-03-24 22:46
楼主的
#ifndef __DELAY12_H__
#define __DELAY12_H__
void delay(unsigned int i)
#endif
delay函数后边没加;号,别的一切正常,加上就应该好了
怕碎的瓶子
2楼-- · 2019-03-25 03:59
 精彩回答 2  元偷偷看……
beck_ck
3楼-- · 2019-03-25 04:57

一周热门 更多>