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:}