经过无数次调试 终于实现了单片机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()主函数外声明全局变量就可以了
|