亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
AVR mega16單片機(jī)MCP2510發(fā)送程序可行,接收不可行請(qǐng)高手指教。
[打印本頁(yè)]
作者:
active12
時(shí)間:
2019-3-23 12:37
標(biāo)題:
AVR mega16單片機(jī)MCP2510發(fā)送程序可行,接收不可行請(qǐng)高手指教。
如下代碼部分只能發(fā)送,不能接收,還請(qǐng)高手指點(diǎn)。
void Spi_MasterTransmit(void)
{
#if 1
char i;
//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
if (SpiSending!=0)//有數(shù)據(jù)需要發(fā)送
{
if (McpFisrtCmm==0)//第1次發(fā)送
{
CLRCS;//SPI口基本在PB口 開(kāi)啟
NOP();
NOP();
SPDR = SpiTransData[0];
SpiSendNum=1;//指向下一地址
McpFisrtCmm=1;
}
else
{
if (SPSR & (1<<SPIF))//串行發(fā)送結(jié)束后,SPIF置位,中斷//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
{
if(SpiSendNum<SpiMaxSend)//SpiMaxSend應(yīng)比量小1 ,SpiMaxSend = 5
{
SpiReceiveData[SpiSendNum-1]=SPDR;//讀數(shù)據(jù)
SPDR = SpiTransData[SpiSendNum];//寫(xiě)數(shù)據(jù)
SpiSendNum++; //下一筆數(shù)據(jù)
//SpiRcvNum = 0;//讀的時(shí)候?qū)懙臄?shù)據(jù)筆數(shù)為0
}
else
{
SpiReceiveData[SpiSendNum-1]=SPDR;//讀數(shù)據(jù) //SpiSendNum 需要一個(gè)初始值才行。
// SpiReceiveData1[SpiRcvNum++]=SPDR;
//相應(yīng)指示
SpiMaxSend=0;//傳輸完成
SpiSending=0;
McpFisrtCmm=0;//清除標(biāo)示
SETCS;//停止數(shù)據(jù)發(fā)送
}
}
}
}else
{
CLRCS;//SPI口基本在PB口 開(kāi)啟
if ((SPSR & (1<<SPIF)))//串行發(fā)送結(jié)束后,SPIF置位,中斷//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
{
//Set_Bit(PORTB, 3);
ImitShootFlag = 1;
//SPDR = 0XFF;
MCP2510Read(RXB0DLC,20);
for(i=0;i< 20;i++)
SpiReceiveData1[i]=SpiTransData[i];//SPDR;
// if(SpiRcvNum > 20)
// SpiRcvNum = 0;
}
SETCS;//停止數(shù)據(jù)發(fā)送
}
#endif
#if 0
//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
if (SpiSending!=0)//有數(shù)據(jù)需要發(fā)送
{
if (McpFisrtCmm==0)//第1次發(fā)送
{
CLRCS;//SPI口基本在PB口 開(kāi)啟
NOP();
NOP();
SPDR = SpiTransData[0];
SpiSendNum=1;//指向下一地址
McpFisrtCmm=1;
}
else
{
// 對(duì) SPI 數(shù)據(jù)寄存器寫(xiě)入數(shù)據(jù)即啟動(dòng)SPI 時(shí)鐘,將8 比特的數(shù)據(jù)移入從機(jī)。
if (SPSR & (1<<SPIF))//串行發(fā)送結(jié)束后,SPIF置位,中斷//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
{
if(SpiSendNum<SpiMaxSend)//SpiMaxSend應(yīng)比量小1 ,SpiMaxSend = 5
{
ImitShootFlag = 1;
// SpiReceiveData[SpiSendNum++]=SPDR;//test
SpiReceiveData[SpiSendNum-1]=SPDR;//讀數(shù)據(jù) //應(yīng)該去掉wanwan //一去掉,SPI就不能初始化
SPDR = SpiTransData[SpiSendNum];//寫(xiě)數(shù)據(jù)
SpiSendNum++; //下一筆數(shù)據(jù)
SpiRcvNum = 0;//讀的時(shí)候?qū)懙臄?shù)據(jù)筆數(shù)為0
}
else
{
////////////////////////////////////////////////////////////
SETCS;//停止數(shù)據(jù)發(fā)送
// NOP();
// SPCR = (1<<SPE) | (0<<MSTR) | (1<<SPR0);//清零SPCR 的MSTR 位,使SPI 成為從機(jī)
// NOP();
SpiReceiveData[SpiSendNum-1]=SPDR;//讀數(shù)據(jù) //SpiSendNum 需要一個(gè)初始值才行。wanwan
// SpiReceiveData1[SpiRcvNum++]=SPDR;
// SpiReceiveData[SpiSendNum++]=SPDR;//讀數(shù)據(jù) //SpiSendNum 需要一個(gè)初始值才行。wanwan
// SpiReceiveData[SpiSendNum++]=0x55;//test
//相應(yīng)指示
SpiMaxSend=0;//傳輸完成
SpiSending=0;
McpFisrtCmm=0;//清除標(biāo)示
}
}
}
}else
{
//SETCS;//停止數(shù)據(jù)發(fā)送
//DDR_SPI = (1<<DD_MISO);
if (!(SPSR & (1<<SPIF)))//串行發(fā)送結(jié)束后,SPIF置位,中斷//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
{
//Set_Bit(PORTB, 3);
ImitShootFlag = 1;
SPDR = 0XFF;
SpiReceiveData1[SpiRcvNum++]=SPDR;
if(SpiRcvNum > 20)
SpiRcvNum = 0;
}
}
#endif
#if 0
//SPDR = cData;//啟動(dòng)數(shù)據(jù)傳輸
//while(!(SPSR&(1<<SPIF)));//等待傳輸結(jié)束,SPSR&(1<<SPIF)即1,循環(huán)內(nèi)
//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
if (SpiSending!=0)//有數(shù)據(jù)需要發(fā)送
{
if (McpFisrtCmm==0)//第1次發(fā)送
{
CLRCS;//SPI口基本在PB口 開(kāi)啟
NOP();
NOP();
SPDR = SpiTransData[0];
SpiSendNum=1;//指向下一地址
McpFisrtCmm=1;
}
else
{
// 對(duì) SPI 數(shù)據(jù)寄存器寫(xiě)入數(shù)據(jù)即啟動(dòng)SPI 時(shí)鐘,將8 比特的數(shù)據(jù)移入從機(jī)。
if (SPSR & (1<<SPIF))//串行發(fā)送結(jié)束后,SPIF置位,中斷//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
{
if(SpiSendNum<SpiMaxSend)//SpiMaxSend應(yīng)比量小1 ,SpiMaxSend = 5
{
// CLRCS;//數(shù)據(jù)發(fā)送
// NOP();
// SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR0);
// NOP();
// SpiReceiveData[SpiSendNum++]=SPDR;//test
SpiReceiveData[SpiSendNum-1]=SPDR;//讀數(shù)據(jù) //應(yīng)該去掉wanwan //一去掉,SPI就不能初始化
SPDR = SpiTransData[SpiSendNum];//寫(xiě)數(shù)據(jù)
SpiSendNum++; //下一筆數(shù)據(jù)
SpiRcvNum = 0;//讀的時(shí)候?qū)懙臄?shù)據(jù)筆數(shù)為0
}
else
{
////////////////////////////////////////////////////////////
SETCS;//停止數(shù)據(jù)發(fā)送
// NOP();
// SPCR = (1<<SPE) | (0<<MSTR) | (1<<SPR0);//清零SPCR 的MSTR 位,使SPI 成為從機(jī)
// NOP();
SpiReceiveData[SpiSendNum-1]=SPDR;//讀數(shù)據(jù) //SpiSendNum 需要一個(gè)初始值才行。wanwan
// SpiReceiveData1[SpiRcvNum++]=SPDR;
// SpiReceiveData[SpiSendNum++]=SPDR;//讀數(shù)據(jù) //SpiSendNum 需要一個(gè)初始值才行。wanwan
// SpiReceiveData[SpiSendNum++]=0x55;//test
//相應(yīng)指示
SpiMaxSend=0;//傳輸完成
SpiSending=0;
McpFisrtCmm=0;//清除標(biāo)示
}
}
}
}
#endif
// SETCS;//停止數(shù)據(jù)發(fā)送
// NOP();
// SPCR = (1<<SPE) | (0<<MSTR) | (1<<SPR0);//清零SPCR 的MSTR 位,使SPI 成為從機(jī)
// NOP();
// if (SPSR & (1<<SPIF))//串行發(fā)送結(jié)束后,SPIF置位,中斷//是為了等待串行數(shù)據(jù)發(fā)送,發(fā)送結(jié)束前始終在循環(huán),結(jié)束后跳出循環(huán),執(zhí)行后續(xù)代碼。
// {
// SpiReceiveData1[SpiRcvNum++]=SPDR;
// if(SpiRcvNum > 5)
// SpiRcvNum = 0;
//
// }
}
復(fù)制代碼
AVR mega16 MCP2510發(fā)送程序.rar
2019-3-23 12:37 上傳
點(diǎn)擊文件名下載附件
444.47 KB, 下載次數(shù): 7
作者:
yzwzfyz
時(shí)間:
2019-3-24 08:22
再細(xì)讀2510手冊(cè)。
作者:
yzwzfyz
時(shí)間:
2019-3-24 08:25
要點(diǎn)1:是弄清楚,它的128個(gè)寄存器作用分別是什么?
要點(diǎn)2:如何時(shí)正確的配制通訊波特率。
作者:
active12
時(shí)間:
2019-3-30 11:55
謝謝。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1