📄 msp430ywqzkok.c
字号:
sound_s();
delay(50);
/*addnumbf = 0;*/ //没用上
/***********************/
//测试结束,存储数据
//while (card_sw == 1)//是否插卡
while ((P1IN&BIT2) != 0)
{
FK_error: disp_lcd(0x0d,0x0c,0x0c,0x0d,0);
//EA = 0;
_DINT();
sound_s();
//EA = 1;
_EINT();
delay(255);
a++;
if (a == 5)
{
disp_lcd(0,0,0,0,0);
delay(255);
delay(255);
delay(255);
goto e_lop;
}
}
IC_error = 0x00;
a = IC_read(0x00);
if (IC_error == 0xff)
{
sound_s();
goto FK_error; //卡查反
}
a = (BCD[6]<<4)+BCD[7];
IC_write(SG_save1,a);
delay(20);
a = (BCD[4]<<4)+BCD[5];
IC_write(SG_save0,a);
delay(20);
IC_write(SG_flag,1);
disp_end: /*test_led = 1;*/
P5OUT&=~BIT2;
/*incard_led = 1;*/
P5OUT&=~BIT0;
/*testend_led = 0;*/
P5OUT|=BIT3;
sound_s();
//while(card_sw == 0)
while((P1IN&BIT2) == 0)
{
a = IC_read(SG_save0);
BCD[4] = a>>4;
a = a<<4;
BCD[5] = a>>4;
a = IC_read(SG_save1);
BCD[6] = a>>4;
a = a<<4;
BCD[7] = a>>4;
disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],3);
i = 0;
//while(card_sw == 0&&i != 0xffff)
while((P1IN&BIT2) == 0&&i != 0xffff)
i++;
//if(card_sw == 1) (P1IN&BIT2)
if((P1IN&BIT2) != 0)
break;
a = IC_read(TZ_save0);
BCD[4] = a>>4;
a = a<<4;
BCD[5] = a>>4;
a = IC_read(TZ_save1);
BCD[6] = a>>4;
a = a<<4;
BCD[7] = a>>4;
disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],3);
i = 0;
//while(card_sw == 0&&i != 0xffff)
while((P1IN&BIT2) == 0&&i != 0xffff)
i++;
//if(card_sw == 1)
if((P1IN&BIT2) != 0)
break;
}
//------------------
a = IC_read(NUM0);
i = a;
i = i<<8;
a = IC_read(NUM1);
dis[0] = i+a;
//------------------
/*incard_led = 1;*/
P5OUT&=~BIT0;
/*prep_led = 1;*/
P5OUT&=~BIT1;
/*test_led = 1;*/
P5OUT&=~BIT2;
//testend_led = 0;
P5OUT|=BIT3;
a = 0;
lop: //while(card_sw == 0);
while((P1IN&BIT2) == 0);
delay(15);
//if(card_sw == 0)
if((P1IN&BIT2) == 0)
goto lop;
delay(255);
delay(255);
delay(255);
delay(255);
delay(255);
delay(255);
delay(255);
delay(255);
delay(255);
//while(card_sw == 0)
while((P1IN&BIT2) == 0)
{
a = IC_read(NUM0);
i = a;
i = i<<8;
a = IC_read(NUM1);
i = i+a;
if(i == dis[0])
{
//testend_led = 1;
P5OUT&=~BIT3;
disp_lcd(0,0,0,0,0);
goto next_test;
}
}
}
e_lop: delay(10);
/*incard_led = 0;*/
P5OUT|=BIT0;
/*prep_led = 1;*/
P5OUT&=~BIT1;
/*test_led = 1;*/
P5OUT&=~BIT2;
/*testend_led = 1;*/
P5OUT&=~BIT3;
disp_lcd(0x0d,0x0d,0x0d,0x0d,0);
//}
}
}
uint BCD_HEX(void)
{
uint dat;
uint i,dd;
dd=1000;dat=0;
for (i=4;i<8;i++)
{
dat+=dd*BCD[i];
dd/=10;
}
return(dat);
}
void init(void)
{
//P1 = 0xff;
/*sound = 0;*/
P5OUT&=~BIT7; //关闭蜂鸣器
/*incard_led = 1;*/
P5OUT&=~BIT0;
/*prep_led = 1;*/
P5OUT&=~BIT1;
/*test_led = 1;*/
P5OUT&=~BIT2;
/*testend_led = 1;*/
P5OUT&=~BIT3;
IC_error = 0x00;
data_int = get100da();
//TMOD = 0x21;
//EA = 1;
_EINT();
}
void disp_lcd(uchar d1,uchar d2,uchar d3,uchar d4,uchar dot)
{
uchar disp1[5],i1,j1,a1;
disp1[0] = 0xff;
disp1[1] = ledtab[d1];
disp1[2] = ledtab[d2];
disp1[3] = ledtab[d3];
disp1[4] = ledtab[d4];
switch(dot)
{
case 1:
disp1[1] = leddottab[d1];
break;
case 2:
disp1[2] = leddottab[d2];
break;
case 3:
disp1[3] = leddottab[d3];
break;
case 4:
disp1[4] = leddottab[d4];
break;
}
for (i1=0;i1<5;i1++)
{
a1 = disp1[i1];
for (j1=0;j1<8;j1++)
{ P5OUT&=~BIT5; // 先将第五位清零
P5OUT|=((al&0x01)*32); // 使最低位0位移到第5位
a1 = a1>>1;
/*dat = CY;*/
/*clk = 1;
clk = 0;
clk = 1;*/
P5OUT|=BIT4;
P5OUT&=~BIT4;
P5OUT|=BIT4;
}
}
}
/*uint getdata(void)
{
uchar i;
uint b;
MAX197 = 0x40;
for(i=0;i<5;i++);
data_selet = 1;
b = MAX197<<8;
data_selet = 0;
b = b+MAX197;
return b;
}*/
uint getdata(void)
{
uint b;
while ((ADC12IFG & ADC12BUSY)==0);
b = ADC12MEM0; //将转换的数据送到b
ADC12CTL0 |= ADC12SC; // Start conversion
return b;
}
unsigned long get100da(void)
{
uchar i;
unsigned long j = 0;
for (i=0;i<100;i++)
j = j+getdata();
j = j/100;
return j;
}
/*void get_data(void)
{
uchar i;
P2 = 0xc0;
while(1)
{
next: while(RI == 0);
RI = 0;
while(SBUF == 0x40)
for(i=0;i<3;i++)
{
while(RI == 0);
RI = 0;
comdata[i] = SBUF;
}
if (comdata[0] == 0x40)
goto next;
if (comdata[1] == 0x40)
goto next;
if (comdata[2] == 0x40)
goto next;
goto end;
}
P2 = 0xff;
end:;
}*/
void HEX_BCD(unsigned long dd)
{
unsigned long div;
uchar i;
div=10000000;
for (i=0;i<8;i++)
{
BCD[i]=dd/div;
dd%=div;
div/=10;
}
}
void HEX_BCD4(uint dd)
{
uint div;
uchar i;
div=10000;
for (i=3;i<8;i++)
{
BCD[i]=dd/div;
dd%=div;
div/=10;
}
}
//////////////////////////////////
void delay(uchar ti)
{
uchar i;
uchar j;
for (i=0;i<ti;i++)
for (j=0;j<255;j++);
}
void sound_s(void)
{
/*sound = 1;*/
P5OUT|=BIT7; //打开蜂鸣器
delay(200);
/*sound = 0;*/
P5OUT&=~BIT7; //关闭蜂鸣器
}
void delay1(uchar x)
{
uint i;
for(i=0;i<x;i++);
}
void nop()
{
}
/*void start()
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
scl=0;
nop();
}*/
void start430()
{
P3DIR|=SCL430+SDA430; //将SCL SDA定义为输出
P3OUT|=SDA430; //将SDA置1
nop();
nop();
P3OUT|=SCL430; //SCL=1
nop();
nop();
P3OUT&=~SDA430; //SDA=0;
nop();
nop();
P3OUT&=~SCL430; //SSCL=0
nop();
nop();
}
/*void stop()
{
sda=0;
nop();
scl=1;
nop();
sda=1;
nop();
}*/
void stop430()
{
P3OUT&=~SDA430; //SDA=0
nop();
nop();
P3OUT|=SCL430; //SCL=1
nop();
nop();
P3OUT|=SDA430; //SDA=1
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;
temp=j;
for (i=0;i<8;i++)
{
P3OUT&=~SCL430; //SCL=0;
nop();
nop();
P3OUT&=~SDA430;
P3OUT|=(temp&0x80)/32; //sda=temp的最高位
temp=temp<<1;
nop();
nop();
P3OUT|=SCL430; //SCL=1;
nop();
nop();
}
P3OUT&=~SCL430;
nop();
nop();
P3OUT|=SCL430;
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();
P3DIR&=~SDA430; //SDA为输入状态
for (i=0;i<8;i++)
{
nop();
nop();
P3OUT|=SCL430; //SCL=1;
nop();
nop();
if((P3IN&SDA430)==0) j=0;
else j=1;
k=(k<<1)|j;
P3OUT&=~SCL430; //SCL=0;
}
nop();
nop();
P3DIR|=SDA430; //SDA为输出状态
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;
P3OUT|=SCL430; //SCL=1
nop();
nop();
while(((P3IN&SDA430)!=0)&&(IC_error<255)) IC_error++;
P3OUT&=~SDA430; //SDA=0
nop();
nop();
P3DIR|=SDA430; //SDA为输出状态
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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -