我现在在使用LPC932A1的SPI功能,现在想把SPI功能用在ZLG7289芯片,可是我写了一个用SPI写了一个ZLG7289的测试程序,把程序烧到LPC932A1实验板(周立功公司买的)数码管没有闪烁,如果正确的话应该数码管会闪烁,我用模拟的SPI就正常了,不知道是不是我的程序有错误:程序如下: #include<reg935.h> #define uint unsigned int #define uchar unsigned char //uchar code led2[16]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00}; sbit CS=P2^0; sbit CLK=P2^5; sbit DAT=P2^2; uchar SENDDATA,SENDDATA1; //uchar n; sbit LED=P2^6;
/**************************************************************************** * 名称:Delay50uS * 功能:50uS软件延时 * 说明:用户根据自已的系统相应更改 ****************************************************************************/ void Delay50uS(void) { uchar i; for(i=0; i<25; i++); }
//======================================================= /* 函数名:void delay() 作用:延时函数 */ //======================================================= void delay() { uchar i; uint j; for(i=0;i<250;i++) { for(j=0;j<1000;j++) {;} } }
//======================================================= /* 函数名:void init_wdt() 作用:SPI初始化 */ //======================================================= void init(void) { P2M1=0XC0; P2M2=0XC0; SPCTL=0xdf; SPSTAT=0XC0; } //======================================================= /* 函数名:void MSEND_DAT(void) 作用:SPI发送程序 */ //======================================================= void MSEND_DAT(void) { SPSTAT=0XC0; SPDAT=SENDDATA; while((SPSTAT&0X80)==0); //SENDDATA=SPDAT; }
//======================================================= /* 函数名:void main(void) 作用:主函数 */ //======================================================= void main(void) { init(); SENDDATA=0xBF;
CS=0; Delay50uS(); MSEND_DAT(); CS=1; delay(); while(1) { LED=0; } }
|