📄 430f7289.c
字号:
#include<REG52.h>
//#include<in430.h>
#define uchar unsigned char
#define uint unsigned int
sbit cs=P2^0;
sbit clk=P2^1;
sbit dio=P2^2;
sbit key=P2^3;
uint re_buf,send_buf,decimal;
uint com_data;
// P2DIR|=BIT0+BIT1;
// sbit mos_bit=com_data^7;
// sbit low_bit=com_data^0;
/*
void reset(void);
void zlg7289_send(uchar send_buf);
void uchar zlg7289_receive(void);
void main()
{
P2DIR|=BIT0+BIT1;
// EA=1;
// EX0=1;
P2IES&=~BIT3;
P2IE|=BIT3;
_EINT();
reset();
for(;;);
//while(1);
}
*/
void delay_25ms()
{
uint a,b;
for(a=0;a<0x64;a++)
{for(b=0;b<0xfa;b++)_NOP();
}
}
void delay_25us()
{
uint i;
for (i=0;i<0x19;i++)_NOP();
}
void delay_8us()
{
uint i;
for(i=0;i<0x8;i++)_NOP();
}
void zlg7289_send(uchar send_buf)
{
uchar i;
//P2DIR|=0x07;
P2DIR|=0x04;
com_data=send_buf;
P2OUT&=0x0fc;
//clk=0;
//cs=0;
delay_25us();
for(i=0;i<8;i++)
{
delay_8us();
if(com_data&0x80)
P2OUT|=0x04;
//dio=1;
else
P2OUT&=0x0fb;
//dio=0
//dio=mos_bit;
_NOP();
_NOP();
P2OUT|=0x02;
//clk=1;
delay_8us();
com_data=com_data<<1;
P2OUT&=0x0fd;
// clk=0;
}
P1OUT&=0x0fb;
//dio=0;
}
uchar zlg7289_receive()
{
uchar i;
P2DIR&=0x0fb;
P2OUT|=0x04;
//dio=1;
delay_25us();
for(i=0;i<8;i++)
{
com_data=com_data<<1;
P2OUT|=0x02;
// clk=1;
delay_8us();
if(P2IN&0x04)
com_data|=0x01;
else
com_data&=0x0fe;
//low_bit=dio;
_NOP();
_NOP();
P2OUT&=0x0fd;
//clk=0;
delay_8us();
}
re_buf=com_data;
P2OUT&=0x0fb;
//dio=0;
return(re_buf);
}
void reset(void)
{
//cs=1;
// key=1;
//dio=1;
//delay_25ms();
P2OUT|=0x0fd;
zlg7289_send(0xa4);
//cs=1;
P2OUT|=0x01;
}
//
// void int0_srv(void)interrupt 0 using 1
// interrupt void Port2(void)
void Chuli()
{
P2DIR|=BIT0;
if(P2IFG&BIT3)
{
zlg7289_send(0x15);
zlg7289_receive();
P2OUT|=0x01;
// cs=1;
zlg7289_send(0xa1);
zlg7289_send(0xa1);
P2OUT|=0x01;
//cs=1;
decimal=re_buf/10;
re_buf=re_buf%10;
zlg7289_send(0x81);
zlg7289_send(decimal);
P2OUT|=0x01;
// cs=1;
zlg7289_send(0x80);
zlg7289_send(re_buf);
P2OUT|=0x01;
// cs=1;
zlg7289_send(0x88);
zlg7289_send(0x0fc);
P2OUT|=0x01;
while(!(P2IN&BIT3));
}
// cs=1;
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1&=~(XT2OFF+XTS);
BCSCTL2|=SELM1;
BCSCTL2&=~SELS;
P2DIR|=BIT0+BIT1;
// EA=1;
// EX0=1;
// P2IES&=~BIT3;
// P2IE|=BIT3;
// _EINT();
reset();
P2DIR|=~BIT3;
// zlg7289_send(0x80);
// zlg7289_send(8);
while(1)
{
if(!(P2IN&BIT3))Chuli();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -