zhsoliakisd 发表于 2026-1-7 23:12:04

STC32G144K246 P8OUT 与P8SETB P8CLRB的关系

STC32G144K246P8OUT 与P8SETB   P8CLRB的关系是怎么样的呢?可以用P8OUT将P8的某个IO口置高或置低, 那与P8SETB   P8CLRB将某个IO口置高或置低有什么区别呢?

qiuzhihhq 发表于 2026-1-9 13:33:30

P8OUT是对端口进行输出寄存器赋值,P8SETB是位操作置高电平,P8CLRB是位操作置低电平。用起来P8OUT方便,不像P8SETB和P8CLRB需要搭配使用。P9,PA,PB同样如此。

Ayb_ice 发表于 2026-1-9 13:53:34

直接对P8OUT与或操作不是原子操作(有些人不懂可能会产生错误,特别是中断与主循环中都使用),所以设置了P8SETB   P8CLRB寄存器,这是原子操作,不会问题,学ARM核的搞法

zhsoliakisd 发表于 2026-1-14 08:03:57

qiuzhihhq 发表于 2026-1-9 13:33
P8OUT是对端口进行输出寄存器赋值,P8SETB是位操作置高电平,P8CLRB是位操作置低电平。用起来P8OUT方便,不 ...

官方说,对P8-PB口的输出,除非整个口都设为推挽模式,才能用PXOUT对端口赋值操作,否则的话,只能是用位操作

zhsoliakisd 发表于 2026-1-14 08:04:17

Ayb_ice 发表于 2026-1-9 13:53
直接对P8OUT与或操作不是原子操作(有些人不懂可能会产生错误,特别是中断与主循环中都使用),所以设置了P ...

好的谢谢
页: [1]
查看完整版本: STC32G144K246 P8OUT 与P8SETB P8CLRB的关系