永发信息网

我想用mega168做一个spi通信 要是用软件模拟程序要怎么写呢 单片机为主机

答案:1  悬赏:0  手机版
解决时间 2021-01-09 03:35
我想用mega168做一个spi通信 要是用软件模拟程序要怎么写呢 单片机为主机
最佳答案
注意 spi_delay根据你从设备的速度,你可以从5开始慢慢减小,直到为0.

void SPI1_Init()
{
SPI1_Port|=((1< SPI1_DDR|=(((1< SPI1_CS_H;
SPI1_CLK_L;
spi_delay=5
}


void SPI1_Send(unsigned char data)
{
unsigned char i;
SPI1_CS_L; //拉低片选信号
SPI1_CLK_L; //时钟空闲时为低电平
SPI1_MOSI_L;
_delay_us(spi_delay);
for(i=0;i<8;i++)
{
if(data&(0x80>>i))//高位在前,低位在前改为(0x01< SPI1_MOSI_H;
else
SPI1_MOSI_L;
_delay_us(spi_delay);
SPI1_CLK_H; //在上升沿更新数据
_delay_us(spi_delay);
SPI1_CLK_L;
}
_delay_us(spi_delay);
SPI1_CS_H; //拉高片选,完成一次数据传输
}

unsigned char SPI1_Get()
{
unsigned char i;
unsigned char data=0x00;
SPI1_CS_L; //拉低片选信号
SPI1_CLK_L; //时钟空闲时为低电平
SPI1_MOSI_L;
_delay_us(spi_delay);
for(i=0;i<8;i++)
{
if(SPI1_GetMISO)
data|=(0x80>>i);
_delay_us(spi_delay);
SPI1_CLK_H; //在上升沿更新数据
_delay_us(spi_delay);
SPI1_CLK_L;
}
_delay_us(spi_delay);
SPI1_CS_H; //拉高片选,完成一次数据传输
return data;
}追问我想的是发送大约40多个16位进制数 tx[0]-- tx[44] 通过spi发送 要怎么写呢追答已经给你底层函数(SPI1_Send ,SPI1_Get)了啊 .
你只要确定是先发你16进制高位还是低位(大端或小端),这个可以从你"从设备"的datasheet里得知.
如果是高位在前,这样写->
SPI1_Send ( ( tx[0]>>8) &0xff ) );
SPI1_Send ( tx[0] &0xff );
如果是低位在前,这样写->
SPI1_Send ( tx[0] &0xff );
SPI1_Send ( ( tx[0]>>8) &0xff ) );
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
#山东天略服饰有限公司#真是无语了,别人问下
某股份有限公司委托证券公司代理发行普通股1
感觉哪个男生看起来好点??
人一天应该吃几吨饭好
一个女生唱的,歌词是,谁人没有被埋葬
杰德和suv哪个空间大
有审美好点的亲吗?路人脸和大众脸是一个意思
懂花的人能告诉我这是什么花吗?
西游记-收伏青牛怪那集如来为何不敢直接说出
疯狂猜成语2院试第11关,有八个字怎么也组不
请问。成语”千丝万缕”的释义是??
如何在旧家具上贴纸,是否有人知道?
北京今儒盛泰科技有限公司怎么样?
到黄山怎么游玩
你好,我想上您那里学习修电瓶可以吗
推荐资讯
盘子无底。是什么字谜?
小米Max按电源键结束通话的方法怎么设置
两道九年级上数学的一元二次方程的数学题,谁
去广州天河高中挂读要多少钱?
我已经向快手官方申请直播权限它也同意了,可
15岁练田径晚吗?
跪求dark side phoebe ryan 百度云盘
自从在支付宝上余额宝限购以来,在支付宝上买
电脑为什么CPU温度总在48°?
请你列举6种我国珍稀的动物
宝骏汽车按揭是干嘛的
男人喝醉来家里哭好不
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?