×
单片机 > 单片机程序设计 > 详情

51单片机的串口收发通信C语言程序

发布时间:2020-06-15 发布时间:
|
#include   
#include   
#include  
#define uchar   unsigned    char 
#define uint    unsigned    int  
#define ulong   unsigned    long 
#define ushort  unsigned    short 
#define MAX_DATA_LENGTH     32  
typedef struct//定义数据发送包 
    uchar head;//包头 
    uchar length;//数据长度 
    uchar cmd;//命令 
    uchar sData[6];//数据 
    uchar crc;//校验 
    uchar end;//包尾 
} Packet,*PT; 
typedef struct//定义接收缓冲区 
    uchar iCnt; 
    uchar sData[MAX_DATA_LENGTH]; 
} RecvBuf,*RB; 
void SendD(PT addrBuf,uint cnt);//定义发送函数 
void Sleep(uint ms);//定义延时子程序 
void init();//C51初始化程序 
bit Judge(RB addrBuf);  
void Crc(PT addrBuf);
Packet  pT;   
RecvBuf rB;   
void main()   
{   
    memset(&pT,0x00,MAX_DATA_LENGTH+5);   
    memset(&rB,0x00,MAX_DATA_LENGTH+1);   
    pT.head=0x02;   
    pT.length=0x0b;   
    pT.cmd=0x44;   
    pT.end=0x03;   
    sprintf(pT.sData,"%s","080327");   
    pT.crc=0x056;   
    init();   
    while(1)   
    {   
       Sleep(10000);   
    }   
}   
void serial(void) interrupt 4//定义串行口中断处理子程序   
{   
    ES=0;   
    while(RI)   
    {   
        rB.sData[rB.iCnt]=SBUF;   
        rB.iCnt++;   
        RI=0;   
    }   
    if(Judge(&rB))   
    {   
        memset(&rB,0x00,MAX_DATA_LENGTH+1);   
        SendD((uchar*)&pT,pT.length);   
    }   
    ES=1;   
}   
bit Judge(RB addrBuf)   
{   
    if(addrBuf->sData[0]==0x02&&addrBuf->sData[addrBuf->sData[1]-1]==0x03)   
        return 1;   
    else   
        return 0;   
}   
void init()//完成51初始化工作   
{   
    TMOD=0x20;//初始化51   
    TH1=0xfd;   
    TL1=0x0Fd;   
    TR1=1;   
    SCON=0x50;   
    PCON=0x00;   
    EA=1;   
    ES=1;      
}   
void SendD(uchar *addrBuf,uchar cnt)   
{   
    int i=0;   
    T0=0;   
    while(++i<=cnt)   
    {   
        SBUF=addrBuf[i-1];    
        while(!TI);   
        TI=0;   
    }              
}   
void Sleep(uint ms)//定义延时子程序   
{   
    int i,j;   
    for(i=0;i 
        for(j=0;j<10;j++);   
}  

关键字:51单片机  串口收发通信  C语言程序 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法