STC向单片机发送数据小程序(C语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#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;}
}