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

📄 comm_slave.c

📁 本人s12的一部分机器人巡线程序
💻 C
字号:
#define NOP01 asm(nop)
#define NOP02 {asm(nop);asm(nop);}
#define NOP03 {asm(nop);asm(nop);asm(nop);}
#define NOP04 {asm(nop);asm(nop);asm(nop);asm(nop);}
#define NOP05 {asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);}
#define NOP06 {asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);}
#define NOP07 {asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);}
#define NOP08 {asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);}
#define NOP09 {asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);}
#define NOP10 {asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);}

uchar timeout;//设置超时跳出发送
BOOLEAN Right_speed_sent(uchar R_Speed,uchar directionRR)
  {
      timeout=0;
      PORTK|=16;//PORTK_BIT4=1  //使从机产生中断
      PORTB=directionRR; //发送方向
      DDRJ|=2;//DDRJ_DDRJ1=1 设置输出模式
      PTJ&=0xFD;//PTJ_PTJ1=0设置引脚电平为低
      NOP10;
      NOP10;
      PTJ|=2;//PTJ_PTJ1=1 输出高电平让单片机读取数据
      PORTK&=0xEF;//PORTK_BIT4=0 发出第一个数据标志位 ,从机的P3_0读取
      while(((PORTK&32)!=0)&&(timeout<200)){timeout++;}//PORTK_BIT5!=0	读取第一个数据结束的标志位,从机的P3_1发送   
	    PORTB=R_Speed;//发送速度值      
 	    PORTK|=16; //发出第二个数据标志位 ,从机的P3_0读取
	    while(((PORTK&32)!=32)&&(timeout<200)){timeout++;}//PORTK_BIT5!=1	  // 读取第二个数据结束的标志位,从机的P3_1发送	    
      return(TRUE);
     }
 //---------------------------------------------------------------------------//
           //---------------给一个从机发送两个数据----------------------//
BOOLEAN Left_speed_sent(uchar L_Speed,uchar directionLL)
     {
      timeout=0;
      PORTK|=16;//Bit4=1
      PORTB=directionLL;
      DDRJ|=1;//DDRJ_DDRJ0=1
      PTJ&=0xFE;// PTJ_PTJ0=0
      NOP10;
      NOP10;
      PTJ|=1;//PTJ_PTJ0=1
      PORTK&=0xEF;//PORTK_BIT4=0             //发出第一个数据标志位 ,从机的P3_0读取
      while(((PORTK&32)!=0)&&(timeout<200)){timeout++;}//PORTK_BIT5!=0	  //读取第一个数据结束的标志位,从机的P3_1发送
	    PORTB=L_Speed;
	    PORTK|=16; //PORTK_BIT4=1;             //发出第二个数据标志位 ,从机的P3_0读取
	    while(((PORTK&32)!=32)&&(timeout<200)){timeout++;}//PORTK_BIT5!=1	  // 读取第二个数据结束的标志位,从机的P3_1发送	    
      return(TRUE);
     }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -