durongze 发表于 2024-4-27 11:48:35

官方给的例子报错是咋回事呢?STC89-90xx Series MCU IO Demo


//
//由于P0口为开漏模式,所以需要外接10K左右的上拉电阻才可以正常测试
//对于STC90C5xAD/STC9LEC5xAD系列,P4口的地址为 0C0H
//
//P4.5默认为ALE引脚,需要使用ISP下载软件将它编程为P4.5口才可正常测试
//

#include "reg51.h"

sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit P14 = P1^4;
sbit P15 = P1^5;
sbit P16 = P1^6;
sbit P17 = P1^7;
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
sbit P25 = P2^5;
sbit P26 = P2^6;
sbit P27 = P2^7;
sbit P30 = P3^0;
sbit P31 = P3^1;
sbit P32 = P3^2;
sbit P33 = P3^3;
sbit P34 = P3^4;
sbit P35 = P3^5;
sbit P36 = P3^6;
sbit P37 = P3^7;

sfr P4   = 0xC0;
sbit P40 = P4^0;
sbit P41 = P4^1;
sbit P42 = P4^2;
sbit P43 = P4^3;


//sfr P4 = 0xc0;      //STC90C5xAD/STC9LEC5xAD系列

void delay()
{
    int i, j;

    for (i=0; i<1000; i++)
    for (j=0; j<500; j++);
}


void main()
{
    P10 = 0;
    delay();
    P10 = 1;
    P11 = 0;
    delay();
    P11 = 1;
    P12 = 0;
    delay();
    P12 = 1;
    P13 = 0;
    delay();
    P13 = 1;
    P14 = 0;
    delay();
    P14 = 1;
    P15 = 0;
    delay();
    P15 = 1;
    P16 = 0;
    delay();
    P16 = 1;
    P17 = 0;
    delay();
    P17 = 1;

    P30 = 0;
    delay();
    P30 = 1;
    P31 = 0;
    delay();
    P31 = 1;
    P32 = 0;
    delay();
    P32 = 1;
    P33 = 0;
    delay();
    P33 = 1;
    P34 = 0;
    delay();
    P34 = 1;
    P35 = 0;
    delay();
    P35 = 1;
    P36 = 0;
    delay();
    P36 = 1;
    P37 = 0;
    delay();
    P37 = 1;

    P20 = 0;
    delay();
    P20 = 1;
    P21 = 0;
    delay();
    P21 = 1;
    P22 = 0;
    delay();
    P22 = 1;
    P23 = 0;
    delay();
    P23 = 1;
    P24 = 0;
    delay();
    P24 = 1;
    P25 = 0;
    delay();
    P25 = 1;
    P26 = 0;
    delay();
    P26 = 1;
    P27 = 0;
    delay();
    P27 = 1;

    P00 = 0;
    delay();
    P00 = 1;
    P01 = 0;
    delay();
    P01 = 1;
    P02 = 0;
    delay();
    P02 = 1;
    P03 = 0;
    delay();
    P03 = 1;
    P04 = 0;
    delay();
    P04 = 1;
    P05 = 0;
    delay();
    P05 = 1;
    P06 = 0;
    delay();
    P06 = 1;
    P07 = 0;
    delay();
    P07 = 1;

    P40 = 0;
    delay();
    P40 = 1;
    P41 = 0;
    delay();
    P41 = 1;
    P42 = 0;
    delay();
    P42 = 1;
    P43 = 0;
    delay();
    P43 = 1;

    while (1)
    {
      P1 = 0x00;
      delay();
      P1 = 0xff;

      P3 = 0x00;
      delay();
      P3 = 0xff;

      P2 = 0x00;
      delay();
      P2 = 0xff;

      P0 = 0x00;
      delay();
      P0 = 0xff;

      P4 = 0x00;
      delay();
      P4 = 0xff;
    }
}
--------------------------------------------------------------------------
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:?C_START
    MODULE:STARTUP.obj (?C_STARTUP)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:?C_START
    MODULE:STARTUP.obj (?C_STARTUP)
    ADDRESS: 0155H
Program Size: data=9.0 xdata=0 code=343
---------------------------------------------
为什么官方给的例子会报警告呢?

乘风飞扬 发表于 2024-4-27 11:58:05

项目里面是不是有“STARTUP.A51”文件?有的话删掉试试。

durongze 发表于 2024-4-27 12:13:48

乘风飞扬 发表于 2024-4-27 11:58
项目里面是不是有“STARTUP.A51”文件?有的话删掉试试。

删掉了,也清除缓存了。重新编译还是报
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:?C_STARTUP
    MODULE:rda.obj (RDA)
Program Size: data=8.0 xdata=0 code=328

之前总共两个警告,删除后L2警告没有了,但是L1还是有,是不是和什么选项有关呢?

乘风飞扬 发表于 2024-4-27 12:17:41

durongze 发表于 2024-4-27 12:13
删掉了,也清除缓存了。重新编译还是报
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL


能否将你的项目打包发出来?

durongze 发表于 2024-4-27 12:25:59

这个是我的工程,帮我看下,谢谢

durongze 发表于 2024-4-27 12:29:56

乘风飞扬 发表于 2024-4-27 12:17
能否将你的项目打包发出来?

compiling my_test.c...
assembling my_test.src...
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:?C_STARTUP
    MODULE:my_test.obj (MY_TEST)
Program Size: data=8.0 xdata=0 code=328
creating hex file from "my_test"...
"my_test" - 0 Error(s), 1 Warning(s).

durongze 发表于 2024-4-27 12:31:46

C51 COMPILER V9.01   MY_TEST                                                               04/27/2024 12:27:20 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE MY_TEST
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: F:\program\KeilC51\C51\BIN\C51.EXE my_test.c BROWSE DEBUG OBJECTEXTEND SRC(.\my_test.SRC)

line level    source

   1          /*------------------------------------------------------------------*/
   2          /* --- STC MCU Limited ---------------------------------------------*/
   3          /* --- STC89-90xx Series MCU IO Demo -------------------------------*/
   4          /* --- Mobile: (86)13922805190 -------------------------------------*/
   5          /* --- Fax: 86-0513-55012956,55012947,55012969 ---------------------*/
   6          /* --- Tel: 86-0513-55012928,55012929,55012966----------------------*/
   7          /* --- Web: www.STCMCU.com -----------------------------------------*/
   8          /* --- Web: www.GXWMCU.com -----------------------------------------*/
   9          /* If you want to use the program or the program referenced in the*/
10          /* article, please specify in which data and procedures from STC    */
11          /*------------------------------------------------------------------*/
12         
13          //
14          //由于P0口为开漏模式,所以需要外接10K左右的上拉电阻才可以正常测试
15          //对于STC90C5xAD/STC9LEC5xAD系列,P4口的地址为 0C0H
16          //
17          //P4.5默认为ALE引脚,需要使用ISP下载软件将它编程为P4.5口才可正常测试
18          //
19         
20          #include "reg51.h"
21         
22          sbit P00 = P0^0;
23          sbit P01 = P0^1;
24          sbit P02 = P0^2;
25          sbit P03 = P0^3;
26          sbit P04 = P0^4;
27          sbit P05 = P0^5;
28          sbit P06 = P0^6;
29          sbit P07 = P0^7;
30          sbit P10 = P1^0;
31          sbit P11 = P1^1;
32          sbit P12 = P1^2;
33          sbit P13 = P1^3;
34          sbit P14 = P1^4;
35          sbit P15 = P1^5;
36          sbit P16 = P1^6;
37          sbit P17 = P1^7;
38          sbit P20 = P2^0;
39          sbit P21 = P2^1;
40          sbit P22 = P2^2;
41          sbit P23 = P2^3;
42          sbit P24 = P2^4;
43          sbit P25 = P2^5;
44          sbit P26 = P2^6;
45          sbit P27 = P2^7;
46          sbit P30 = P3^0;
47          sbit P31 = P3^1;
48          sbit P32 = P3^2;
49          sbit P33 = P3^3;
50          sbit P34 = P3^4;
51          sbit P35 = P3^5;
52          sbit P36 = P3^6;
53          sbit P37 = P3^7;
54         
55          sfr P4   = 0xC0;
C51 COMPILER V9.01   MY_TEST                                                               04/27/2024 12:27:20 PAGE 2   

56          sbit P40 = P4^0;
57          sbit P41 = P4^1;
58          sbit P42 = P4^2;
59          sbit P43 = P4^3;
60         
61         
62          //sfr P4 = 0xc0;      //STC90C5xAD/STC9LEC5xAD系列
63         
64          void delay()
65          {
66   1          int i, j;
67   1      
68   1          for (i=0; i<1000; i++)
69   1          for (j=0; j<500; j++);
70   1      }
71         
72         
73          void main()
74          {
75   1          P10 = 0;
76   1          delay();
77   1          P10 = 1;
78   1          P11 = 0;
79   1          delay();
80   1          P11 = 1;
81   1          P12 = 0;
82   1          delay();
83   1          P12 = 1;
84   1          P13 = 0;
85   1          delay();
86   1          P13 = 1;
87   1          P14 = 0;
88   1          delay();
89   1          P14 = 1;
90   1          P15 = 0;
91   1          delay();
92   1          P15 = 1;
93   1          P16 = 0;
94   1          delay();
95   1          P16 = 1;
96   1          P17 = 0;
97   1          delay();
98   1          P17 = 1;
99   1      
100   1          P30 = 0;
101   1          delay();
102   1          P30 = 1;
103   1          P31 = 0;
104   1          delay();
105   1          P31 = 1;
106   1          P32 = 0;
107   1          delay();
108   1          P32 = 1;
109   1          P33 = 0;
110   1          delay();
111   1          P33 = 1;
112   1          P34 = 0;
113   1          delay();
114   1          P34 = 1;
115   1          P35 = 0;
116   1          delay();
117   1          P35 = 1;
C51 COMPILER V9.01   MY_TEST                                                               04/27/2024 12:27:20 PAGE 3   

118   1          P36 = 0;
119   1          delay();
120   1          P36 = 1;
121   1          P37 = 0;
122   1          delay();
123   1          P37 = 1;
124   1      
125   1          P20 = 0;
126   1          delay();
127   1          P20 = 1;
128   1          P21 = 0;
129   1          delay();
130   1          P21 = 1;
131   1          P22 = 0;
132   1          delay();
133   1          P22 = 1;
134   1          P23 = 0;
135   1          delay();
136   1          P23 = 1;
137   1          P24 = 0;
138   1          delay();
139   1          P24 = 1;
140   1          P25 = 0;
141   1          delay();
142   1          P25 = 1;
143   1          P26 = 0;
144   1          delay();
145   1          P26 = 1;
146   1          P27 = 0;
147   1          delay();
148   1          P27 = 1;
149   1      
150   1          P00 = 0;
151   1          delay();
152   1          P00 = 1;
153   1          P01 = 0;
154   1          delay();
155   1          P01 = 1;
156   1          P02 = 0;
157   1          delay();
158   1          P02 = 1;
159   1          P03 = 0;
160   1          delay();
161   1          P03 = 1;
162   1          P04 = 0;
163   1          delay();
164   1          P04 = 1;
165   1          P05 = 0;
166   1          delay();
167   1          P05 = 1;
168   1          P06 = 0;
169   1          delay();
170   1          P06 = 1;
171   1          P07 = 0;
172   1          delay();
173   1          P07 = 1;
174   1      
175   1          P40 = 0;
176   1          delay();
177   1          P40 = 1;
178   1          P41 = 0;
179   1          delay();
C51 COMPILER V9.01   MY_TEST                                                               04/27/2024 12:27:20 PAGE 4   

180   1          P41 = 1;
181   1          P42 = 0;
182   1          delay();
183   1          P42 = 1;
184   1          P43 = 0;
185   1          delay();
186   1          P43 = 1;
187   1      
188   1          while (1)
189   1          {
190   2            P1 = 0x00;
191   2            delay();
192   2            P1 = 0xff;
193   2      
194   2            P3 = 0x00;
195   2            delay();
196   2            P3 = 0xff;
197   2      
198   2            P2 = 0x00;
199   2            delay();
200   2            P2 = 0xff;
201   2      
202   2            P0 = 0x00;
203   2            delay();
204   2            P0 = 0xff;
205   2      
206   2            P4 = 0x00;
207   2            delay();
208   2            P4 = 0xff;
209   2          }
210   1      }
211         


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE      =    328    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE      =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.0 WARNING(S),0 ERROR(S)
-------------------------------------------------------
好奇怪啊,软件界面有警告提示,链接日志里好像又没有。。。。

soma 发表于 2024-4-27 12:37:24

警告没事程序能正常运行就没问题

乘风飞扬 发表于 2024-4-27 12:38:19

my_test.c文件右键选择“Options for file...”

点击选择框,让这两个选项变灰就可以:

durongze 发表于 2024-4-27 12:39:04

soma 发表于 2024-4-27 12:37
警告没事程序能正常运行就没问题

{:titter:} 最可怕的是潜在问题啊, {:funk:}
页: [1] 2
查看完整版本: 官方给的例子报错是咋回事呢?STC89-90xx Series MCU IO Demo