使用PIC的8位单片机上SIP口怎么发送10bit的地址
使用PIC的8位单片机上SIP口如何发送10bit的地址
如题,程序已经写出来了,并已完成调试 如下:
收发8位数据完全没问题,但是就是发10位地址的时候,不知道怎么处理,如果使用两次的
SPIPut(add1);
SPIPut(add2);
则两次发送会出现时间间隔,不符合时隙要求,哪位朋友有相关经验的,提示下呀,在线求助。。。。
------解决方案--------------------
自己用IO口模拟,不用硬件的SPI。
------解决方案--------------------
SPIPut((((BYTE)(address>>3))&0b01111111)|0x80);//1(长地址)+10bit(地址)+1bit(写)
这个发完八个,再自己添加两个触发信号不是什么难事吧?
如果觉得不和协,那可以起我还好听的名字嘛,叫什么SPIPutHAddr();
如题,程序已经写出来了,并已完成调试 如下:
收发8位数据完全没问题,但是就是发10位地址的时候,不知道怎么处理,如果使用两次的
SPIPut(add1);
SPIPut(add2);
则两次发送会出现时间间隔,不符合时隙要求,哪位朋友有相关经验的,提示下呀,在线求助。。。。
- C/C++ code
void PHYSetLongRAMAddr(WORD address, unsigned char value) { INTE = 0; //disabling the interrupt to the microcontroller 写入期间,关闭中断 MRF_CS = 0; //Pull the Chip select signal to low SPIPut((((BYTE)(address>>3))&0b01111111)|0x80);//1(长地址)+10bit(地址)+1bit(写) SPIPut((((BYTE)(address<<5))&0b11100000)|0x10); SPIPut(value); //8 bit value MRF_CS = 1; //disable chip select INTE = 1; //Interrupt status is set back to previous state }
------解决方案--------------------
自己用IO口模拟,不用硬件的SPI。
------解决方案--------------------
SPIPut((((BYTE)(address>>3))&0b01111111)|0x80);//1(长地址)+10bit(地址)+1bit(写)
这个发完八个,再自己添加两个触发信号不是什么难事吧?
如果觉得不和协,那可以起我还好听的名字嘛,叫什么SPIPutHAddr();