找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 812|回复: 6
收起左侧

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

[复制链接]
ID:706724 发表于 2023-5-6 15:55 | 显示全部楼层 |阅读模式
在学习STC8G单片机的比较器时,出现了手册里明明有那个位,写到程序上,却提示,找到不呢?这是什么原因?

STC的例子

STC的例子

STC8G手册

STC8G手册

STC8G手册

STC8G手册
回复

使用道具 举报

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 | 显示全部楼层
有的寄存器不支持位操作的,去看看头文件有没有声明吧。
回复

使用道具 举报

ID:624769 发表于 2023-5-6 21:14 | 显示全部楼层
P_SW2  |= 0x80;
回复

使用道具 举报

ID:624769 发表于 2023-5-6 21:17 | 显示全部楼层
仔细看手册, CMPO_S = 0; 是非法的,要用
P_SW2 &= 0xF7;    //CMPO_S:   P3.4
P_SW2 |= 0x08;    //CMPO_S:   P4.1
回复

使用道具 举报

ID:123289 发表于 2023-5-9 09:54 | 显示全部楼层
手册上有,不代表编译平台就认识。
你要告诉编译平台CMPO_S是什么?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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