标题: 请教一下,学习单片机比较器是遇到这种情况是什么原因? [打印本页]

作者: 木示    时间: 2023-5-6 15:55
标题: 请教一下,学习单片机比较器是遇到这种情况是什么原因?
在学习STC8G单片机的比较器时,出现了手册里明明有那个位,写到程序上,却提示,找到不呢?这是什么原因?

111.png (39.03 KB, 下载次数: 42)

STC的例子

STC的例子

2.png (88.39 KB, 下载次数: 42)

STC8G手册

STC8G手册

33.png (259.7 KB, 下载次数: 37)

STC8G手册

STC8G手册

作者: Hephaestus    时间: 2023-5-6 18:54
没有包含相关的头文件,c语言自身没有定义过任何一个位,都是在头文件里面定义的。
作者: coody_sz    时间: 2023-5-6 21:09
原因很简单,因为CMPCR1、CMPCR2都是不可位寻址的,CMPO_S也不可位寻址,应该用逻辑操作:
P_SW2 |= (1<<3);   //选择P4.1做比较器输出脚
P_SW2 &= ~(1<<3);   //选择P3.4做比较器输出脚
CMPCR1 |= 0x80;   //允许比较器
作者: 18701931930    时间: 2023-5-6 21:11
有的寄存器不支持位操作的,去看看头文件有没有声明吧。
作者: 188610329    时间: 2023-5-6 21:14
P_SW2  |= 0x80;
作者: 188610329    时间: 2023-5-6 21:17
仔细看手册, CMPO_S = 0; 是非法的,要用
P_SW2 &= 0xF7;    //CMPO_S:   P3.4
P_SW2 |= 0x08;    //CMPO_S:   P4.1
作者: yzwzfyz    时间: 2023-5-9 09:54
手册上有,不代表编译平台就认识。
你要告诉编译平台CMPO_S是什么?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1