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)|
(在此感谢评论区的大佬指点)
地址被8整除的SFR才可以位寻址 在8位模式不可位寻址的很多寄存器,
在32位模式,部分已可以位寻址
wnagming 发表于 2024-11-19 21:28
这是有什么原因吗?还是开发者人为定义的这些寄存器可以位寻址
8051架构决定的,因为8位只能寻址256个位或256个字节(字节和位寻址方式不同,由指令译码器根据指令决定)
256个以上位或字节,需要切换到32位模式(Ai8051U) 这个地址不能位寻址,你需要对整个寄存器进行操作,置1用 |=,置0用 &=~
页:
[1]