经过无数次调试 终于实现了单片机1通过nrf2401无线控制单片机2 控制两个电机,可是为什么能成功完全不明白 请大神指教 程序 void main() { uchar i, sdat; 此处声明变量,就无法通过单片机1无线控制 但是在开头声明此两个全局变量,把驱动电机子程序替换这个子程序的函数 就能实现单片机1的无线控制了 ,但是有个新问题,每个数据只能按一次,电机执行一次,再按就没有反应了,单片机复位后又可以每个键控制一遍,,,,,求大神分析分析啊 while(NRF24L01_Check()); //检测到nrf2401才执行下一步 NRF24L01_RT_Init(); while(1) { if(NRF_IRQ==0) // 如果接收到数据 { if(NRF24L01_RxPacket(rece_buf)==0)//如果接受数据完成 { if(rece_buf[1]==1) //如果收到数据是1 { led=0; delay(100); led=1; //led等闪一下 HC595SendData(0x18);驱动电机正转的子程序 }}} delay(100);}} 此程序只有用电脑发送数据才能将电机驱动 单片机1发射不行 void HC595SendData(uchar sdat) //L293D·驱动电机正转的子程序 { uchar i; for(i=0;i<8;i++) { SER = sdat>>7; sdat= sdat<<1; SCK = 1; _nop_(); _nop_(); SCK = 0; RCK=1; _nop_(); _nop_(); RCK=0; } } 经过改了程序 删除 HC595SendData(0x18);驱动电机正转的子程序 在void main()主函数外声明全局变量就可以了 |
硬件应该没有问题,LED亮了。应该查下字符有没有对上,电脑发的字符和单片机发送的字符,最好查看下发送的ascii码。 |