星陨之雨 发表于 2024-11-19 10:53:32

AI8051U 8-bit的串口程序


在我使用数据手册里的官方案例时,发现报错
      User\main.c(17): error C202: 'T2L': undefined identifier
      User\main.c(18): error C202: 'T2H': undefined identifier

于是我看头文件,发现没有'T2L'、'T2H',只有'TL2'、'TH2',改完以后发现又报错
      User\main.c(19): error C213: left side of asn-op not an lvalue



找了好久才发现是因为有些寄存器在8-bit下不可单个操控一位,只能用“&=”、“|=”来进行操作
以下是根据数据手册里的官方案例,改成可以适用于8-bit的程序(24MHz)|
(在此感谢评论区的大佬指点)



DebugLab 发表于 2024-11-19 11:15:42

地址被8整除的SFR才可以位寻址

神农鼎 发表于 2024-11-19 22:31:17

在8位模式不可位寻址的很多寄存器,
在32位模式,部分已可以位寻址




DebugLab 发表于 2024-11-19 23:23:23

wnagming 发表于 2024-11-19 21:28
这是有什么原因吗?还是开发者人为定义的这些寄存器可以位寻址

8051架构决定的,因为8位只能寻址256个位或256个字节(字节和位寻址方式不同,由指令译码器根据指令决定)
256个以上位或字节,需要切换到32位模式(Ai8051U)

ZJM001 发表于 2024-11-20 17:30:00

这个地址不能位寻址,你需要对整个寄存器进行操作,置1用 |=,置0用 &=~
页: [1]
查看完整版本: AI8051U 8-bit的串口程序