小弟目前的程式要控制多的SPI裝置 , 想用巨集來控制各 CHIP_SELECT pin
但是,怎麼宣告都不對,想請教前輩高手該怎麼宣告才好
#define CSB1 P40
#define CSB2 P32
#define CSB3 P33
#define CSB4 P34
#define CSB5 P35
#define __CSBnSEL__(x) (CSB#x)
#define CSBnSEL(x) (__CSBnSEL__(x))
void SPI_init()
{
unsigned char nSEL = 0;
for ( nSEL = 0; nSEL < SPI_DEV_MAX; ++ nSEL )<br>{
CSBnSEL( nSEL )= 0;
/* to do device init */
CSBnSEL( nSEL )= 1;
}
}
中國廚藝學院 wrote:不知學院大找到方法了沒??...
小弟目前的程式要控制多的SPI裝置 , 想用巨集來控制各 CHIP_SELECT pin
但是,怎麼宣告都不對,想請教前輩高手該怎麼宣告才好
是否又一定要用巨集的方式來控制??...
用其它替代方案是否可以接受...
一樣可用 loop 控制...
只是...要多好幾行程序...
不知可否...

(阿...我是後輩...

#define CSB1 P40
#define CSB2 P32
#define CSB3 P33
#define CSB4 P34
#define CSB5 P35
void __CSBnSEL1__(unsigned char x);
void __CSBnSEL2__(unsigned char x);
void __CSBnSEL3__(unsigned char x);
void __CSBnSEL4__(unsigned char x);
void __CSBnSEL5__(unsigned char x);
void (*CSBnSEL[2])(unsigned char x) = {__CSBnSEL1__, __CSBnSEL2__, __CSBnSEL3__, __CSBnSEL4__, __CSBnSEL5__};
void SPI_init()
{
unsigned char nSEL = 0;
for ( nSEL = 0; nSEL < SPI_DEV_MAX; nSEL++ )
{
CSBnSEL[nSEL](0);
/* to do device init */
CSBnSEL[nSEL](1);
}
}
void __CSBnSEL1__(unsigned char x)
{
CSB1 = x;
}
void __CSBnSEL2__(unsigned char x)
{
CSB2 = x;
}
void __CSBnSEL3__(unsigned char x)
{
CSB3 = x;
}
void __CSBnSEL4__(unsigned char x)
{
CSB4 = x;
}
void __CSBnSEL5__(unsigned char x)
{
CSB5 = x;
}