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

PIC单片机(PIC16F877A)串行收发程序

发布时间:2020-06-01 发布时间:
|

#include  

#define uchar unsigned char   

uchar rtemp,sflag;  

void SerialInit(void)  

{  

    TXSTA=0x24; //开启发射使能位、高波特率,TRMT初始值可0可1  

    RCSTA=0x90; //开启串口、连续接收、  

    SPBRG=0x19; //4M晶振,波特率9600,则SPBRG初值为25  

    RCIE=1;     //开启串口接收完成中断  

    GIE=1;      //开全局中断  

    PEIE=1;     //开第一外设中断     

}  

void interrupt SerialService(void)  //接收中断  

{  

    if(RCIE&&RCIF)  

    {  

        RCIF=0; //清零接收完成标志位  

        rtemp=RCREG;    //读接收缓冲区  

        sflag=1;  

    }  

}  

void main(void)  

{  

    SerialInit();  

    while(1)  

    {  

        if(sflag==1)  

        {  

            RCIE=0; //发送前关闭接收中断允许位  

            sflag=0;  

            TXREG=rtemp;    //数据送发送缓冲区  

            while(!TXIF);   //等待发送完成,众想教程中查询的是TRMT,并且发完后未清零TRMT  

            TXIF=0;     //清零发送完成标志位  

            RCIE=1;     //发送完成开启接收中断允许位  

        }  

    }  

}  

关键字:PIC单片机  PIC16F877A  串行收发 

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

热门文章 更多
51单片机中断源的扩展方法