STC向单片机发送数据小程序(C语言)
#include"stc12c5a60s2.h"
#define uchar unsigned char;
void initiate(void);
void check_zero(void);
void time0_on(void);
void send_char(void);
uchar shu,t,n=1,i=0;
uchar code value[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
//**************************************************************
void main()
{
initiate();
for(;;)
check_zero();
}
//****************************************************************
void initiate(void)
{
TMOD=0X21; //定时器T1溢出提供波特率,定时器T0定时。
TL1=0XFD; //fosc=11.0592mHz,波特率9600bps对应初值
TH1=0XFD;
PCON=0X00; //波特率不加倍。
SCON=0X50; //串口工作方式一,允许接受。
ET1=0;
EA=1;
TR1=1;
}
//*****************************************************************
void check_zero(void)
{
if(RI==1)
{
if(SBUF==0)
{
RI=0;
SCON=0X40;
time0_on();
}
else
{RI=0;}
}
else {;}
}
//*******************************************************************
void time0_on(void)
{
TL0=0XAF; //定时50ms对应初值
TH0=0X3C;
TR0=1;
ET0=1;
}
//***********************************************************************
void time0(void) interrupt 1 using 3
{
TL0=0XAF; //定时50ms对应初值
TH0=0X3C;
n++;
if(n==20)
{
n=1;
send_char();
}
}
//**********************************************************************
void send_char(void)
{
SBUF=value[i];
ff:if(TI==1) {TI=0;}
else goto ff;
i++;
if(i==16) {i=0;}
}