#define HT1621IO_DIR P2DIR |= BIT4+BIT5+BIT6+BIT7
#define CS1 P2OUT |= BIT7
#define CS0 P2OUT &= ~BIT7
#define RD1 P2OUT |= BIT6
#define RD0 P2OUT &= ~BIT6
#define WR1 P2OUT |= BIT5
#define WR0 P2OUT &= ~BIT5
#define DAT1 P2OUT |= BIT4
#define DAT0 P2OUT &= ~BIT4
#define DAT_IN P2IN & BIT4
//读LCD单个地址的数据码
unsigned char Read_1621(unsigned char addr)
{
P2DIR &=~BIT4;
unsigned char Data_Byte;
unsigned char i;
unsigned char temp;
Data_Byte=0x00;
temp=0x01;
CS0;
SendBit_1621(0xa0,3); //写入标志码"110"
SendBit_1621(addr<<2,6); //写入6 位addr
RD0;
_NOP();
for(i=0;i<4;i++)
{
_NOP();
RD1;
_NOP();
if(DAT_IN)
{
Data_Byte=Data_Byte|temp;
}
RD0;
temp=temp<<1;
}
CS1;
P2DIR |= BIT4;
return(Data_Byte);
}
void SendBit_1621(unsigned char data,unsigned char cnt) //data的高cnt位写入HT1621,高位在前
{
unsigned char i;
for(i =0; i <cnt; i ++)
{
if((data&0x80)==0) DAT0;
else DAT1;
WR0;
_NOP();
WR1;
data<<=1;
}
}
单片机用的MSP430F5438A 能进行写操作 进行不了读操作!附上时序图跟代码!求解
|