ercircle 发表于 2025-6-5 15:53:03

21cnsound 发表于 2025-6-5 15:15
C:\TEST\8a8k64d4>dir
驱动器 C 中的卷是 System
卷的序列号是 8C87-78DE


没有编译register_definitions.c

ercircle 发表于 2025-6-5 16:03:41

463175571qqcom 发表于 2025-6-5 14:51
2)KEIL C51中,程序中我设置了sp=0x80,为什么.M51文件中,栈指针仍然指向0X30

问题1:可以切换寄存器组,但是这些地址还是要留给编译器使用。
问题2:给SP赋值时已经运行在main函数里了,那运行main函数前运行在哪呢~,用C不建议搞这些操作了。

使用C编程,一般不要再操作寄存器组和栈指针了。
可以看下Ai8051U C的例程包。
除非一些xxOS里需要设置保护啥的,一般应用不需要这两操作。

Ayb_ice 发表于 2025-6-5 16:43:22

8K中大部分是XDATA,IDATA只有256,换编译模式,或变量定义在XDATA空间

21cnsound 发表于 2025-6-5 17:31:51

ercircle 发表于 2025-6-5 15:53
没有编译register_definitions.c

C:\TEST\8A8K>D:\Software\单片机\编译\C51_V961\c51 main.c

C51 COMPILER V9.60.7.0 - SN: K1DZC-EN58KC
COPYRIGHT Copyright (C) 2012 - 2022 ARM Limited or its Affiliates. All rights reserved.

C51 COMPILATION COMPLETE.0 WARNING(S),0 ERROR(S)

C:\TEST\8A8K>D:\Software\单片机\编译\C51_V961\c51 register_definitions.c

C51 COMPILER V9.60.7.0 - SN: K1DZC-EN58KC
COPYRIGHT Copyright (C) 2012 - 2022 ARM Limited or its Affiliates. All rights reserved.

C51 COMPILATION COMPLETE.0 WARNING(S),0 ERROR(S)

C:\TEST\8A8K>D:\Software\单片机\编译\C51_V961\bl51 main.obj;register_definitions.obj

BL51 BANKED LINKER/LOCATER V6.22.4.0 - SN: K1DZC-EN58KC
COPYRIGHT (C) 1987-2021, Arm Limited or its Affiliates. All rights reserved.

Program Size: data=9.0 xdata=0 code=19
LINK/LOCATE RUN COMPLETE.0 WARNING(S),0 ERROR(S)

C:\TEST\8A8K>D:\Software\单片机\编译\C51_V961\oh51 main

OBJECT TO HEX FILE CONVERTER OH51 V2.7.0.0
COPYRIGHT KEIL ELEKTRONIK GmbH 1991 - 2001

GENERATING INTEL HEX FILE: main.hex

OBJECT TO HEX CONVERSION COMPLETED.

C:\TEST\8A8K>dir
驱动器 C 中的卷是 System
卷的序列号是 8C87-78DE

C:\TEST\8A8K 的目录

2025/06/0517:28    <DIR>          .
2025/06/0517:24    <DIR>          ..
2025/06/0517:28               333 MAIN
2025/06/0511:27               962 main.c
2025/06/0517:28                90 main.hex
2025/06/0517:28             2,081 main.LST
2025/06/0517:28             1,226 MAIN.M51
2025/06/0517:28               256 main.OBJ
2025/06/0423:59            11,512 register_definitions.c
2025/06/0511:25             9,195 register_definitions.H
2025/06/0517:28            23,617 register_definitions.LST
2025/06/0517:28             6,916 register_definitions.OBJ
2025/06/0423:44         109,887 STC8Gxxx.h
            12 个文件      166,396 字节
               2 个目录 124,144,861,184 可用字节



加上register_definitions.c,正常编译。

ercircle 发表于 2025-6-5 17:43:42

21cnsound 发表于 2025-6-5 17:31
C:\TEST\8A8K>D:\Software\单片机\编译\C51_V961\c51 main.c

C51 COMPILER V9.60.7.0 - SN: K1DZC-EN58K ...

bl51 多obj编译,分隔要用 逗号

21cnsound 发表于 2025-6-5 17:57:44

ercircle 发表于 2025-6-5 17:43
bl51 多obj编译,分隔要用 逗号

呀,大意了。
改成逗号就一样报错。我还纳闷呢{:touxiao:}
页: 1 2 [3]
查看完整版本: 用8A8K64D4编译总说数据超出