receive.c

来自「一个通用的RS232串口程序」· C语言 代码 · 共 54 行

C
54
字号
//*******************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 + =
减小字号Ctrl + -
显示快捷键?