第一次用32G12K128遇到的奇葩问题
使用32G12K128给我的当头第一棒。一个简单的定义变量就给我报错了 在初次使用STC32G12K128时,遇到变量定义报错的问题,可能是由于以下几个原因导致的:1. 编译器配置不当:STC32G12K128是一款基于8051架构的微控制器,不同的编译器对变量的定义和存储方式有不同的要求。请确保您的编译器配置正确,特别是针对STC32G12K128的优化设置。
2. 数据类型不匹配:8051架构对数据类型有严格的要求,特别是对于位变量和字节变量的定义。请检查您定义的变量类型是否与编译器支持的类型相匹配。
3. 内存分配问题:STC32G12K128的内存资源有限,如果定义的变量超出了可用内存范围,编译器会报错。请检查您的变量定义是否合理,是否超出了内存限制。
4. 语法错误:尽管看似简单的变量定义,也可能存在语法错误,如缺少分号、使用了非法字符等。请仔细检查代码,确保语法正确。
建议您参考STC32G12K128的用户手册和编译器文档,确保所有设置和代码编写都符合规范。同时,也可以利用调试工具逐步排查问题,找到具体的错误原因。
[本文内容由国芯人工智能辅助生成,仅供参考] 按理说就那么一段定义变量,在STC8A8K64D4下能编译通过,在STC32G12K128下应该也能通过啊,就这一段应该是可以兼容的吧 YW1920 发表于 2025-3-23 12:45
按理说就那么一段定义变量,在STC8A8K64D4下能编译通过,在STC32G12K128下应该也能通过啊,就这一段应该是 ...
改成DATA_PIN BIT 0x90.7可以编译
建议从C学起{:4_178:}
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11902
P1M0 DATA 0X92
P1M1 DATA 0X91
BIT_COUNTER EQU 0x33
DATA_PIN BIT 0x90.7
ORG 0000H
JMP MAIN
ORG 0100H
MAIN:
SETB DATA_PIN
SJMP $
END ercircle 发表于 2025-3-23 15:01
改成DATA_PIN BIT 0x90.7可以编译
建议从C学起
嗯,看到你的回答之后问题一下就解决了,P1M0 DATA 0X92
P1M1 DATA 0X91
P1 DATA 0X90
BIT_COUNTER EQU 0x33
DATA_PIN BIT P1.7
ORG 0000H
JMP MAIN
ORG 0100H
MAIN:
SETB DATA_PIN
SJMP $
END
这样就行了,不过同样的代码在STC8A8K64D4下又能编译通过真是奇怪 YW1920 发表于 2025-3-23 15:49
嗯,看到你的回答之后问题一下就解决了,
这样就行了,不过同样的代码在STC8A8K64D4下又能编译通过真是奇 ...
C51的STARTUP.A51文件里也没找见P1的定义但是也不影响编译.....
一个是C251一个是C51编译器不一样。可能这个差异导致的。 何宾教授说最好是用这样子的规划。
P4M0 DATA 0xB4
P4M1 DATA 0xB3
P4 DATA 0xC0
P6M0 DATA 0xCC
P6M1 DATA 0xCB
P6 DATA 0xE8
IT0 EQUS:0x88.0
IT1 EQUS:0x88.2
EX0 EQUS:0xA8.0
EX1 EQUS:0xA8.2
EA EQUS:0xA8.7
my_progSEGMENT CODE
RSEG my_prog
LJMP main
ORG 0x0003
LJMP int0
ORG 0x0013
LJMP int1
ORG 0x200
main:
USING 0
SETBIT0 ;设置外部中断0为低电平触发
SETBIT1 ;设置外部中断1为低电平触发
SETBEX0 ;使能外部中断0
SETBEX1 ;使能外部中断1
SETBEA ;使能全局中断
MOV P4M0,#0x00
MOV P4M1,#0x00
MOV P6M0,#0x00
MOV P6M1,#0x00
MOV P4,#0x00
MOV A,#0xFE
MOV P6,A
loop:
JMP loop
int0:
RL A
MOV P6,A
RETI
int1:
RR A
MOV P6,A
RETI
END
页:
[1]