📄 communicate.h
字号:
#include "reg52.h"
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
void init_timer1(void);
void transmit(uchar a[]); //send string--it is ok
/*extern void send_char_com(unsigned char ch);
extern void send_sting_com(unsigned char *str);send string--it is ok */
void com_delay(uint n);
unsigned char str_send[]="The string you want to send"; //add the string here
unsigned char end[]="\r\n";
extern char count=0;
extern uint xdata RxBuf[30]={0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30};
extern unsigned int bai[4];
extern unsigned int shi[4];
//--------------------中断服务程序--------------------
//****************************************************
void init_timer1(void)
{
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x21; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x00; //SMOD=0;
// TH1 = 0xA0; //Baud:300 fosc=11.0592MHz 降低波特率可以增加可靠性和传输距离
TH1 = 0xFD; //Baud:9600 fosc=11.0592MHz
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1; // timer 1 run
}
//----------------------字符发送程序-----------------
///////////////////////////////////////////////////////////////////////
void transmitONE(unsigned int i)
{
SBUF=i+0x30; //把数据发至SBUF寄存器,再发送出去
while(TI!=1);//等待发送完毕
{ TI=0;}//发送完成,将TI清零
count=0; //发送完毕,准备接收
}
//----------------------字符串发送程序该程序占用的空间更少-----------------
///////////////////////////////////////////////////////////////////////
void transmit(uchar a[])
{ uchar i;
uchar lenth;
lenth=strlen(a);
for(i=0;i<lenth;i++)
{
SBUF=a[i]; //把数据发至SBUF寄存器,再发送出去
while(TI!=1);//等待发送完毕
{ TI=0;}//发送完成,将TI清零
}
// count=0; //发送完毕,准备接收
}
/*
void send_char_com(unsigned char ch)
{
SBUF=ch; //发送一个字符到串口
while(TI==0); //等待串口发送完毕
TI=0;
}
void send_sting_com(unsigned char *str)
//----------------------字符串发送程序-----------------
{ unsigned int k=0;
do
{
send_char_com(*(str+k));
k++;
}
while(k<strlen(str));
count=0;
}
*/
//--------------------中断服务程序--------------------
void serial() interrupt 4 //OK清零查询,GET读数查询
{
if(RI) //interrupt successfully##########################---PC---->MCU发送数据
{
unsigned char ch;
ch=0;
RI = 0;
ch=SBUF;
RxBuf[count]=ch;
count++;
if(count>31)
{
count=0;
}
if((ch=='\n')&&(RxBuf[count-2]=='\r'))
{ RxBuf[count]='\0';
count=0;
}
/*
if((receive[0]=='i')&&(receive[1]=='n')&&(receive[2]=='q'))
{
//transmit(ok);
count=0;
for(i=0;i<6;i++) receive[i]=0;
}
else if ((receive[0]=='g')&&(receive[1]=='e')&&(receive[2]=='t'))
{
senddata();
count=0;
for(i=0;i<6;i++) receive[i]=0;
}
if(count==8)
{
count=0;
LCD_write_char(0x01,0); //显示清屏
LCD_write_string(0,0,xianshi1);
delay_nms(1000);
}
*/
}
else
{
//com_delay(1);
TI=0; //once it interrupted ,clear the flag!!##########################---MCU---->PC发送数据
com_delay(1);
transmitONE(RxBuf[0]);
transmitONE(RxBuf[1]);
transmitONE(RxBuf[2]);
transmitONE(RxBuf[3]);
transmitONE(RxBuf[4]);
transmitONE(RxBuf[5]);
transmitONE(RxBuf[6]);
transmitONE(RxBuf[7]);
transmit(str_send);
// send_sting_com(str_send);
// send_sting_com(end);
transmit(end);
}
}
//------------communicate---delay---function-------------
void com_delay(uint n)
{
uint i;
while(n--)
{
for(i=0;i<30;i++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -