📄 receive.c
字号:
//*******************introduction******************************
/*下面程序主要目的是PC机向MCU发送一字符串,MCU把其中以0x55
开始以0xAA结束,连续少于五个的且中间无0x55、0xAA的字符串返回,
下面这段程序未完成若0xAA之前数大于五则这段字符不回传这个任务*/
//*************************************************************
#include <pic.h>
/////////////////////////////////////////////////
/*下面是对PIC状态字进行设置*/
__CONFIG(HS&UNPROTECT&PWRTDIS&BORDIS&WDTDIS&LVPDIS);
/////////////////////////////////////////////////
unsigned char data[10]; //接收与发送数据存取处
unsigned char in; //本次数据接收起始位置
unsigned char counter; //本次数据存储位置
unsigned char svnumber; //已存数据数
unsigned char renumber; //本次已接收数据个数
unsigned char out; //发送数的位置
unsigned char txendadd; //发送结束标志位
bit save; //数据接收状态标志位
bit send; //数据发送状态标志位
bit over; //存满一转标志位
/*下面一个函数是对各中断标志的设定*/
void initial()
{
TRISC=0x80; //RC端口RC6与RC7分别为输出与输入
TXSTA=0x24; //异步方式,高波特率,发送使能
SPBRG=0x19; //设定波特率为9600,系统时钟4MHZ
PIE1=0x30 ; //允许接收与发送中断
RCSTA=0x90; //设置连续接收数据
INTCON=0x00; //清除所有中断标志
INTCON=0xc0; //开总中断与外围设备中断
}
void main ()
{
initial();
TXREG=0;
save=0;
send=0;
in=0;
svnumber=0;
counter=0;
out=0;
while(1);
}
void interrupt uasrt(void)
{
if(RCIE&RCIF==1) //是接收中断
{
if(save==0) //未进入接收状态
{if(RCREG==0x55) //判是否为0x55
save=1; //是则进入接收态
} /**********以下是接收态***************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -