⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receive.c

📁 一个通用的RS232串口程序
💻 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 + -