为什么官方的串口通信例程我都编译不过去啊
EAXFR = 1; //扩展寄存器(XFR)访问使能 提示不能赋值MAIN.C(67): error C213: left side of asn-op not an lvalue
MAIN.C(128): error C202: 'T2H': undefined identifier
MAIN.C(129): error C202: 'T2L': undefined identifier
T2HT2L 提示没定义 我加载#include <AI8051U.H> 头文件了啊 要疯了。。。。 sfr TH4 = 0xd2;
sfr TL4 = 0xd3;
sfr TH3 = 0xd4;
sfr TL3 = 0xd5;
sfr TH2 = 0xd6;
sfr TL2 = 0xd7;
sfr TL0 = 0x8a;
sfr TL1 = 0x8b;
sfr TH0 = 0x8c;
sfr TH1 = 0x8d;
可见:
T0H, T0L; TH0, TL0
T1H, T1L; TH1, TL1
T2H, T2L; TH2, TL2
T3H, T3L; TH3, TL3
T4H, T4L; TH4, TL4
上面2种风格都有人不同阶段的喜欢
还是都声明下好,也不增加成本
如果是8051U的头文件加载正确是不会有这些错误提示的。 我加载#include <AI8051U.H> 头文件了啊 去掉那几个变量就可以编译过去啊 这就疯了!?检查一下你所include的AI8051U.H中是否定义了T2HT2L 本帖最后由 21cnsound 于 2024-9-15 08:21 编辑
AI8051U.h中确实没定义,用T2H和T2L需要自己定义 本帖最后由 beishen2009 于 2024-9-15 08:38 编辑
确实没定义 例程也没定义下
EAXFR = 1; //扩展寄存器(XFR)访问使能 提示不能赋值 这个确实是定义了的
这个是头文件的定义啊
sfr AUXR = 0x8e;
#define T0x12 0x80
#define T1x12 0x40
#define S1M0x6 0x20
#define T2R 0x10
#define T2_CT 0x08
#define T2x12 0x04
#define EXTRAM 0x02
#define S1BRT 0x01
除了改头文件,还要检查你的例程是否是对应的单片机的?
9 autopccopy 发表于 2024-9-15 08:32
除了改头文件,还要检查你的例程是否是对应的单片机的?
9
是啊 这个没问题我设置了啊 beishen2009 发表于 2024-9-15 08:22
确实没定义 例程也没定义下
EAXFR = 1; //扩展寄存器(XFR)访问使能 提示不能赋值 这个确实是定义了的
这 ...
sfr P_SW2 = 0xba;
#define EAXFR 0x80
#define I2C_S1 0x20
#define I2C_S0 0x10
#define CMPO_S 0x08
#define S4_S 0x04
#define S3_S 0x02
#define S2_S 0x01
这里的EAXFR是宏定义,不是寄存器定义/声明,所以不能直接赋值
这个宏定义对应的sbit不可位寻址,赋值需要用位运算对EAXFR对应的位进行操作才行。
如: 对EAXFR置1或清零
P_SW2 |= EAXFR
P_SW2 &= ~EAXFR 你是用哪一个来编译的,C251还是 C51 ?
C251的EAXFR是可位寻址的
页:
[1]
2