智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1945|回复: 2
打印 上一主题 下一主题

关于MC9S12XS单片机SPI模块的数据发送和接收

[复制链接]

2

主题

8

帖子

0

精华

注册会员

Rank: 2

积分
72
威望
52
贡献
14
兑换币
19
注册时间
2015-4-29
在线时间
3 小时
毕业学校
中国农业大学
跳转到指定楼层
1#
发表于 2015-4-30 09:26:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在有一块16位的XS128单片机,我想用它的SPI模块实现对陀螺仪的数据的接收,再通过串口SCI模块发送出来,有没有哪位大神做过相关的研究,求指教!!
这两天调试了一下程序,SPI的发送能实现,但是总是没有接收,单步调试的时候SPISR寄存器里面的SPIF总是无法置位,这是为什么呀?
跪求大侠帮忙,感激不尽!!
回复

使用道具 举报

2

主题

8

帖子

0

精华

注册会员

Rank: 2

积分
72
威望
52
贡献
14
兑换币
19
注册时间
2015-4-29
在线时间
3 小时
毕业学校
中国农业大学
2#
 楼主| 发表于 2015-4-30 14:27:00 | 只看该作者
拜托拜托!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
38
威望
22
贡献
12
兑换币
12
注册时间
2015-12-17
在线时间
2 小时
毕业学校
吉林大学
3#
发表于 2015-12-23 15:35:21 | 只看该作者
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
unsigned char jieshou;
//**********延时函数***************
void delay(int z) {
  int x,y;
    for(z;z>0;z--)
      for(x=110;x>0;x--)
        for(y=25;y>0;y--);
}
//***************spi初试化******************
void spi_int(void) {
SPI0BR=0X44;
SPI0CR1=0x5e;
}
void send_data(unsigned char data) {
while(!SPI0SR_SPTEF);
SPI0DR=data;
}
unsigned char recesive_data(void) {
while((SPI0SR&0x80)==0);
return SPI0DRL;
}
void main(void) {
  /* put your own code here */
jieshou=0;
DDRB=0XFF;
PORTB=0X00;
spi_int();

        EnableInterrupts;


  for(;;) {
    send_data(0xff);
    jieshou=recesive_data();
    PORTB=jieshou;
    delay(500);
  }
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-4 15:33 , Processed in 0.077332 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表