新手请教 AVR怎样实现位操作
1个回答
2016-12-05 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数: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; //位变量必须是全局变量,不能是局部变量
大于$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 广告
2022-03-17 广告
电话机器人主要就是用来模拟人工通话的一组程序,一般由,CRM系统,语义识别,转换文字,话术体系,这是软的部分,再加上底层软交换和通信模块一起,合并起来就是一套完整的电话机器人系统。电话机器人可以代替真人进行电话工作的,像是电话营销、售后回访...
点击进入详情页
本回答由杭州一知智能科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询