找回密码
 立即注册
查看: 433|回复: 4

AI8051U 8-bit的串口程序

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2024-11-25 08:55:07

2

主题

5

回帖

58

积分

注册会员

积分
58
发表于 2024-11-19 10:53:32 | 显示全部楼层 |阅读模式

在我使用数据手册里的官方案例时,发现报错
        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)|
(在此感谢评论区的大佬指点)



串口1使用定时器2做波特率发生器.zip

93.11 KB, 下载次数: 43

串口2使用定时器2做波特率发生器.zip

109.19 KB, 下载次数: 43

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9128

积分

超级版主

DebugLab

积分
9128
发表于 2024-11-19 11:15:42 | 显示全部楼层
地址被8整除的SFR才可以位寻址
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

733

主题

1万

回帖

1万

积分

管理员

积分
16657
发表于 2024-11-19 22:31:17 | 显示全部楼层
在8位模式不可位寻址的很多寄存器,
在32位模式,部分已可以位寻址

截图202411192231109125.jpg

截图202411192230475175.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9128

积分

超级版主

DebugLab

积分
9128
发表于 2024-11-19 23:23:23 | 显示全部楼层
wnag*** 发表于 2024-11-19 21:28
这是有什么原因吗?还是开发者人为定义的这些寄存器可以位寻址

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:206
  • 最近打卡:2025-06-16 14:16:40

8

主题

48

回帖

731

积分

高级会员

积分
731
发表于 2024-11-20 17:30:00 | 显示全部楼层
这个地址不能位寻址,你需要对整个寄存器进行操作,置1用 |=,置0用 &=~
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 08:54 , Processed in 0.131457 second(s), 79 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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