由于无法通信,认真用示波器观察输出波形,发现数据输入线上确实是出现了高电平,但是AVR单片机死活就当没看见,部分代码如下:
CEH = 0;
//
MISO = 1;
for(i=0;i<8;i++)
{
MOSIH = 0;
//
MISO = 0;
if(byte&0x80)
{
MOSIH = 1;
}// output 'byte', MSB to MOSIH
// 从MOSIH脚输出,从高位到低位.当BYTE 最高位为1时逻辑运算为1,输出1.运算为0时输出0
_NOP();
byte = (byte << 1); // shift next bit into MSB..
// 左移1位.将低位向高位转移.
SCKH = 1; // Set SCKH high..
// if( MISO )
// {
byte |=MISOH;
// }//byte=byte|MISO capture current MISO bit
// 从MISO 中读出状态位存入BYTE中.
//
_NOP();
SCKH = 0;
// ..then set SCKH low again
}
Data_High =0;
Data_High = byte;
//
byte=0x84;
for(i=0;i<8;i++)
{
MOSIH = 0; // output 'byte', MSB to MOSIH
// 从MOSIH脚输出,从高位到低位.当BYTE 最高位为1时逻辑运算为1,输出1.运算为0时输出0
byte = (byte << 1); // shift next bit into MSB..
// 左移1位.将低位向高位转移.
SCKH = 1; // Set SCKH high..
_NOP();
if(MISOH)
{
byte =byte+ 1;
}//byte=byte|MISOH capture current MISOH bit
// 从MISOH 中读出状态位存入BYTE中.
_NOP();
SCKH = 0;
// ..then set SCKH low again
}
//
Data_Low = byte;
Data_Low = 0x46;
CEH = 1;
求大神指导 |