我正在使用CodeVision来编程AVR微控制器。它是一个C编译器。
所以这部分是给我一个错误
#defined some_name PORTL,6
SETBIT ( some_name );
错误是: 宏调用中的参数太少
根据CodeVision的宏定义是: 可以使用以下宏:
SETBIT(port,b)
sets bit b of port to logic 1 state.
Example:
/* set bit 5 of I/O Port A output to logic 1 for non-XMEGA chips */
SETBIT(PORTA,5);
在阅读了一些与我的理解水平相差甚远的宏观之后,我注意到他们使用了这个
#define comma ,
所以我尝试了这个,我的新错误与旧错误相同。
我已经阅读了一些关于宏的帖子,但是我们要提前了解。那么请你告诉我解决方案是什么。你能不能告诉我在哪里可以找到一个地方,一步一步地教我宏,从简单的那些到我在其他帖子中看到的疯狂的那些。
对不起,如果答案太明显了,我不知道如何搜索它以获得我所面对的确切问题。
谢谢
答案 0 :(得分:3)
您的问题是扩展的顺序,some_name
仅被视为SETBIT
#define SETBIT1(ARG) SETBIT(ARG)
SETBIT1(some_name)
应该有效
答案 1 :(得分:1)
您可能会以不同的方式看待它并定义一个宏:
#defined BIT_NAME() SETBIT( PORTL, 6 )
BIT_NAME();
如果你需要一个设置/清除宏,那么:
#defined BIT_NAME( b ) (b ? SETBIT( PORTL, 6 ) : CLRBIT( PORTL, 6 ) )
BIT_NAME( 1 );
BIT_NAME( 0 );