原创 在学习匠人的流水灯程序时的收获(高手勿进)

2008-7-8 21:28 5484 9 11 分类: MCU/ 嵌入式

今天将匠人的流水灯实验程序下载了,打算看看实际效果。用的medwin3.装了keil8.12,将编译路径设置好,复制程序,建立项目。编译时出错!


出错提示如下:


 ============================= 编 译 / 汇 编 =============================
  编译/汇编文件: "E:\WorkDir\jr_LED\JRLED.c"
   <编译命令行> C:\Keil\C51\BIN\C51.exe JRLED.c DB OE OPTIMIZE(3,SPEED) WARNINGLEVEL(0)
   <编译器提示> C51 COMPILER V8.12 - SN: K1CMC-BKSCXC
   <编译器提示> COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2008
   <编译器提示> C51 COMPILATION COMPLETE.  0 WARNING(S),  16 ERROR(S)
      ERROR C202 IN LINE 128 OF JRLED.C: 'P0_0': undefined identifier
      ERROR C202 IN LINE 128 OF JRLED.C: 'P0_0': undefined identifier
      ERROR C202 IN LINE 129 OF JRLED.C: 'P0_1': undefined identifier
      ERROR C202 IN LINE 129 OF JRLED.C: 'P0_1': undefined identifier
      ERROR C202 IN LINE 130 OF JRLED.C: 'P0_2': undefined identifier
      ERROR C202 IN LINE 130 OF JRLED.C: 'P0_2': undefined identifier
      ERROR C202 IN LINE 131 OF JRLED.C: 'P0_3': undefined identifier
      ERROR C202 IN LINE 131 OF JRLED.C: 'P0_3': undefined identifier
      ERROR C202 IN LINE 132 OF JRLED.C: 'P0_4': undefined identifier
      ERROR C202 IN LINE 132 OF JRLED.C: 'P0_4': undefined identifier
      ERROR C202 IN LINE 133 OF JRLED.C: 'P0_5': undefined identifier
      ERROR C202 IN LINE 133 OF JRLED.C: 'P0_5': undefined identifier
      ERROR C202 IN LINE 134 OF JRLED.C: 'P0_6': undefined identifier
      ERROR C202 IN LINE 134 OF JRLED.C: 'P0_6': undefined identifier
      ERROR C202 IN LINE 135 OF JRLED.C: 'P0_7': undefined identifier
      ERROR C202 IN LINE 135 OF JRLED.C: 'P0_7': undefined identifier
   <MedWin提示> 编译/汇编过程中发现错误。


显示没定义,奇怪了,以前没有碰见过这种情况。将程序复制到keil建立的项目中,依然是没有定义。将“undefined identifier”做关键词在百度中搜索,网友提示看看头文件里的定义,在keil的inc文件夹的atmel文件夹中打开头文件,定义正常。回到medwin3,在项目属性中查看,在C语言标签栏中,头文件的路径没有定义,将头文件路径添加后再次编译,正常。


分析出错原因,头文件的路径在没有定义时是系统默认的根目录,而在我的电脑上不是,所以提示没有定义。猜测另一种解决办法是将头文件拷贝到根目录,没有尝试,只是猜测。不过前面的方法切实可行。


 ============================= 编 译 / 汇 编 =============================
  编译/汇编文件: "E:\WorkDir\jr_LED\JRLED.c"
   <编译命令行> C:\Keil\C51\BIN\C51.exe JRLED.c DB OE OPTIMIZE(3,SPEED) WARNINGLEVEL(0) INCDIR(C:\Keil\C51\INC\Atmel\)
   <编译器提示> C51 COMPILER V8.12 - SN: K1CMC-BKSCXC
   <编译器提示> COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2008
   <编译器提示> C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)


  ============================= 产 生 代 码 =============================
   正在编译文件: "E:\WorkDir\jr_LED\JRLED.c"...
      <编译器提示> 编译完成!
   正在连接项目: "jr_LED"...
      <连接命令行> C:\Keil\C51\BIN\BL51.EXE JRLED.obj TO jr_LED.omf  RAMSIZE(128)
      <连接器提示> BL51 BANKED LINKER/LOCATER V6.11 - SN: K1CMC-BKSCXC
      <连接器提示> COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2007
      <连接器提示> Program Size: data="28".0 xdata="0" code="251"
      <连接器提示> LINK/LOCATE RUN COMPLETE.  0 WARNING(S),  0 ERROR(S)
   正在生成代码输出文件...
      <代码输出提示> 代码文件输出到: "E:\WorkDir\jr_LED\Output\jr_LED.hex"。


将程序烧进单片机,通电。好了。

文章评论2条评论)

登录后参与讨论

用户287767 2010-8-20 02:05

把keil的inc文件夹的atmel文件夹下的AT89x52.h头文件中的关于P0的一段定义,即/*------------------------------------------------ P0 Bit Registers ------------------------------------------------*/ sbit P0_0 = 0x80; sbit P0_1 = 0x81; sbit P0_2 = 0x82; sbit P0_3 = 0x83; sbit P0_4 = 0x84; sbit P0_5 = 0x85; sbit P0_6 = 0x86; sbit P0_7 = 0x87; 复制到 的头文件中,保存即可编译了;/

tengjingshu_112148725 2009-4-10 08:30

学习了
相关推荐阅读
用户1377708 2008-03-20 00:21
EDN51学习板1602显示屏在Proteus中的仿真
最近一直在学习1602显示模块和Proteus,今天忽然有在Proteus中仿真51学习板上的1602模块的想法。开始将显示的所有模块都画好,发现竟然不能正常运行,怕是老问题,只好一个一个减少来查,最...
用户1377708 2007-09-28 23:06
工艺差导致问题层出不穷
从事现在的工作马上就要一年了。(我是个仪器调试员)我看到的都是让人痛心疾首的事。也许是我年轻冲动太傻太单纯,但是这世界真的就是如此的浮躁吗?!现在的公司管理混乱,员工对工作都不怎么上心。产品也是迟迟不...
EE直播间
更多
我要评论
2
9
关闭 站长推荐上一条 /3 下一条