新手请教 AVR怎样实现位操作

 我来答
huanglenzhi
2016-12-05 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517198
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
用PORTA.5=1;这样的格式,但只能对地址小于$1F的寄存器使用

大于$1F的寄存器,AVR 芯片本身就不支持位操作,什么语言都一样,只能用操作RAM的方式来处理

CodeVisionAVR 像 BASCOM-AVR一样支持寄存器如 DDRB.5=1 这样的位操作语句.

但是要注意的一点就是如下面的语句中:(假设ABCD是一个字符字节变量)

ABCD.5=1; //CVAVR不支持变量的位的直接操作,BASCOM-AVR却支持
SPSR.5=1; //SPSR的IO地址是$0E (小于$1F)
OCR2.5=1; //OCR2的IO地址是$23 (大于$1F)

第一句的注释已经说明清楚

第二句由于SPSR的IO地址小于$1F,所以CVAVR支持这个寄存器的位的直接操作

第三句由于OCR2的IO地址大于$1F,所以CVAVR不支持这个寄存器的位的直接操作

所以,在CVAVR中如果想对寄存器的位进行操作,请先看一下芯片的数据手册,看看该寄存器的IO地址是否小于$1F

同样

while(SPSR.5);
while(OCR2.5);

上面的中第一句合法,第二句不能通过编译

-------------------------------------------------------
bit b1; //位变量必须是全局变量,不能是局部变量
杭州一知智能科技有限公司
2022-03-17 广告
电话机器人主要就是用来模拟人工通话的一组程序,一般由,CRM系统,语义识别,转换文字,话术体系,这是软的部分,再加上底层软交换和通信模块一起,合并起来就是一套完整的电话机器人系统。电话机器人可以代替真人进行电话工作的,像是电话营销、售后回访... 点击进入详情页
本回答由杭州一知智能科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式