您的位置:首页 > 其它

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

2012-07-18 18:27 155 查看
#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;		//开第一外设中断
}
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;		//发送完成开启接收中断允许位
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: