找回密码
 立即注册
查看: 848|回复: 13

为什么官方的串口通信例程我都编译不过去啊

[复制链接]

5

主题

33

回帖

97

积分

注册会员

积分
97
发表于 2024-9-15 07:28:35 | 显示全部楼层 |阅读模式
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
T2H  T2L 提示没定义 我加载#include <AI8051U.H> 头文件了啊 要疯了。。。。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:57
  • 最近打卡:2025-05-04 08:52:05

718

主题

1万

回帖

1万

积分

管理员

积分
15654
发表于 2024-9-15 13:44:07 | 显示全部楼层
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;

截图202409151346471317.jpg

截图202409151347173390.jpg

截图202409151351432240.jpg

截图202409151352157165.jpg

可见:
T0H, T0L; TH0, TL0
T1H, T1L; TH1, TL1

T2H, T2L; TH2, TL2
T3H, T3L; TH3, TL3

T4H, T4L; TH4, TL4
上面2种风格都有人不同阶段的喜欢
还是都声明下好,也不增加成本

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-04 00:16:27
已绑定手机

19

主题

3191

回帖

4930

积分

论坛元老

积分
4930
发表于 2024-9-15 08:02:19 来自手机 | 显示全部楼层
如果是8051U的头文件加载正确是不会有这些错误提示的。
回复 支持 反对

使用道具 举报 送花

5

主题

33

回帖

97

积分

注册会员

积分
97
发表于 2024-9-15 08:08:09 | 显示全部楼层
我加载#include <AI8051U.H> 头文件了啊 去掉那几个变量就可以编译过去啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-05-03 00:18:42
已绑定手机

13

主题

1257

回帖

2979

积分

金牌会员

积分
2979
发表于 2024-9-15 08:14:54 | 显示全部楼层
这就疯了!?检查一下你所include的AI8051U.H中是否定义了T2H  T2L
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-05-03 00:18:42
已绑定手机

13

主题

1257

回帖

2979

积分

金牌会员

积分
2979
发表于 2024-9-15 08:19:55 | 显示全部楼层
本帖最后由 21cnsound 于 2024-9-15 08:21 编辑

AI8051U.h中确实没定义,用T2H和T2L需要自己定义
回复 支持 反对

使用道具 举报 送花

5

主题

33

回帖

97

积分

注册会员

积分
97
发表于 2024-9-15 08:22:11 | 显示全部楼层
本帖最后由 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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:488
  • 最近打卡:2025-05-03 18:39:04
已绑定手机

6

主题

285

回帖

889

积分

荣誉版主

积分
889
发表于 2024-9-15 08:32:54 | 显示全部楼层
除了改头文件,还要检查你的例程是否是对应的单片机的?

9
(仅供参考,欢迎探讨)
回复 支持 反对

使用道具 举报 送花

5

主题

33

回帖

97

积分

注册会员

积分
97
发表于 2024-9-15 08:39:15 | 显示全部楼层
autop*** 发表于 2024-9-15 08:32
除了改头文件,还要检查你的例程是否是对应的单片机的?

9

是啊 这个没问题我设置了啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:454
  • 最近打卡:2025-05-03 00:18:42
已绑定手机

13

主题

1257

回帖

2979

积分

金牌会员

积分
2979
发表于 2024-9-15 13:02:43 | 显示全部楼层
beishe*** 发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-05-04 02:13:29

10

主题

1161

回帖

5133

积分

论坛元老

积分
5133
发表于 2024-9-15 13:30:45 | 显示全部楼层
你是用哪一个来编译的,C251还是 C51 ?
C251的EAXFR是可位寻址的
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 10:28 , Processed in 0.130053 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表