傻孩子,#define SEI() asm("sei")是什么意思呢,可以解释下嘛?
是不是汇编语言,asm("")这种格式可以解释下嘛,还有上面两个宏定义,所完成的是什么功能?具体是对AVR寄存器中的哪一个位进行操作吗? 就是说当程序中使用SEI();时 表示 执行 asm("sei");开中断 这种DATASHEETS都讲的很清楚的
全局中断使能 SREG寄存器 I位置1 功能确实是二楼说的没错,但我觉得二楼是答非所问.楼主的意思是这句语法啥理解?sei是汇编全局中断使能,要将它用在C里,就加个asm();意思是在C里使用汇编指令. 谢谢,明白了。 mark 就是方便你嵌入汇编啦,#define SEI() asm("sei")、#define CLI() asm("cli")分别是总中断允许位置位/清除。用宏就是免得让你嵌入汇编时出错,而且更方便而已 enterout123 发表于 2009-5-13 11:03 static/image/common/back.gif
功能确实是二楼说的没错,但我觉得二楼是答非所问.楼主的意思是这句语法啥理解?sei是汇编全局中断使能,要将 ...
太感谢你了!我的问题解决了,可是我不明白为什么既然是宏定义了,为什么用SEI()不行呢?我用SEI(),报的错误是:
!ERROR file 'main.o': undefined symbol '_SEI';奇怪了,我包含了头文件 macros.h啊,里面有对于这个位操作指令的定义:
#define _asm asm /* old style */
#define WDR() asm("wdr")
#define SEI() asm("sei")
#define CLI() asm("cli")
#define NOP() asm("nop")
#define _WDR() asm("wdr")
#define _SEI() asm("sei")
#define _CLI() asm("cli")
#define _NOP() asm("nop")
为什么还要报错呢?
该为asm("sei")的时候就对了!
Kidult 发表于 2012-3-29 14:13 static/image/common/back.gif
太感谢你了!我的问题解决了,可是我不明白为什么既然是宏定义了,为什么用SEI()不行呢?我用SEI(),报的 ...
你的macro.h里面,后面那些#是全角字符么? 可以使用的,楼主再检查一下哈。 Hunter 发表于 2012-3-29 15:06 static/image/common/back.gif
可以使用的,楼主再检查一下哈。
真的不行呀...试过很多遍了 全角字符……
#define _asm asm /* old style */
#define WDR() asm("wdr")
#define SEI() asm("sei")
#define CLI() asm("cli")
#define NOP() asm("nop")
#define _WDR() asm("wdr")
#define _SEI() asm("sei")
#define _CLI() asm("cli")
#define _NOP() asm("nop")
把见面的#号该了,这样就可以用了
全角神马的最讨厌了
,;#!+-= <-------------- 全角
, ; # ! + - = <-------------- 半角 有道理,应该是这样
还有全角半角这一出,学习了 学习了
hhhhhhhhhhhhhhh
页:
[1]