找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 1771 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-5-6 15:55

正文摘要:

在学习STC8G单片机的比较器时,出现了手册里明明有那个位,写到程序上,却提示,找到不呢?这是什么原因?

回复

ID:123289 发表于 2023-5-9 09:54
手册上有,不代表编译平台就认识。
你要告诉编译平台CMPO_S是什么?
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:624769 发表于 2023-5-6 21:14
P_SW2  |= 0x80;
ID:554500 发表于 2023-5-6 21:11
有的寄存器不支持位操作的,去看看头文件有没有声明吧。
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:883242 发表于 2023-5-6 18:54
没有包含相关的头文件,c语言自身没有定义过任何一个位,都是在头文件里面定义的。

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

Powered by 单片机教程网

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