# include & lt; Reg52. H>
//MCU: stc8f2k08s2 movement module: http://www.mpc000.com
SFR P0M1=0 x93;
SFR P0M0=0 x94;
SFR P1M1=0 x91;
SFR P1M0=0 x92;
SFR P2M1=0 x95;
SFR P2M0=0 x96;
SFR P3M1=0 xb1;
SFR P3M0=0 sets;
SFR P4M1=0 xb2;
SFR P4M0=0 xb4;
SFR P5M1=0 xc9;
SFR P5M0=0 xca;
SFR P6M1=0 XCB;
SFR P6M0=0 XCC;
SFR P7M1=0 xe1;
SFR P7M0=0 xe2;
SFR P5=0 xc8;
SFR SPSTAT=0 XCD;
SFR SPCTL=0 xce;
SFR SPDAT=0 XCF;
SFR IE2=0 xaf;
SFR AUXR=0 x8e;
SFR T2H=0 xd6;
SFR T2L=0 xd7;
SFR P_SW2=0 xba;
# define CKSEL (* (unsigned char volatile xdata *) 0 xfe00)
# define CKDIV (* (unsigned char volatile xdata *) 0 xfe01)
# define IRC24MCR (* (unsigned char volatile xdata *) 0 xfe02)
# define XOSCCR (* (unsigned char volatile xdata *) 0 xfe03)
# define IRC32KCR (* (unsigned char volatile xdata *) 0 xfe04)
16000000 ul//# define FOSC using external 16 m crystals
# define BRT (65536 - FOSC/115200/4)//define 115200 baud rate
Sbit b1=P5 ^ 5;
Sbit led=P3 ^ 5;
Sbit cs3=P3 ^ 3;
Sbit cs2=P3 ^ 2;
Sbit cs1=p ^ 2;
Sbit SCK=P1 ^ 5;
Sbit in P1=^ 4;
P1 sbit out=^ 3;
# define SPI3_CSHIGH cs3=1//cs3
# define SPI3_CSLOW cs3=0
# define SPI2_CSHIGH cs2=1//cs2
# define SPI2_CSLOW cs2=0
# define SPI1_CSHIGH cs1=1//cs1
# define SPI1_CSLOW cs1=0
# define SPI_SCKHIGH SCK=1//SCK
# define SPI_SCKLOW SCK=0
# define SPI_OUTHIGH out=1
# define SPI_OUTLOW out=0//MOSI
# define SPI_IN in//MISO
Unsigned char inbuf [50].
Unsigned char b1_state=0;
Void initial ()
{
P1M1=0;
P1M0=0 x2c;//pin analog communication, MOSI, SCK, CS is set to push pull output
SPI1_CSHIGH;//CS when not in use as high
SPI2_CSHIGH;
SPI3_CSHIGH;
SPI_SCKLOW;//SCK idle state must be as low level,
}
Void init_uart ()
{
SCON=0 x50;
T2L=BRT;
T2H=BRT & gt;> 8;
AUXR=0 x15;
}
/*
A serial port to send a byte,
*/
Void USART_Txbyte (unsigned char I)
{
SBUF=I;
While (TI==0);
TI=0;
}
/*
A serial port to send a string of data,
*/
Void USRAT_transmit (unsigned char * fdata, unsigned char len)
{
Unsigned char I;
for(i=0; i
USART_Txbyte (fdata [I]);
}
}
Void delay_nus (unsigned long n)
{
Unsigned long j;
While (n -)
{
j=1;
While (j);
}
}
//delay n ms
Void delay_nms (unsigned long n)
{
While (n -)
Delay_nus (1000);
}
/*
The function name: SPI_SendData
Function: software simulation SPI communication sending and receiving an 8-bit byte data,
If you want to use hardware SPI, single chip microcomputer as the host, mpc014 from machine, CPHA=0, CPOL=0, high in the former, SPI data width of 8 bits,
Idle state under SCM SCK pin must be a low level, each instruction will buy low, CS pin before sending the instruction to send after the completion of the CS must be high,
Need to have the time interval between each instruction, recommend delay more than 1 ms,
*/
Unsigned char SPI_SendData (unsigned char outdata)
{
Unsigned char RecevieData=https://bbs.csdn.net/topics/0, I;
SPI_SCKLOW;
//_nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ ();
for(i=0; i<8; I++)
{
SPI_SCKLOW;
_nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ ();
If (outdata& 0 x80)
{
SPI_OUTHIGH;
}
The else
{
SPI_OUTLOW;
}
Outdata<=1;
_nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ ();
SPI_SCKHIGH;//
RecevieData & lt; <=1;
If (SPI_IN)
{
RecevieData |=1.
}
_nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ ();
SPI_SCKLOW;
}
Return RecevieData;
}
/*
The function name: enabled_cs
Function: mpc013, mpc014 serial SPI motion control module for CS can correspond to the chip module to
Parameters:
Cardno card number
Different pin to control chip MCU CS feet, so that multiple chips are used, connection module
*/
Void enabled_cs (unsigned char cardno)
{
If (cardno==1)
{
SPI1_CSLOW;
}
If (cardno==2)
{
SPI2_CSLOW;
}
If (cardno==3)
{
SPI3_CSLOW;
}
}
/*
The function name: disabled_cs
Function: mpc013, mpc014 serial SPI motion control module ban corresponding chip module of CS feet
Parameters:
Cardno card number
Different pin to control chip MCU CS feet, so that multiple chips used, connection
*/
Void disabled_cs (unsigned char cardno)
{
If (cardno==1)
{
SPI1_CSHIGH;
}
If (cardno==2)
{
SPI2_CSHIGH;
}
If (cardno==3)
{
SPI3_CSHIGH;
}
nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull