📄 msp430ldty.c
字号:
while(((P3IN&SDA430)!=0)&&(IC_error<255)) IC_error++;
P3OUT&=~SCL430; //SCL=0
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3DIR|=SDA430; //SDA为输出状态
P3OUT|=SDA430; //SDA=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
////////////////////////////////////////////////////////////////////////////////
uchar IC_read(uchar address)
{
uchar i;
start430();
writex430(ICID_W);
clock430();
writex430(address);
clock430();
start430();
writex430(ICID_R);
clock430();
i=readx430();
stop430();
delay1(10);
return(i);
}
void IC_write(uchar address,uchar info)
{
//EA=0;
_DINT();
start430();
writex430(ICID_W);
clock430();
writex430(address);
clock430();
writex430(info);
clock430();
stop430();
//EA=1;
_EINT();
delay1(50);
}
uchar IC_R(uchar address)
{
uchar i;
start430();
writex430(IC_ID_W);
clock430();
writex430(address);
clock430();
start430();
writex430(IC_ID_R);
clock430();
i=readx430();
stop430();
delay1(10);
return(i);
}
void IC_W(uchar address,uchar info)
{
//EA=0;
_DINT();
start430();
writex430(IC_ID_W);
clock430();
writex430(address);
clock430();
writex430(info);
clock430();
stop430();
//EA=1;
_EINT();
delay1(50);
}
void startb64(void)
{
P4OUT|=(SDA64+SCL64);
P4DIR|=(SDA64+SCL64);
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT|=SCL64; //SCL=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT&=~SDA64; //SDA=0;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT&=~SCL64; //SCL=0
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
void stopb64(void)
{
P4OUT&=~SDA64; //SDA=0
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT|=SCL64; //SCL=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT|=SDA64; //SDA=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
void byte_tx(uchar shu) /* 发送一个字节 */
{
uchar i,temp,temp1;
temp=shu;
for (i=0;i<8;i++)
{
P4OUT&=~SCL64; //SCL=0;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
//P3OUT&=~SDA430;
nop();
nop();
temp1=(temp&0x80);
if(temp1==0) P4OUT&=~SDA64;
else P4OUT|=SDA64;
/*P3OUT|=((temp&0x80)/32); //sda=temp的最高位*/
temp=temp<<1;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT|=SCL64; //SCL=1;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
P4OUT&=~SCL64; //SCL=0
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT|=SDA64; //SDA=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
uchar byte_rx(void) /* 接收一个字节 */
{
uchar i,j,k=0;
P4OUT&=~SCL64; ///SCL=0;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4DIR&=~SDA64; //SDA为输入状态
for (i=0;i<8;i++)
{
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT|=SCL64; //SCL=1;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
if((P4IN&SDA64)==0) j=0;
else j=1;
k=(k<<1)|j;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT&=~SCL64; //SCL=0
}
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4DIR|=SDA64; //SDA为输出状态
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
return(k);
}
void judg_ack(void)
{
P4DIR&=~SDA64; //SDA为输入状态
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4OUT|=SCL64; //SCL=1;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
for(i=0;i<99;i++)
{
if((P4IN&SDA64)==0)
break;
nop();
}
P4OUT&=~SCL64; //SCL=0
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P4DIR|=SDA64; //SDA为输出状态
P4OUT|=SDA64; //SDA=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
void wr1byte(uint addr,uchar shu)
{
uchar buf;
_DINT();
startb64();
byte_tx(0xa0);
judg_ack();
buf=(uchar)(addr/0x100);
byte_tx(buf);
judg_ack();
buf=(uchar)(addr%0x100);
byte_tx(buf);
judg_ack();
byte_tx(shu);
judg_ack();
stopb64();
delay(100);
_EINT();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -