📄 msp430sgtz.c
字号:
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3OUT&=~SDA430; //SDA=0;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3OUT&=~SCL430; //SCL=0
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
/*void stop()
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}*/
void stop430()
{
P3OUT&=~SDA430; //SDA=0
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3OUT|=SCL430; //SCL=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3OUT|=SDA430; //SDA=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
/*void writex(uchar j)
{
uchar i,temp;
temp=j;
for (i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
nop();
sda=CY;
nop();
scl=1;
nop();
}
scl=0;
nop();
sda=1;
nop();
}*/
void writex430(uchar j)
{
uchar i,temp,temp1;
temp=j;
for (i=0;i<8;i++)
{
P3OUT&=~SCL430; //SCL=0;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
//P3OUT&=~SDA430;
nop();
nop();
temp1=(temp&0x80);
if(temp1==0) P3OUT&=~SDA430;
else P3OUT|=SDA430;
/*P3OUT|=((temp&0x80)/32); //sda=temp的最高位*/
temp=temp<<1;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3OUT|=SCL430; //SCL=1;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
P3OUT&=~SCL430; //SCL=0
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3OUT|=SDA430; //SDA=1
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
/*uchar readx()
{
uchar i,j,k=0;
scl=0;
nop();
sda=1;
for (i=0;i<8;i++)
{
nop();
scl=1;
nop();
if (sda==1) j=1;
else j=0;
k=(k<<1)|j;
scl=0;
}
nop();
return(k);
}*/
uchar readx430()
{
uchar i,j,k=0;
P3OUT&=~SCL430; ///SCL=0;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3DIR&=~SDA430; //SDA为输入状态
for (i=0;i<8;i++)
{
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3DIR|=SDA430; //****************************************
P3OUT|=SCL430+SDA430; //SCL=1;
nop();
nop();
P3DIR&=~SDA430; //SDA为输入状态
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
if((P3IN&SDA430)==0) j=0;
else j=1;
k=(k<<1)|j;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3OUT&=~SCL430; //SCL=0;
}
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3DIR|=SDA430; //SDA为输出状态
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
return(k);
}
/*void clock()
{
IC_error=0;
scl=1;
nop();
while ((sda==1)&&(IC_error<255))IC_error++;
scl=0;
nop();
}*/
////////////////////////////////////////////////////////////////////////////////
void clock430()
{
P3DIR&=~SDA430; //SDA为输入状态
IC_error=0x00;
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3DIR|=SDA430; //****************************************
P3OUT|=SCL430+SDA430; //SCL=1;
nop();
nop();
P3DIR&=~SDA430; //SDA为输入状态
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
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();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -