iar for avr 中对特殊寄存器中某个位的操作
时间:10-02
整理:3721RD
点击:
刚开始使用iar,写好代码后对特殊寄存器的位操作不能进行,编译器说没有定义,比如说 while(!( while(!(UCSRA&(1<<UDRE)))&(1<<UDRE)))这句话,编译器就提示说 Error【Pe020】:identifier"UDRE"is undefined
然后在mega8的头文件iom8.h中只有寄存器的地址定义,没有寄存器位的定义,位的定义放在了iom8.inc中,奇怪的要死,是设置错了还是就不能使用,如果我想把 UCSRA中的UDRE位置1难道只能是UCSRA&(1<<5),那不是每个寄存器的位都要记牢?请哪位知道的提示一下
然后在mega8的头文件iom8.h中只有寄存器的地址定义,没有寄存器位的定义,位的定义放在了iom8.inc中,奇怪的要死,是设置错了还是就不能使用,如果我想把 UCSRA中的UDRE位置1难道只能是UCSRA&(1<<5),那不是每个寄存器的位都要记牢?请哪位知道的提示一下
请教小编 你这个问题是怎么解决的?
没办法,自己在头文件里加了位操作,就是很麻烦
没设置好 在option->general options -> system -> enable bit defination in I/O - Include files 把位操作使能勾上就可以了
人生最大的遗憾是勤奋不够!