找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1763|回复: 6
打印 上一主题 下一主题
收起左侧

请教一下,学习单片机比较器是遇到这种情况是什么原因?

[复制链接]
跳转到指定楼层
楼主
在学习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手册
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2023-5-6 18:54 | 只看该作者
没有包含相关的头文件,c语言自身没有定义过任何一个位,都是在头文件里面定义的。
回复

使用道具 举报

板凳
ID:1034262 发表于 2023-5-6 21:09 | 只看该作者
原因很简单,因为CMPCR1、CMPCR2都是不可位寻址的,CMPO_S也不可位寻址,应该用逻辑操作:
P_SW2 |= (1<<3);   //选择P4.1做比较器输出脚
P_SW2 &= ~(1<<3);   //选择P3.4做比较器输出脚
CMPCR1 |= 0x80;   //允许比较器
回复

使用道具 举报

地板
ID:554500 发表于 2023-5-6 21:11 | 只看该作者
有的寄存器不支持位操作的,去看看头文件有没有声明吧。
回复

使用道具 举报

5#
ID:624769 发表于 2023-5-6 21:14 | 只看该作者
P_SW2  |= 0x80;
回复

使用道具 举报

6#
ID:624769 发表于 2023-5-6 21:17 | 只看该作者
仔细看手册, CMPO_S = 0; 是非法的,要用
P_SW2 &= 0xF7;    //CMPO_S:   P3.4
P_SW2 |= 0x08;    //CMPO_S:   P4.1
回复

使用道具 举报

7#
ID:123289 发表于 2023-5-9 09:54 | 只看该作者
手册上有,不代表编译平台就认识。
你要告诉编译平台CMPO_S是什么?
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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