求助?。。。。?!msp430 無法對CH376 操作 。

使用msp430對ch376并口操作 讀出數(shù)據(jù)始終為0xff下面是程序:


#include


#define CPU_F ((double)32768) ? ? ? ? //延時函數(shù)宏定義 ? ? ? ? ? ? ? ? ? ??

#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/31.2))

//#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/0.032))


//#define ?P6_OUT ? ? P6DIR = 0xff ? ? ? ? ? ? ? ?//8位并口輸出

#define ?P5 ? ? ? ? P5DIR|=(BIT4+BIT5+BIT6|BIT7) // 控制管腳


//#define ?P6_IN ? ? ?P6DIR =0x00 ? ?//8位并口輸入 ? ? ? ?



#define ?A0_L ? P5OUT &=~BIT4

#define ?A0_H ? P5OUT |=BIT4


#define ?RD_L ? P5OUT &=~BIT5

#define ?RD_H ? P5OUT |=BIT5


#define ?WR_L ? P5OUT &=~BIT6

#define ?WR_H ? P5OUT|=BIT6


#define ?CS_L ? P5OUT &=~BIT7

#define ?CS_H ? P5OUT|=BIT7


#define ?INT ? ?P2DIR|=BIT4




unsigned char temp[2];


//****************************************

void delay(unsigned int ms )

{

unsigned int i;

while ( ms -- )?

for ( i = 1000; i != 0; i -- );

}


//*******************************************

void CH376_init()

{

CS_H;

WR_H;

RD_H;

A0_L;

P6DIR =0X00; //設置 8位并行輸入

}

//************并口寫命令******************

void send_byte_cmd(unsigned char ch)

{

P6OUT = ch;

P6DIR = 0XFF; //設置 8位并行輸出

A0_H;

CS_L;

WR_L;

CS_L;

WR_H;

CS_H;

A0_L;

P6DIR = 0X00; ? //設置 8位并行輸入

_NOP( );_NOP( );_NOP( );_NOP( );


}

//************寫數(shù)據(jù)***********************

void send_byte_date(unsigned char ch)

{

??

P6OUT = ch;

P6DIR = 0XFF;//設置 8位并行輸出

A0_L;

CS_L;

WR_L;

CS_L;

WR_H;

CS_H;

P6DIR = 0X00;//設置 8位并行輸入

}

//*************讀ch376狀態(tài)************************

unsigned char read_date()

{

unsigned char dat;

P6DIR = 0X00;//設置 8位并行輸入

A0_H;

CS_L;

RD_L;

CS_L;

dat=P6IN; ? //設置 8位并行輸入?

RD_H;

CS_H;

A0_L;

return dat; ? ?

}

//************并口讀命令數(shù)據(jù)*********************************

unsigned char read_cmd_dat()

{

unsigned char mdat;

P6DIR=0X00;

A0_L;

CS_L;

RD_L;

CS_L;

mdat=P6IN;

RD_H;

CS_H;

A0_L;

return mdat;


}

//***********初始化ch376****************************

unsigned char init()

{

unsigned res;


CH376_init();

send_byte_cmd(0x06); //寫命令

send_byte_date(0x65); // 寫數(shù)據(jù)

res=read_cmd_dat();

return res;

}




//*******************************************

void main(void)

{

WDTCTL = WDTPW | WDTHOLD; ? ? ? ? ? ? ? ? ? ? ? ?// Stop WDT

UCSCTL4 |= SELA1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//選擇時鐘源

?

AUXCTL1 |= AUX1MD ; ? ? // 單片機硬件配置

AUXCTL1 &= ~AUX1OK;

AUXCTL2 |= AUX2MD ;

AUXCTL2 &= ~AUX2OK;



CH376_init();

delay_ms(50);

temp[0]=init();

delay_ms(55);

}



你把讀寫函數(shù)里面的WR和RD為低電平的時間延時1uS,看看行不行,如果還是不行那可能是硬件問題或者上電時操作端口選的不正確,上電時TXD引腳接地,WR、RD、PCS、A0、RXD接高電平或者懸空,選中并口操作方式。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频