📄 comm_slave.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 + -