打印
[学习资料]

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

[复制链接]
828|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zljiu|  楼主 | 2019-6-21 13:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include<pic.h>
#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;                //开第一外设中断       
}



使用特权

评论回复
沙发
zljiu|  楼主 | 2019-6-21 13:10 | 只看该作者
void interrupt SerialService(void)        //接收中断
{
        if(RCIE&&RCIF)
        {
                RCIF=0;        //清零接收完成标志位
                rtemp=RCREG;        //读接收缓冲区
                sflag=1;
        }
}


使用特权

评论回复
板凳
zljiu|  楼主 | 2019-6-21 13:10 | 只看该作者
void main(void)
{
        SerialInit();
        while(1)
        {
                if(sflag==1)
                {
                        RCIE=0;        //发送前关闭接收中断允许位
                        sflag=0;
                        TXREG=rtemp;        //数据送发送缓冲区
                        while(!TXIF);        //等待发送完成,众想教程中查询的是TRMT,并且发完后未清零TRMT
                        TXIF=0;                //清零发送完成标志位
                        RCIE=1;                //发送完成开启接收中断允许位
                }
        }
}

使用特权

评论回复
地板
zljiu|  楼主 | 2019-6-21 13:10 | 只看该作者

使用特权

评论回复
5
mjs0528| | 2019-10-6 20:02 | 只看该作者
感谢分享,感谢楼主!!!

使用特权

评论回复
6
wahahaheihei| | 2019-10-7 07:49 | 只看该作者
这种写法,在今年已经OUT了,都是流行用MCC了。

使用特权

评论回复
7
wahahaheihei| | 2019-10-7 08:21 | 只看该作者
貌似Proteus就支持PIC的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

3322

帖子

3

粉丝